diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..bffb357
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": "next/core-web-vitals"
+}
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000..5c2d0ca
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,31 @@
+name: Integration Tests
+on:
+ push:
+ branches: ['main']
+ pull_request:
+ branches: ['main']
+ paths-ignore:
+ - 'README.md'
+jobs:
+ ts-tests:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Use pnpm 8
+ uses: pnpm/action-setup@v2
+ with:
+ version: 8
+ - name: Use Node.js 18.12.1
+ uses: actions/setup-node@v3
+ with:
+ node-version: '18.12.1'
+ cache: 'pnpm'
+ - name: Run linter
+ run: pnpm run lint
+ - name: Install dependencies and run wasm tests
+ run: |
+ pnpm install --no-frozen-lockfile
+ NEXT_PUBLIC_REACT_APP_ENTRY_POINT=test pnpm run build
+ env:
+ CI: false
+ NODE_ENV: development
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4055116
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,37 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env*.local
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
+
+DS_Store
\ No newline at end of file
diff --git a/README.md b/README.md
index c8473ac..f4da3c4 100644
--- a/README.md
+++ b/README.md
@@ -1,439 +1,34 @@
-![wasmwhirlwind](wasmwhirlwind.png)
+This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
-#### Getting Started
+## Getting Started
-It is useful to have a verifier on a blockchain. However, sometimes you just want to generate and verify proofs in the browser. Thankfully, ezkl supports a WASM environment that you can use to generate proofs and verify them in-browser. For those who are unfamiliar, [**here**](https://developer.mozilla.org/en-US/docs/WebAssembly/Concepts) is a good resource on WASM and [**here**](https://github.com/zkonduit/ezkl/blob/main/src/wasm.rs) you can find the functions we define for ezkl's WASM interface. Let's get started!
-
-First, we need to add the `wasm32-unknown-unknown` target to our rustup configuration. `wasm32-unknown-unknown` is is a target for creating WebAssembly binaries. The `wasm32` part represents the platform (WASM 32 bit in our case). The first `unknown` specifies the operating system we are building on. We want to build on any operating system since we're just building on browser. The second `unknown` refers to the target's standard library (Rust/C++ `std`), but with WASM, we won't be using one. We add this as a target with:
-
-```bash
-rustup target add wasm32-unknown-unknown
-```
-
-Note that you should be on Rust's nightly release channel when interacting with ezkl.
-
-Another thing we need before we get our `.wasm` file is [LLVM](https://llvm.org/). LLVM is a compiler tool that will help us use libraries that are essential for compiling our Rust ezkl code to a WASM binary fit for `wasm32-unknown-unknown`. You can get the latest release [here](https://releases.llvm.org/download.html) (especially for Windows users) or install it with a package manager:
-
-*Linux*
-
-```bash
-sudo apt install llvm
-sudo apt install clang-12
-```
-
-
-
-*Mac*: You can use Homebrew to install llvm. This library comes with `clang`, which we'll also need.
-
-```bash
-brew install --debug llvm
-export PATH=/usr/local/opt/llvm/bin:$PATH
-```
-
-
-
-After this step, make sure you have access to the `PATH` for both `clang` and `llvm`. We'll be using environment variables such as `CC=/opt/homebrew/opt/llvm/bin/clang` for the remainder of the project.
-
-Install [wasm-pack](https://rustwasm.github.io/wasm-pack/book/)
-
-```bash
-curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
-```
-
-Now, navigate to your fork or branch of `ezkl` and install the [WASM server runner](https://crates.io/crates/wasm-server-runner):
+First, run the development server:
```bash
-cargo install wasm-server-runner
+npm run dev
+# or
+yarn dev
+# or
+pnpm dev
```
-With this, we're finally able to compile our .wasm file! You can do that with this command:
-
-```bash
-AR=/opt/llvm/bin/llvm-ar CC=/opt/llvm/bin/clang wasm-pack build --target web . -- -Z build-std="panic_abort,std"
-```
-
-Make sure that you supply the correct paths for llvm-ar and clang (AR and CC). You can use `brew info llvm` on Mac or `dpkg -L llvm` for Linux.
-
-This command will generate a directory called `pkg` in our root ezkl directory. Within it, you will find these files:
-
-* .gitignore
-* ezkl_lib_bg.wasm
-* ezkl_lib_bg.wasm.d.ts
-* ezkl_lib.d.ts
-* ezkl_lib.js
-* package.json
-* README.md
-
-Remove the .gitignore file if you want to add `pkg` to your root git directory.
-
-If something goes wrong, be certain that the paths to your llvm-ar and clang libraries are correct. Also make sure wasm-pack is installed and that your .cargo/config file in ezkl looks like this:
-
-```txt
-[target.wasm32-unknown-unknown]
-runner = 'wasm-bindgen-test-runner'
-rustflags = ["-C", "target-feature=+atomics,+bulk-memory,+mutable-globals"]
-```
-
-### Creating a frontend
-
-Now that we have the wasm-pack package, we can build a simple frontend that uses its exports to prove and verify models (we would love to see projects using this in more intricate ways). Here's what we'll do step-by-step:
-
-We'll be using the `ezkl` library to pass in the **serialized circuit**(.onnx) and **runargs** to our `gen_circuit_params_wasm` function. In order to generate a serialized `runargs` file, you'll need to generate it. You can do this by adding a new Rust file to `ezkl/src/bin` (feel free to call it `genscript.rs`). Paste this code there:
-```rust
-mod genscript {
- use ezkl_lib::commands::RunArgs;
- use std::fs::File;
- use std::io::Write;
- use ezkl_lib::circuit::Tolerance;
-
- pub fn gen_run_args() {
- let run_args = RunArgs {
- tolerance: Tolerance::default(),
- scale: 7,
- bits: 16,
- logrows: 17,
- batch_size: 1,
- public_inputs: false,
- public_outputs: true,
- public_params: false,
- pack_base: 1,
- allocated_constraints: Some(1000), // assuming an arbitrary value here for the sake of the example
- };
-
-
- let serialized_run_args =
- bincode::serialize(&run_args).expect("Failed to serialize RunArgs");
-
-
- // Write the serialized runargs to a file.
- let mut rafile = File::create("run_args.params").expect("Failed to create file");
- rafile
- .write_all(&serialized_run_args)
- .expect("Failed to write data to file");
- }
- }
-
-
- fn main() {
- genscript::gen_run_args();
- }
-
-
-```
-From here, feel free to change the RunArgs as you please to make the best SNARK for your circuit. These are the arguments you see [here](https://docs.ezkl.xyz/command_line_interface/). After you run the main function with `cargo run --bin genscript`, you will have a file called `run_args.params`. You can use this as the second parameter for `gen_circuit_params_wasm`.
-
-We will use the `circuit` file generated in this step to pass to our `gen_pk_wasm` function along with our **commitment scheme parameters** (kzg.params) and **serialized circuit**.
-
-After this gives us our `pk.key` file, we will use that along with the **input data**(.json), **the serialized circuit**, **the serialized circuit parameters**, and our **commitment scheme paramenters** to trigger our `prove_wasm` function.
-
-When the `network.proof` file is created here, we will pass that along with the **verify key** and **serialized circuit parameters** to our `verify_wasm` function. It is important to note that you will have a lot of this information after you create a circuit with `ezkl`. Feel free to store them in your project (perhaps .gitignore-ing them). Now that we know what will happen, let's begin with the frontend.
-
-1) Make a new directory for your project.
-2) copy your new `pkg` directory into the project
-3) create an index.html and paste this code in:
-
-```bash
-
-
-
-
-
-
-
-
-
-
-
Generate Circuit Params
-
Circuit (.onnx):
-
-
Run Args:
-
-
Generate Circuit Params
-
Result:
-
-
-
-
Generate Proving Key
-
Circuit (.onnx):
-
-
KZG Params:
-
-
Circuit params:
-
-
Generate
-
Result:
-
-
-
Generate Verifying Key
-
Proving Key:
-
-
Circuit params:
-
-
Generate Verifying Key
-
Result:
-
-
-
Prove
-
-
Input Data:
-
-
Proving key:
-
-
Circuit (.onnx):
-
-
Circuit params:
-
-
KZG params:
-
-
-
Prove
-
Result:
-
-
-
-
-
Verify
-
-
Proof (network.proof):
-
-
Verifying key:
-
-
Circuit params:
-
-
KZG params:
-
-
-
Verify
-
Result:
-
-
-
-
-
-
-
-```
-4) This script generates a simple HTML frontend with fields to pass in files for our input fields (we'll upload them from our ezkl directory). It also calls the `ezkl_lib.js` folder in our pkg to fetch the exported `prove_wasm`, `verify_wasm`, `gen_circuit_params_wasm`, `gen_pk_wasm`, and `gen_vk_wasm` functions.
-
-5) Run a simple http server such as python3's:
-
- ```
- python3 -m http.server
- ```
-
-6) Finally, upload the corresponding files to each parameter.
-
-The ordering for `Generate Circuit Params` is:
- * `circuit_ser`: circuit (network.onnx)
- * `RunArgs`: RunArgs generated earlier in the tutorial
-
-The ordering for `Generate Proving Key` is:
- * `circuit_ser`: circuit (network.onnx)
- * `params_ser`: commitment scheme parameters (kzg.params)
- * `circuit_params_ser`: circuit parameters (circuit file generated from the last step)
-
-The ordering for `Generate Verifying Key` is:
- * `pk`: proving key (pk.key)
- * `circuit_params_ser`: circuit parameters (circuit)
+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
-The ordering for `Prove` (from left to right) is:
- * `data`: input data (input.json)
- * `pk`: proving key (pk.key)
- * `circuit_ser`: circuit (network.onnx)
- * `circuit_params_ser`: circuit parameters (circuit)
- * `params_ser`: commitment scheme parameters (kzg.params)
+You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
-This will prompt you to download a file called `network.proof`. `network.proof` is a binary file of the generated proof. Note that this step may take time. After `network.proof` has been downloaded, upload the file to the first value of the `Verify` function.
+This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
-The ordering for `Verify` (from left to right) is:
+## Learn More
- * `proof_js`: proof (network.proof)
- * `vk`: verifier key (vk.key)
- * `circuit_params_ser`: circuit parameters (circuit)
- * `params_ser`: commitment scheme parameters (kzg.params)
+To learn more about Next.js, take a look at the following resources:
- `True` or `False` should appear as the result for the Verify function.
+- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
+- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
-At the end of the interaction, your screen should look something like:
+You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
-![verification](verification.png)
+## Deploy on Vercel
+The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
-And thus, we have a WASM prover and verifier that you can use for your zkml project without having to worry about the blockchain! Feel free to check out the [source code](https://github.com/lancenonce/wasm-tutorial-web) and build your own zkml applications with this simple interface. Thank you for reading and thank you for using ezkl.
\ No newline at end of file
+Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
diff --git a/app/App.tsx b/app/App.tsx
new file mode 100644
index 0000000..b9209c4
--- /dev/null
+++ b/app/App.tsx
@@ -0,0 +1,82 @@
+'use client'
+import React, { useEffect, useState } from 'react'
+
+import init from '../pkg/ezkl'
+
+import ElgamalRandomVar from './components/ElgamalRandomVar'
+import ElgamalEncrypt from './components/ElgamalEncrypt'
+import ElgamalDecrypt from './components/ElgamalDecrypt'
+import GenProof from './components/GenProof'
+import Verify from './components/Verify'
+import Hash from './components/Hash'
+
+interface Files {
+ [key: string]: File | null
+}
+
+export default function Home() {
+ const [files, setFiles] = useState({})
+
+ useEffect(() => {
+ async function run() {
+ // Initialize the WASM module
+ await init()
+ }
+ run()
+ })
+
+ const handleFileChange = (event: React.ChangeEvent) => {
+ const id = event.target.id
+ const file = event.target.files?.item(0) || null
+ setFiles((prevFiles) => ({ ...prevFiles, [id]: file }))
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/app/Utils.tsx b/app/Utils.tsx
new file mode 100644
index 0000000..d2cf5cc
--- /dev/null
+++ b/app/Utils.tsx
@@ -0,0 +1,225 @@
+import { useEffect, useRef } from 'react'
+import {
+ elgamalGenRandom,
+ elgamalEncrypt,
+ elgamalDecrypt,
+ prove,
+ poseidonHash,
+ verify
+} from '../pkg/ezkl.js'
+import JSZip from 'jszip'
+import { saveAs } from 'file-saver'
+import JSONBig from 'json-bigint'
+
+export function readUploadedFileAsBuffer(file: File) {
+ return new Promise((resolve, reject) => {
+ const reader = new FileReader()
+
+ reader.onload = (event) => {
+ if (event.target && event.target.result instanceof ArrayBuffer) {
+ resolve(new Uint8ClampedArray(event.target.result))
+ } else {
+ reject(new Error('Failed to read file'))
+ }
+ }
+
+ reader.onerror = (error) => {
+ reject(new Error('File could not be read: ' + error))
+ }
+ reader.readAsArrayBuffer(file)
+ })
+}
+
+interface FileDownloadProps {
+ fileName: string
+ buffer: Uint8Array | null
+ handleDownloadCompleted: () => void
+}
+
+export function FileDownload({
+ fileName,
+ buffer,
+ handleDownloadCompleted,
+}: FileDownloadProps) {
+ const linkRef = useRef(null)
+
+ useEffect(() => {
+ if (!buffer) {
+ return
+ }
+
+ const blob = new Blob([buffer], { type: 'application/octet-stream' })
+ const reader = new FileReader()
+
+ // Convert the Blob to a Data URL
+ reader.readAsDataURL(blob)
+
+ reader.onloadend = () => {
+ const base64data = reader.result
+
+ // Use the fetch API to download the file
+ fetch(base64data as string)
+ .then((res) => res.blob())
+ .then((blob) => {
+ const url = URL.createObjectURL(blob)
+
+ if (linkRef.current) {
+ linkRef.current.href = url
+ linkRef.current.download = fileName
+ linkRef.current.click()
+
+ // Cleanup
+ URL.revokeObjectURL(url)
+
+ // Notify the parent component that the download operation is complete
+ handleDownloadCompleted()
+ }
+ })
+ }
+ }, [buffer, fileName, handleDownloadCompleted])
+
+ return
+}
+
+export function ElgamalZipFileDownload({
+ fileName,
+ buffer,
+ handleDownloadCompleted,
+}: FileDownloadProps) {
+ const linkRef = useRef(null)
+
+ useEffect(() => {
+ if (!buffer) {
+ return
+ }
+
+ const blob = new Blob([buffer], { type: 'application/octet-stream' })
+ const reader = new FileReader()
+
+ reader.onloadend = async () => {
+ const base64data = reader.result
+
+ if (typeof base64data === 'string') {
+ const elgamalVar = JSONBig.parse(atob(base64data.split(',')[1]))
+
+ // Create a new Zip file
+ var zip = new JSZip()
+ zip.file('pk.txt', JSONBig.stringify(elgamalVar.pk))
+ zip.file('r.txt', JSONBig.stringify(elgamalVar.r))
+ zip.file('sk.txt', JSONBig.stringify(elgamalVar.sk))
+
+ // Generate the zip file asynchronously
+ const content = await zip.generateAsync({type:"blob"})
+
+ saveAs(content, fileName)
+
+ // Notify the parent component that the download operation is complete
+ handleDownloadCompleted()
+ }
+ }
+
+ // Convert the Blob to a Data URL
+ reader.readAsDataURL(blob)
+ }, [buffer, fileName, handleDownloadCompleted])
+
+ return
+}
+
+type FileMapping = {
+ [key: string]: File
+}
+
+type FileSerMapping = {
+ [key: string]: Uint8ClampedArray
+}
+
+async function convertFilesToFilesSer(
+ files: T,
+): Promise {
+ const fileReadPromises = Object.entries(files).map(async ([key, file]) => {
+ const fileContent = await readUploadedFileAsBuffer(file)
+ return { key, fileContent }
+ })
+
+ const fileContents = await Promise.all(fileReadPromises)
+
+ const filesSer: FileSerMapping = {}
+ for (const { key, fileContent } of fileContents) {
+ filesSer[key] = fileContent
+ }
+
+ return filesSer
+}
+
+
+export async function handleGenProofButton(
+ files: T,
+): Promise {
+ const result = await convertFilesToFilesSer(files)
+ return prove(
+ result['data'],
+ result['pk'],
+ result['model'],
+ result['circuitSettings'],
+ result['srs'],
+ )
+}
+
+export function handleGenREVButton(): Uint8Array {
+ const seed = generate256BitSeed()
+ return elgamalGenRandom(seed)
+}
+
+export async function handleGenElgamalEncryptionButton(
+ files: T,
+): Promise {
+ const result = await convertFilesToFilesSer(files)
+
+ return elgamalEncrypt(
+ result['pk'],
+ result['message'],
+ result['r']
+ )
+}
+
+export async function handleGenElgamalDecryptionButton(
+ files: T,
+): Promise {
+ const result = await convertFilesToFilesSer(files)
+ return elgamalDecrypt(
+ result['cipher'],
+ result['sk']
+ )
+}
+
+
+export async function handleGenHashButton(message: File): Promise {
+ const message_hash = await readUploadedFileAsBuffer(message)
+ return poseidonHash(message_hash)
+}
+
+export async function handleVerifyButton(
+ files: T,
+): Promise {
+ const result = await convertFilesToFilesSer(files)
+ return verify(
+ result['proof'],
+ result['vk'],
+ result['circuitSettings'],
+ result['srs'],
+ )
+}
+
+function stringToUint8Array(str: string): Uint8Array {
+ const encoder = new TextEncoder();
+ const uint8Array = encoder.encode(str);
+ return uint8Array;
+}
+
+function generate256BitSeed(): Uint8ClampedArray {
+ const uuid = self.crypto.randomUUID();
+ const buffer = stringToUint8Array(uuid);
+ let seed = self.crypto.getRandomValues(buffer);
+ seed = seed.slice(0, 32);
+ return new Uint8ClampedArray(seed.buffer);
+}
diff --git a/app/components/ElgamalDecrypt.tsx b/app/components/ElgamalDecrypt.tsx
new file mode 100644
index 0000000..1ee62fc
--- /dev/null
+++ b/app/components/ElgamalDecrypt.tsx
@@ -0,0 +1,65 @@
+import { useState, ChangeEvent } from 'react'
+import { handleGenElgamalDecryptionButton, FileDownload } from '../Utils'
+
+interface ElgamalDecryptionProps {
+ files: {
+ cipher: File | null,
+ sk: File | null
+ }
+ handleFileChange: (event: ChangeEvent) => void
+}
+
+export default function ElgamalDecryption({ files, handleFileChange }: ElgamalDecryptionProps) {
+ const [buffer, setBuffer] = useState(null)
+ const [decryptionResult, setDecryptionResult] = useState(null)
+
+ return (
+
+
Generate Elgamal Decryption
+
Cipher:
+
+
Secret Key:
+
+
{
+ if (Object.values(files).every((file) => file instanceof File)) {
+ const result = await handleGenElgamalDecryptionButton(
+ files as { [key: string]: File },
+ )
+ setBuffer(result)
+ setDecryptionResult(
+ result
+ ? 'Cipher decryption successful'
+ : 'Cipher decryption failed',
+ )
+ }
+ }}
+ disabled={!Object.values(files).every((file) => file instanceof File)}
+ >
+ Generate
+
+ {buffer && (
+
+ )}
+
Result:
+
{decryptionResult}
+
+ )
+}
diff --git a/app/components/ElgamalEncrypt.tsx b/app/components/ElgamalEncrypt.tsx
new file mode 100644
index 0000000..9976f2e
--- /dev/null
+++ b/app/components/ElgamalEncrypt.tsx
@@ -0,0 +1,73 @@
+import { useState, ChangeEvent } from 'react'
+import { handleGenElgamalEncryptionButton, FileDownload } from '../Utils'
+
+interface ElgamalEncryptionProps {
+ files: {
+ pk: File | null,
+ message: File | null,
+ r: File | null
+ }
+ handleFileChange: (event: ChangeEvent) => void
+}
+
+export default function ElgamalEncryption({ files, handleFileChange }: ElgamalEncryptionProps) {
+ const [buffer, setBuffer] = useState(null)
+ const [encryptionResult, setEncryptionResult] = useState(null)
+
+ return (
+
+
Generate Elgamal Encryption
+
Public Key:
+
+
Message:
+
+
Encryption Randomness:
+
+
{
+ if (Object.values(files).every((file) => file instanceof File)) {
+ const result = await handleGenElgamalEncryptionButton(
+ files as { [key: string]: File },
+ )
+ setBuffer(result)
+ setEncryptionResult(
+ result
+ ? 'Cipher generation successful'
+ : 'Cipher generation failed',
+ )
+ }
+ }}
+ disabled={!Object.values(files).every((file) => file instanceof File)}
+ >
+ Generate
+
+ {buffer && (
+
+ )}
+
Result:
+
{encryptionResult}
+
+ )
+}
diff --git a/app/components/ElgamalRandomVar.tsx b/app/components/ElgamalRandomVar.tsx
new file mode 100644
index 0000000..d3e2feb
--- /dev/null
+++ b/app/components/ElgamalRandomVar.tsx
@@ -0,0 +1,35 @@
+import { useState } from 'react'
+import { handleGenREVButton, ElgamalZipFileDownload } from '../Utils'
+
+
+export default function ElgamalRandomVar() {
+ const [buffer, setBuffer] = useState(null)
+ const [revResult, setREVResult] = useState(null)
+
+ return (
+
+
Generate Elgamal Variable
+
{
+ const result = handleGenREVButton()
+ setBuffer(result)
+ setREVResult(result ? 'Random Elgamal Variable Generation Successful' : 'Random Elgamal Variable Generation Failed')
+ }}
+ >
+ Generate
+
+ {buffer && (
+
+ )}
+
Result:
+
{revResult}
+
+ )
+}
diff --git a/app/components/GenProof.tsx b/app/components/GenProof.tsx
new file mode 100644
index 0000000..ef4d32a
--- /dev/null
+++ b/app/components/GenProof.tsx
@@ -0,0 +1,88 @@
+import { useState, ChangeEvent } from 'react'
+import { handleGenProofButton, FileDownload } from '../Utils'
+
+interface GenProofProps {
+ files: {
+ data: File | null
+ pk: File | null
+ model: File | null
+ circuitSettings: File | null
+ srs: File | null
+ }
+ handleFileChange: (event: ChangeEvent) => void
+}
+
+export default function GenProof({ files, handleFileChange }: GenProofProps) {
+ const [proofResult, setProofResult] = useState('')
+ const [buffer, setBuffer] = useState(null)
+ return (
+
+
Prove
+
Input Data:
+
+
Proving key:
+
+
Model (.onnx):
+
+
Circuit settings:
+
+
SRS:
+
+
{
+ if (Object.values(files).every((file) => file instanceof File)) {
+ const result = await handleGenProofButton(
+ files as { [key: string]: File },
+ )
+ setBuffer(result)
+ setProofResult(
+ result
+ ? 'Proof generation successful'
+ : 'Proof generation failed',
+ )
+ }
+ }}
+ disabled={!Object.values(files).every((file) => file instanceof File)}
+ >
+ Prove
+
+ {buffer && (
+
+ )}
+
Result:
+
{proofResult}
+
+ )
+}
diff --git a/app/components/Hash.tsx b/app/components/Hash.tsx
new file mode 100644
index 0000000..676376c
--- /dev/null
+++ b/app/components/Hash.tsx
@@ -0,0 +1,47 @@
+import { useState, ChangeEvent } from 'react'
+import { handleGenHashButton, FileDownload } from '../Utils'
+
+interface HashProps {
+ message: File | null
+ handleFileChange: (event: ChangeEvent) => void
+}
+
+export default function Hash({ message, handleFileChange }: HashProps) {
+ const [buffer, setBuffer] = useState(null)
+ const [hashResult, setHashResult] = useState(null)
+
+ return (
+
+
Generate Hash
+
Message:
+
+
{
+ const result = await handleGenHashButton(message as File) // 'as' cast should be safe b/c of disabled button
+ setBuffer(result)
+ setHashResult(result ? `Hash: ${result}` : 'Hash Generation failed')
+ }}
+ disabled={!message}
+ >
+ Generate
+
+ {buffer && (
+
+ )}
+
Result:
+
{hashResult}
+
+ )
+}
diff --git a/app/components/Verify.tsx b/app/components/Verify.tsx
new file mode 100644
index 0000000..5d29f0a
--- /dev/null
+++ b/app/components/Verify.tsx
@@ -0,0 +1,61 @@
+import { useState, ChangeEvent } from 'react'
+import { handleVerifyButton } from '../Utils'
+
+interface VerifyProps {
+ files: {
+ proof: File | null
+ vk: File | null
+ circuitSettings: File | null
+ srs: File | null
+ }
+ handleFileChange: (event: ChangeEvent) => void
+}
+
+export default function Verify({ files, handleFileChange }: VerifyProps) {
+ const [verifyResult, setVerifyResult] = useState('')
+
+ return (
+
+
Verify
+
Proof:
+
+
Verification key:
+
+
Circuit settings:
+
+
SRS:
+
+
{
+ if (Object.values(files).every((file) => file instanceof File)) {
+ const result = await handleVerifyButton(
+ files as { [key: string]: File },
+ )
+ setVerifyResult(result ? 'True' : 'False')
+ }
+ }}
+ disabled={!Object.values(files).every((file) => file instanceof File)}
+ >
+ Verify
+
+
Result:
+
{verifyResult}
+
+ )
+}
diff --git a/app/favicon.ico b/app/favicon.ico
new file mode 100644
index 0000000..718d6fe
Binary files /dev/null and b/app/favicon.ico differ
diff --git a/app/globals.css b/app/globals.css
new file mode 100644
index 0000000..fd81e88
--- /dev/null
+++ b/app/globals.css
@@ -0,0 +1,27 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+:root {
+ --foreground-rgb: 0, 0, 0;
+ --background-start-rgb: 214, 219, 220;
+ --background-end-rgb: 255, 255, 255;
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ --foreground-rgb: 255, 255, 255;
+ --background-start-rgb: 0, 0, 0;
+ --background-end-rgb: 0, 0, 0;
+ }
+}
+
+body {
+ color: rgb(var(--foreground-rgb));
+ background: linear-gradient(
+ to bottom,
+ transparent,
+ rgb(var(--background-end-rgb))
+ )
+ rgb(var(--background-start-rgb));
+}
diff --git a/app/layout.tsx b/app/layout.tsx
new file mode 100644
index 0000000..7d5bda9
--- /dev/null
+++ b/app/layout.tsx
@@ -0,0 +1,16 @@
+export const metadata = {
+ title: 'Next.js',
+ description: 'Generated by Next.js',
+}
+
+export default function RootLayout({
+ children,
+}: {
+ children: React.ReactNode
+}) {
+ return (
+
+ {children}
+
+ )
+}
diff --git a/app/page.tsx b/app/page.tsx
new file mode 100644
index 0000000..d4fe085
--- /dev/null
+++ b/app/page.tsx
@@ -0,0 +1,14 @@
+'use client'
+import dynamic from 'next/dynamic'
+import React from 'react'
+
+const App = dynamic(() => import('./App'), { ssr: false })
+const TestScript = dynamic(() => import('./WASMTests'), { ssr: false }) // Assuming this component uses browser-only APIs
+
+function Home() {
+ const isTest = process.env.NEXT_PUBLIC_REACT_APP_ENTRY_POINT === 'test'
+
+ return {isTest ? : }
+}
+
+export default Home
diff --git a/index.html b/index.html
deleted file mode 100644
index 6745337..0000000
--- a/index.html
+++ /dev/null
@@ -1,255 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
Generate Circuit Params
-
Circuit (.onnx):
-
-
Run Args:
-
-
Generate Circuit Params
-
Result:
-
-
-
-
Generate Proving Key
-
Circuit (.onnx):
-
-
KZG Params:
-
-
Circuit params:
-
-
Generate
-
Result:
-
-
-
Generate Verifying Key
-
Proving Key:
-
-
Circuit params:
-
-
Generate Verifying Key
-
Result:
-
-
-
Prove
-
-
Input Data:
-
-
Proving key:
-
-
Circuit (.onnx):
-
-
Circuit params:
-
-
KZG params:
-
-
-
Prove
-
Result:
-
-
-
-
-
Verify
-
-
Proof (network.proof):
-
-
Verifying key:
-
-
Circuit params:
-
-
KZG params:
-
-
-
Verify
-
Result:
-
-
-
-
-
-
\ No newline at end of file
diff --git a/next.config.js b/next.config.js
new file mode 100644
index 0000000..767719f
--- /dev/null
+++ b/next.config.js
@@ -0,0 +1,4 @@
+/** @type {import('next').NextConfig} */
+const nextConfig = {}
+
+module.exports = nextConfig
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..870f947
--- /dev/null
+++ b/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "wasm-test-app",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint"
+ },
+ "dependencies": {
+ "@types/file-saver": "^2.0.5",
+ "@types/json-bigint": "^1.0.1",
+ "@types/node": "20.4.5",
+ "@types/react": "18.2.18",
+ "@types/react-dom": "18.2.7",
+ "autoprefixer": "10.4.14",
+ "eslint": "8.46.0",
+ "eslint-config-next": "13.4.12",
+ "file-saver": "^2.0.5",
+ "json-bigint": "^1.0.0",
+ "jszip": "^3.10.1",
+ "next": "13.4.12",
+ "postcss": "8.4.27",
+ "react": "18.2.0",
+ "react-dom": "18.2.0",
+ "tailwindcss": "3.3.3",
+ "typescript": "5.1.6"
+ }
+}
diff --git a/pkg/.gitignore b/pkg/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/pkg/README.md b/pkg/README.md
index 896e7d1..3265fb2 100644
--- a/pkg/README.md
+++ b/pkg/README.md
@@ -18,6 +18,7 @@ EZKL
1. Define a computational graph, for instance a neural network (but really any arbitrary set of operations), as you would normally in pytorch or tensorflow.
2. Export the final graph of operations as an [.onnx](https://onnx.ai/) file and some sample inputs to a `.json` file.
3. Point `ezkl` to the `.onnx` and `.json` files to generate a ZK-SNARK circuit with which you can prove statements such as:
+
> "I ran this publicly available neural network on some private data and it produced this output"
> "I ran my private neural network on some public data and it produced this output"
@@ -26,14 +27,32 @@ EZKL
In the backend we use [Halo2](https://github.com/privacy-scaling-explorations/halo2) as a proof system.
+The generated proofs can then be used on-chain to verify computation, only the Ethereum Virtual Machine (EVM) is supported at the moment.
+
+
+- If you have any questions, we'd love for you to open up a discussion topic in [Discussions](https://github.com/zkonduit/ezkl/discussions). Alternatively, you can join the ✨[EZKL Community Telegram Group](https://t.me/+QRzaRvTPIthlYWMx)💫.
+
+
### resources 📖
| | |
| --- | --- |
| [docs](https://docs.ezkl.xyz ) | the official ezkl docs page |
-| [tutorial](https://github.com/zkonduit/pyezkl/tree/main/examples/tutorial) | end-to-end tutorial using pytorch and ezkl |
-| [notebook](https://github.com/zkonduit/pyezkl/blob/main/examples/ezkl_demo.ipynb) | end-to-end tutorial using pytorch and ezkl in a jupyter notebook |
-| `cargo doc --open` | compile and open the docs in your default browser |
+| `cargo doc --open` | compile and open the docs in your default browser locally |
+| [![Simple Example](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/zkonduit/ezkl/blob/master/examples/notebooks/simple_demo.ipynb)| a simple demo of the python bindings in action on Colab |
+
+----------------------
+
+You can find a range of python based tutorials in the `examples/notebooks` section. These all assume you have the `ezkl` python library installed. If you want the bleeding edge version of the library, you can install it from the `main` branch with:
+
+```bash
+python -m venv .env
+source .env/bin/activate
+pip install -r requirements.txt
+maturin develop --release --features python-bindings
+# dependencies specific to tutorials
+pip install torch pandas numpy seaborn jupyter onnx kaggle py-solc-x web3 librosa tensorflow keras tf2onnx
+```
----------------------
@@ -42,7 +61,6 @@ In the backend we use [Halo2](https://github.com/privacy-scaling-explorations/ha
-
https://user-images.githubusercontent.com/45801863/236771676-5bbbbfd1-ba6f-418a-902e-20738ce0e9f0.mp4
@@ -50,7 +68,8 @@ https://user-images.githubusercontent.com/45801863/236771676-5bbbbfd1-ba6f-418a-
Note that the library requires a nightly version of the rust toolchain. You can change the default toolchain by running:
```bash
-rustup override set nightly
+# we set it to this version because of https://github.com/rust-lang/rust/issues/110829
+rustup override set nightly-2023-04-17
```
After which you may build the library
@@ -86,15 +105,8 @@ The EZKL project has several libraries and repos.
| Repo | Description |
| --- | --- |
-| [@zkonduit/ezkl](https://github.com/zkonduit/ezkl) | the main ezkl repo in rust |
-| [@zkonduit/pyezkl](https://github.com/zkonduit/pyezkl) | helper functions in python for processing onnx files |
-| [@zkonduit/ezkl-docs](https://github.com/zkonduit/ezkl-docs) | official ezkl docs |
-
-
-
-
-
-
+| [@zkonduit/ezkl](https://github.com/zkonduit/ezkl) | the main ezkl repo in rust with wasm and python bindings |
+| [@zkonduit/pyezkl](https://github.com/zkonduit/pyezkl) | additional functionality written in python to support data science and zero knowledge applications |
----------------------
@@ -107,11 +119,16 @@ If you're interested in contributing and are unsure where to start, reach out to
More broadly:
-- Feel free to open up a discussion topic in [Discussions](https://github.com/zkonduit/ezkl/discussions) to ask questions. Alternatively, you may join the [EZKL Community Telegram Group](https://t.me/+76OjHb5CwJtkMTBh) to ask questions.
-
- See currently open issues for ideas on how to contribute.
- For PRs we use the [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) naming convention.
- To report bugs or request new features [create a new issue within Issues](https://github.com/zkonduit/ezkl/issues) to inform the greater community.
+
+Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed to Zkonduit Inc. under the terms and conditions specified in the [CLA](https://github.com/zkonduit/ezkl/blob/main/cla.md), which you agree to by intentionally submitting a contribution. In particular, you have the right to submit the contribution and we can distribute it under the Apache 2.0 license, among other terms and conditions.
+
+## No security guarantees
+
+Ezkl is unaudited, beta software undergoing rapid development. There may be bugs. No guarantees of security are made and it should not be relied on in production.
+
diff --git a/pkg/ezkl_lib.d.ts b/pkg/ezkl.d.ts
similarity index 50%
rename from pkg/ezkl_lib.d.ts
rename to pkg/ezkl.d.ts
index 11b25c2..ff54a1e 100644
--- a/pkg/ezkl_lib.d.ts
+++ b/pkg/ezkl.d.ts
@@ -5,46 +5,52 @@
*/
export function init_panic_hook(): void;
/**
-* Generate circuit params in browser
-* @param {Uint8ClampedArray} circuit_ser
-* @param {Uint8ClampedArray} run_args_ser
+* Generate a poseidon hash in browser. Input message
+* @param {Uint8ClampedArray} message
* @returns {Uint8Array}
*/
-export function gen_circuit_params_wasm(circuit_ser: Uint8ClampedArray, run_args_ser: Uint8ClampedArray): Uint8Array;
+export function poseidonHash(message: Uint8ClampedArray): Uint8Array;
/**
-* Generate proving key in browser
-* @param {Uint8ClampedArray} circuit_ser
-* @param {Uint8ClampedArray} params_ser
-* @param {Uint8ClampedArray} circuit_params_ser
+* Generates random elgamal variables from a random seed value in browser.
+* Make sure input seed comes a secure source of randomness
+* @param {Uint8ClampedArray} rng
* @returns {Uint8Array}
*/
-export function gen_pk_wasm(circuit_ser: Uint8ClampedArray, params_ser: Uint8ClampedArray, circuit_params_ser: Uint8ClampedArray): Uint8Array;
+export function elgamalGenRandom(rng: Uint8ClampedArray): Uint8Array;
/**
-* Generate verifying key in browser
+* Encrypt using elgamal in browser. Input message
* @param {Uint8ClampedArray} pk
-* @param {Uint8ClampedArray} circuit_params_ser
+* @param {Uint8ClampedArray} message
+* @param {Uint8ClampedArray} r
+* @returns {Uint8Array}
+*/
+export function elgamalEncrypt(pk: Uint8ClampedArray, message: Uint8ClampedArray, r: Uint8ClampedArray): Uint8Array;
+/**
+* Decrypt using elgamal in browser. Input message
+* @param {Uint8ClampedArray} cipher
+* @param {Uint8ClampedArray} sk
* @returns {Uint8Array}
*/
-export function gen_vk_wasm(pk: Uint8ClampedArray, circuit_params_ser: Uint8ClampedArray): Uint8Array;
+export function elgamalDecrypt(cipher: Uint8ClampedArray, sk: Uint8ClampedArray): Uint8Array;
/**
* Verify proof in browser using wasm
* @param {Uint8ClampedArray} proof_js
* @param {Uint8ClampedArray} vk
-* @param {Uint8ClampedArray} circuit_params_ser
+* @param {Uint8ClampedArray} circuit_settings_ser
* @param {Uint8ClampedArray} params_ser
* @returns {boolean}
*/
-export function verify_wasm(proof_js: Uint8ClampedArray, vk: Uint8ClampedArray, circuit_params_ser: Uint8ClampedArray, params_ser: Uint8ClampedArray): boolean;
+export function verify(proof_js: Uint8ClampedArray, vk: Uint8ClampedArray, circuit_settings_ser: Uint8ClampedArray, params_ser: Uint8ClampedArray): boolean;
/**
-* Prove proof in browser using wasm
-* @param {Uint8ClampedArray} data
+* Prove in browser using wasm
+* @param {Uint8ClampedArray} witness
* @param {Uint8ClampedArray} pk
* @param {Uint8ClampedArray} circuit_ser
-* @param {Uint8ClampedArray} circuit_params_ser
+* @param {Uint8ClampedArray} circuit_settings_ser
* @param {Uint8ClampedArray} params_ser
* @returns {Uint8Array}
*/
-export function prove_wasm(data: Uint8ClampedArray, pk: Uint8ClampedArray, circuit_ser: Uint8ClampedArray, circuit_params_ser: Uint8ClampedArray, params_ser: Uint8ClampedArray): Uint8Array;
+export function prove(witness: Uint8ClampedArray, pk: Uint8ClampedArray, circuit_ser: Uint8ClampedArray, circuit_settings_ser: Uint8ClampedArray, params_ser: Uint8ClampedArray): Uint8Array;
/**
* @param {number} num_threads
* @returns {Promise}
@@ -74,11 +80,12 @@ export class wbg_rayon_PoolBuilder {
export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
export interface InitOutput {
- readonly gen_circuit_params_wasm: (a: number, b: number, c: number, d: number, e: number) => void;
- readonly gen_pk_wasm: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
- readonly gen_vk_wasm: (a: number, b: number, c: number, d: number, e: number) => void;
- readonly verify_wasm: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
- readonly prove_wasm: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => void;
+ readonly poseidonHash: (a: number, b: number, c: number) => void;
+ readonly elgamalGenRandom: (a: number, b: number, c: number) => void;
+ readonly elgamalEncrypt: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
+ readonly elgamalDecrypt: (a: number, b: number, c: number, d: number, e: number) => void;
+ readonly verify: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
+ readonly prove: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => void;
readonly init_panic_hook: () => void;
readonly __wbg_wbg_rayon_poolbuilder_free: (a: number) => void;
readonly wbg_rayon_poolbuilder_numThreads: (a: number) => number;
@@ -86,15 +93,15 @@ export interface InitOutput {
readonly wbg_rayon_poolbuilder_build: (a: number) => void;
readonly wbg_rayon_start_worker: (a: number) => void;
readonly initThreadPool: (a: number) => number;
- readonly rustsecp256k1_v0_6_1_context_create: (a: number) => number;
- readonly rustsecp256k1_v0_6_1_context_destroy: (a: number) => void;
- readonly rustsecp256k1_v0_6_1_default_illegal_callback_fn: (a: number, b: number) => void;
- readonly rustsecp256k1_v0_6_1_default_error_callback_fn: (a: number, b: number) => void;
+ readonly rustsecp256k1_v0_8_1_context_create: (a: number) => number;
+ readonly rustsecp256k1_v0_8_1_context_destroy: (a: number) => void;
+ readonly rustsecp256k1_v0_8_1_default_illegal_callback_fn: (a: number, b: number) => void;
+ readonly rustsecp256k1_v0_8_1_default_error_callback_fn: (a: number, b: number) => void;
readonly memory: WebAssembly.Memory;
readonly __wbindgen_add_to_stack_pointer: (a: number) => number;
- readonly __wbindgen_malloc: (a: number) => number;
- readonly __wbindgen_free: (a: number, b: number) => void;
- readonly __wbindgen_realloc: (a: number, b: number, c: number) => number;
+ readonly __wbindgen_malloc: (a: number, b: number) => number;
+ readonly __wbindgen_free: (a: number, b: number, c: number) => void;
+ readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
readonly __wbindgen_exn_store: (a: number) => void;
readonly __wbindgen_thread_destroy: (a: number, b: number) => void;
readonly __wbindgen_start: () => void;
@@ -121,4 +128,4 @@ export function initSync(module: SyncInitInput, maybe_memory?: WebAssembly.Memor
*
* @returns {Promise}
*/
-export default function init (module_or_path?: InitInput | Promise, maybe_memory?: WebAssembly.Memory): Promise;
+export default function __wbg_init (module_or_path?: InitInput | Promise, maybe_memory?: WebAssembly.Memory): Promise;
diff --git a/pkg/ezkl_lib.js b/pkg/ezkl.js
similarity index 66%
rename from pkg/ezkl_lib.js
rename to pkg/ezkl.js
index c5479be..0bc06a0 100644
--- a/pkg/ezkl_lib.js
+++ b/pkg/ezkl.js
@@ -22,9 +22,9 @@ function takeObject(idx) {
return ret;
}
-const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
+const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );
-cachedTextDecoder.decode();
+if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };
let cachedUint8Memory0 = null;
@@ -36,6 +36,7 @@ function getUint8Memory0() {
}
function getStringFromWasm0(ptr, len) {
+ ptr = ptr >>> 0;
return cachedTextDecoder.decode(getUint8Memory0().slice(ptr, ptr + len));
}
@@ -57,7 +58,7 @@ export function init_panic_hook() {
let WASM_VECTOR_LEN = 0;
function passArray8ToWasm0(arg, malloc) {
- const ptr = malloc(arg.length * 1);
+ const ptr = malloc(arg.length * 1, 1) >>> 0;
getUint8Memory0().set(arg, ptr / 1);
WASM_VECTOR_LEN = arg.length;
return ptr;
@@ -73,22 +74,20 @@ function getInt32Memory0() {
}
function getArrayU8FromWasm0(ptr, len) {
+ ptr = ptr >>> 0;
return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);
}
/**
-* Generate circuit params in browser
-* @param {Uint8ClampedArray} circuit_ser
-* @param {Uint8ClampedArray} run_args_ser
+* Generate a poseidon hash in browser. Input message
+* @param {Uint8ClampedArray} message
* @returns {Uint8Array}
*/
-export function gen_circuit_params_wasm(circuit_ser, run_args_ser) {
+export function poseidonHash(message) {
try {
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
- const ptr0 = passArray8ToWasm0(circuit_ser, wasm.__wbindgen_malloc);
+ const ptr0 = passArray8ToWasm0(message, wasm.__wbindgen_malloc);
const len0 = WASM_VECTOR_LEN;
- const ptr1 = passArray8ToWasm0(run_args_ser, wasm.__wbindgen_malloc);
- const len1 = WASM_VECTOR_LEN;
- wasm.gen_circuit_params_wasm(retptr, ptr0, len0, ptr1, len1);
+ wasm.poseidonHash(retptr, ptr0, len0);
var r0 = getInt32Memory0()[retptr / 4 + 0];
var r1 = getInt32Memory0()[retptr / 4 + 1];
var v2 = getArrayU8FromWasm0(r0, r1).slice();
@@ -100,51 +99,73 @@ export function gen_circuit_params_wasm(circuit_ser, run_args_ser) {
}
/**
-* Generate proving key in browser
-* @param {Uint8ClampedArray} circuit_ser
-* @param {Uint8ClampedArray} params_ser
-* @param {Uint8ClampedArray} circuit_params_ser
+* Generates random elgamal variables from a random seed value in browser.
+* Make sure input seed comes a secure source of randomness
+* @param {Uint8ClampedArray} rng
* @returns {Uint8Array}
*/
-export function gen_pk_wasm(circuit_ser, params_ser, circuit_params_ser) {
+export function elgamalGenRandom(rng) {
try {
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
- const ptr0 = passArray8ToWasm0(circuit_ser, wasm.__wbindgen_malloc);
+ const ptr0 = passArray8ToWasm0(rng, wasm.__wbindgen_malloc);
const len0 = WASM_VECTOR_LEN;
- const ptr1 = passArray8ToWasm0(params_ser, wasm.__wbindgen_malloc);
- const len1 = WASM_VECTOR_LEN;
- const ptr2 = passArray8ToWasm0(circuit_params_ser, wasm.__wbindgen_malloc);
- const len2 = WASM_VECTOR_LEN;
- wasm.gen_pk_wasm(retptr, ptr0, len0, ptr1, len1, ptr2, len2);
+ wasm.elgamalGenRandom(retptr, ptr0, len0);
var r0 = getInt32Memory0()[retptr / 4 + 0];
var r1 = getInt32Memory0()[retptr / 4 + 1];
- var v3 = getArrayU8FromWasm0(r0, r1).slice();
+ var v2 = getArrayU8FromWasm0(r0, r1).slice();
wasm.__wbindgen_free(r0, r1 * 1);
- return v3;
+ return v2;
} finally {
wasm.__wbindgen_add_to_stack_pointer(16);
}
}
/**
-* Generate verifying key in browser
+* Encrypt using elgamal in browser. Input message
* @param {Uint8ClampedArray} pk
-* @param {Uint8ClampedArray} circuit_params_ser
+* @param {Uint8ClampedArray} message
+* @param {Uint8ClampedArray} r
* @returns {Uint8Array}
*/
-export function gen_vk_wasm(pk, circuit_params_ser) {
+export function elgamalEncrypt(pk, message, r) {
try {
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
const ptr0 = passArray8ToWasm0(pk, wasm.__wbindgen_malloc);
const len0 = WASM_VECTOR_LEN;
- const ptr1 = passArray8ToWasm0(circuit_params_ser, wasm.__wbindgen_malloc);
+ const ptr1 = passArray8ToWasm0(message, wasm.__wbindgen_malloc);
const len1 = WASM_VECTOR_LEN;
- wasm.gen_vk_wasm(retptr, ptr0, len0, ptr1, len1);
+ const ptr2 = passArray8ToWasm0(r, wasm.__wbindgen_malloc);
+ const len2 = WASM_VECTOR_LEN;
+ wasm.elgamalEncrypt(retptr, ptr0, len0, ptr1, len1, ptr2, len2);
var r0 = getInt32Memory0()[retptr / 4 + 0];
var r1 = getInt32Memory0()[retptr / 4 + 1];
- var v2 = getArrayU8FromWasm0(r0, r1).slice();
+ var v4 = getArrayU8FromWasm0(r0, r1).slice();
wasm.__wbindgen_free(r0, r1 * 1);
- return v2;
+ return v4;
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+}
+
+/**
+* Decrypt using elgamal in browser. Input message
+* @param {Uint8ClampedArray} cipher
+* @param {Uint8ClampedArray} sk
+* @returns {Uint8Array}
+*/
+export function elgamalDecrypt(cipher, sk) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ const ptr0 = passArray8ToWasm0(cipher, wasm.__wbindgen_malloc);
+ const len0 = WASM_VECTOR_LEN;
+ const ptr1 = passArray8ToWasm0(sk, wasm.__wbindgen_malloc);
+ const len1 = WASM_VECTOR_LEN;
+ wasm.elgamalDecrypt(retptr, ptr0, len0, ptr1, len1);
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var v3 = getArrayU8FromWasm0(r0, r1).slice();
+ wasm.__wbindgen_free(r0, r1 * 1);
+ return v3;
} finally {
wasm.__wbindgen_add_to_stack_pointer(16);
}
@@ -154,57 +175,57 @@ export function gen_vk_wasm(pk, circuit_params_ser) {
* Verify proof in browser using wasm
* @param {Uint8ClampedArray} proof_js
* @param {Uint8ClampedArray} vk
-* @param {Uint8ClampedArray} circuit_params_ser
+* @param {Uint8ClampedArray} circuit_settings_ser
* @param {Uint8ClampedArray} params_ser
* @returns {boolean}
*/
-export function verify_wasm(proof_js, vk, circuit_params_ser, params_ser) {
+export function verify(proof_js, vk, circuit_settings_ser, params_ser) {
const ptr0 = passArray8ToWasm0(proof_js, wasm.__wbindgen_malloc);
const len0 = WASM_VECTOR_LEN;
const ptr1 = passArray8ToWasm0(vk, wasm.__wbindgen_malloc);
const len1 = WASM_VECTOR_LEN;
- const ptr2 = passArray8ToWasm0(circuit_params_ser, wasm.__wbindgen_malloc);
+ const ptr2 = passArray8ToWasm0(circuit_settings_ser, wasm.__wbindgen_malloc);
const len2 = WASM_VECTOR_LEN;
const ptr3 = passArray8ToWasm0(params_ser, wasm.__wbindgen_malloc);
const len3 = WASM_VECTOR_LEN;
- const ret = wasm.verify_wasm(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);
+ const ret = wasm.verify(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);
return ret !== 0;
}
/**
-* Prove proof in browser using wasm
-* @param {Uint8ClampedArray} data
+* Prove in browser using wasm
+* @param {Uint8ClampedArray} witness
* @param {Uint8ClampedArray} pk
* @param {Uint8ClampedArray} circuit_ser
-* @param {Uint8ClampedArray} circuit_params_ser
+* @param {Uint8ClampedArray} circuit_settings_ser
* @param {Uint8ClampedArray} params_ser
* @returns {Uint8Array}
*/
-export function prove_wasm(data, pk, circuit_ser, circuit_params_ser, params_ser) {
+export function prove(witness, pk, circuit_ser, circuit_settings_ser, params_ser) {
try {
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
- const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);
+ const ptr0 = passArray8ToWasm0(witness, wasm.__wbindgen_malloc);
const len0 = WASM_VECTOR_LEN;
const ptr1 = passArray8ToWasm0(pk, wasm.__wbindgen_malloc);
const len1 = WASM_VECTOR_LEN;
const ptr2 = passArray8ToWasm0(circuit_ser, wasm.__wbindgen_malloc);
const len2 = WASM_VECTOR_LEN;
- const ptr3 = passArray8ToWasm0(circuit_params_ser, wasm.__wbindgen_malloc);
+ const ptr3 = passArray8ToWasm0(circuit_settings_ser, wasm.__wbindgen_malloc);
const len3 = WASM_VECTOR_LEN;
const ptr4 = passArray8ToWasm0(params_ser, wasm.__wbindgen_malloc);
const len4 = WASM_VECTOR_LEN;
- wasm.prove_wasm(retptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4);
+ wasm.prove(retptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4);
var r0 = getInt32Memory0()[retptr / 4 + 0];
var r1 = getInt32Memory0()[retptr / 4 + 1];
- var v5 = getArrayU8FromWasm0(r0, r1).slice();
+ var v6 = getArrayU8FromWasm0(r0, r1).slice();
wasm.__wbindgen_free(r0, r1 * 1);
- return v5;
+ return v6;
} finally {
wasm.__wbindgen_add_to_stack_pointer(16);
}
}
-const cachedTextEncoder = new TextEncoder('utf-8');
+const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );
const encodeString = function (arg, view) {
const buf = cachedTextEncoder.encode(arg);
@@ -219,14 +240,14 @@ function passStringToWasm0(arg, malloc, realloc) {
if (realloc === undefined) {
const buf = cachedTextEncoder.encode(arg);
- const ptr = malloc(buf.length);
+ const ptr = malloc(buf.length, 1) >>> 0;
getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);
WASM_VECTOR_LEN = buf.length;
return ptr;
}
let len = arg.length;
- let ptr = malloc(len);
+ let ptr = malloc(len, 1) >>> 0;
const mem = getUint8Memory0();
@@ -242,7 +263,7 @@ function passStringToWasm0(arg, malloc, realloc) {
if (offset !== 0) {
arg = arg.slice(offset);
}
- ptr = realloc(ptr, len, len = offset + arg.length * 3);
+ ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
const view = getUint8Memory0().subarray(ptr + offset, ptr + len);
const ret = encodeString(arg, view);
@@ -281,15 +302,16 @@ export function wbg_rayon_start_worker(receiver) {
export class wbg_rayon_PoolBuilder {
static __wrap(ptr) {
+ ptr = ptr >>> 0;
const obj = Object.create(wbg_rayon_PoolBuilder.prototype);
- obj.ptr = ptr;
+ obj.__wbg_ptr = ptr;
return obj;
}
__destroy_into_raw() {
- const ptr = this.ptr;
- this.ptr = 0;
+ const ptr = this.__wbg_ptr;
+ this.__wbg_ptr = 0;
return ptr;
}
@@ -302,24 +324,24 @@ export class wbg_rayon_PoolBuilder {
* @returns {number}
*/
numThreads() {
- const ret = wasm.wbg_rayon_poolbuilder_numThreads(this.ptr);
+ const ret = wasm.wbg_rayon_poolbuilder_numThreads(this.__wbg_ptr);
return ret >>> 0;
}
/**
* @returns {number}
*/
receiver() {
- const ret = wasm.wbg_rayon_poolbuilder_receiver(this.ptr);
+ const ret = wasm.wbg_rayon_poolbuilder_receiver(this.__wbg_ptr);
return ret;
}
/**
*/
build() {
- wasm.wbg_rayon_poolbuilder_build(this.ptr);
+ wasm.wbg_rayon_poolbuilder_build(this.__wbg_ptr);
}
}
-async function load(module, imports) {
+async function __wbg_load(module, imports) {
if (typeof Response === 'function' && module instanceof Response) {
if (typeof WebAssembly.instantiateStreaming === 'function') {
try {
@@ -350,40 +372,35 @@ async function load(module, imports) {
}
}
-function getImports() {
+function __wbg_get_imports() {
const imports = {};
imports.wbg = {};
- imports.wbg.__wbg_log_ff475a6d8e01b60e = function(arg0, arg1) {
- console.log(getStringFromWasm0(arg0, arg1));
- };
imports.wbg.__wbg_new_abda76e883ba8a5f = function() {
const ret = new Error();
return addHeapObject(ret);
};
imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {
const ret = getObject(arg1).stack;
- const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
- const len0 = WASM_VECTOR_LEN;
- getInt32Memory0()[arg0 / 4 + 1] = len0;
- getInt32Memory0()[arg0 / 4 + 0] = ptr0;
+ const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ const len1 = WASM_VECTOR_LEN;
+ getInt32Memory0()[arg0 / 4 + 1] = len1;
+ getInt32Memory0()[arg0 / 4 + 0] = ptr1;
};
imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {
+ let deferred0_0;
+ let deferred0_1;
try {
+ deferred0_0 = arg0;
+ deferred0_1 = arg1;
console.error(getStringFromWasm0(arg0, arg1));
} finally {
- wasm.__wbindgen_free(arg0, arg1);
+ wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
}
};
imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
takeObject(arg0);
};
- imports.wbg.__wbg_randomFillSync_6894564c2c334c42 = function() { return handleError(function (arg0, arg1, arg2) {
- getObject(arg0).randomFillSync(getArrayU8FromWasm0(arg1, arg2));
- }, arguments) };
- imports.wbg.__wbg_getRandomValues_805f1c3d65988a5a = function() { return handleError(function (arg0, arg1) {
- getObject(arg0).getRandomValues(getObject(arg1));
- }, arguments) };
- imports.wbg.__wbg_crypto_e1d53a1d73fb10b8 = function(arg0) {
+ imports.wbg.__wbg_crypto_c48a774b022d20ac = function(arg0) {
const ret = getObject(arg0).crypto;
return addHeapObject(ret);
};
@@ -392,15 +409,15 @@ function getImports() {
const ret = typeof(val) === 'object' && val !== null;
return ret;
};
- imports.wbg.__wbg_process_038c26bf42b093f8 = function(arg0) {
+ imports.wbg.__wbg_process_298734cf255a885d = function(arg0) {
const ret = getObject(arg0).process;
return addHeapObject(ret);
};
- imports.wbg.__wbg_versions_ab37218d2f0b24a8 = function(arg0) {
+ imports.wbg.__wbg_versions_e2e78e134e3e5d01 = function(arg0) {
const ret = getObject(arg0).versions;
return addHeapObject(ret);
};
- imports.wbg.__wbg_node_080f4b19d15bc1fe = function(arg0) {
+ imports.wbg.__wbg_node_1cd7a5d853dbea79 = function(arg0) {
const ret = getObject(arg0).node;
return addHeapObject(ret);
};
@@ -408,11 +425,11 @@ function getImports() {
const ret = typeof(getObject(arg0)) === 'string';
return ret;
};
- imports.wbg.__wbg_msCrypto_6e7d3e1f92610cbb = function(arg0) {
+ imports.wbg.__wbg_msCrypto_bcb970640f50a1e8 = function(arg0) {
const ret = getObject(arg0).msCrypto;
return addHeapObject(ret);
};
- imports.wbg.__wbg_require_78a3dcfbdba9cbce = function() { return handleError(function () {
+ imports.wbg.__wbg_require_8f08ceecec0f4fee = function() { return handleError(function () {
const ret = module.require;
return addHeapObject(ret);
}, arguments) };
@@ -424,11 +441,17 @@ function getImports() {
const ret = getStringFromWasm0(arg0, arg1);
return addHeapObject(ret);
};
- imports.wbg.__wbg_newnoargs_2b8b6bd7753c76ba = function(arg0, arg1) {
+ imports.wbg.__wbg_getRandomValues_37fa2ca9e4e07fab = function() { return handleError(function (arg0, arg1) {
+ getObject(arg0).getRandomValues(getObject(arg1));
+ }, arguments) };
+ imports.wbg.__wbg_randomFillSync_dc1e9a60c158336d = function() { return handleError(function (arg0, arg1) {
+ getObject(arg0).randomFillSync(takeObject(arg1));
+ }, arguments) };
+ imports.wbg.__wbg_newnoargs_581967eacc0e2604 = function(arg0, arg1) {
const ret = new Function(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
};
- imports.wbg.__wbg_call_95d1ea488d03e4e8 = function() { return handleError(function (arg0, arg1) {
+ imports.wbg.__wbg_call_cb65541d95d71282 = function() { return handleError(function (arg0, arg1) {
const ret = getObject(arg0).call(getObject(arg1));
return addHeapObject(ret);
}, arguments) };
@@ -436,19 +459,19 @@ function getImports() {
const ret = getObject(arg0);
return addHeapObject(ret);
};
- imports.wbg.__wbg_self_e7c1f827057f6584 = function() { return handleError(function () {
+ imports.wbg.__wbg_self_1ff1d729e9aae938 = function() { return handleError(function () {
const ret = self.self;
return addHeapObject(ret);
}, arguments) };
- imports.wbg.__wbg_window_a09ec664e14b1b81 = function() { return handleError(function () {
+ imports.wbg.__wbg_window_5f4faef6c12b79ec = function() { return handleError(function () {
const ret = window.window;
return addHeapObject(ret);
}, arguments) };
- imports.wbg.__wbg_globalThis_87cbb8506fecf3a9 = function() { return handleError(function () {
+ imports.wbg.__wbg_globalThis_1d39714405582d3c = function() { return handleError(function () {
const ret = globalThis.globalThis;
return addHeapObject(ret);
}, arguments) };
- imports.wbg.__wbg_global_c85a9259e621f3db = function() { return handleError(function () {
+ imports.wbg.__wbg_global_651f05c6a0944d1c = function() { return handleError(function () {
const ret = global.global;
return addHeapObject(ret);
}, arguments) };
@@ -456,30 +479,34 @@ function getImports() {
const ret = getObject(arg0) === undefined;
return ret;
};
- imports.wbg.__wbg_call_9495de66fdbe016b = function() { return handleError(function (arg0, arg1, arg2) {
+ imports.wbg.__wbg_call_01734de55d61e11d = function() { return handleError(function (arg0, arg1, arg2) {
const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));
return addHeapObject(ret);
}, arguments) };
- imports.wbg.__wbg_buffer_cf65c07de34b9a08 = function(arg0) {
+ imports.wbg.__wbg_now_9c5990bda04c7e53 = function() {
+ const ret = Date.now();
+ return ret;
+ };
+ imports.wbg.__wbg_buffer_085ec1f694018c4f = function(arg0) {
const ret = getObject(arg0).buffer;
return addHeapObject(ret);
};
- imports.wbg.__wbg_new_537b7341ce90bb31 = function(arg0) {
+ imports.wbg.__wbg_newwithbyteoffsetandlength_6da8e527659b86aa = function(arg0, arg1, arg2) {
+ const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);
+ return addHeapObject(ret);
+ };
+ imports.wbg.__wbg_new_8125e318e6245eed = function(arg0) {
const ret = new Uint8Array(getObject(arg0));
return addHeapObject(ret);
};
- imports.wbg.__wbg_set_17499e8aa4003ebd = function(arg0, arg1, arg2) {
+ imports.wbg.__wbg_set_5cf90238115182c3 = function(arg0, arg1, arg2) {
getObject(arg0).set(getObject(arg1), arg2 >>> 0);
};
- imports.wbg.__wbg_length_27a2afe8ab42b09f = function(arg0) {
- const ret = getObject(arg0).length;
- return ret;
- };
- imports.wbg.__wbg_newwithlength_b56c882b57805732 = function(arg0) {
+ imports.wbg.__wbg_newwithlength_e5d69174d6984cd7 = function(arg0) {
const ret = new Uint8Array(arg0 >>> 0);
return addHeapObject(ret);
};
- imports.wbg.__wbg_subarray_7526649b91a252a6 = function(arg0, arg1, arg2) {
+ imports.wbg.__wbg_subarray_13db269f57aa838d = function(arg0, arg1, arg2) {
const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);
return addHeapObject(ret);
};
@@ -487,7 +514,7 @@ function getImports() {
throw new Error(getStringFromWasm0(arg0, arg1));
};
imports.wbg.__wbindgen_module = function() {
- const ret = init.__wbindgen_wasm_module;
+ const ret = __wbg_init.__wbindgen_wasm_module;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_memory = function() {
@@ -502,13 +529,13 @@ function getImports() {
return imports;
}
-function initMemory(imports, maybe_memory) {
+function __wbg_init_memory(imports, maybe_memory) {
imports.wbg.memory = maybe_memory || new WebAssembly.Memory({initial:25,maximum:16384,shared:true});
}
-function finalizeInit(instance, module) {
+function __wbg_finalize_init(instance, module) {
wasm = instance.exports;
- init.__wbindgen_wasm_module = module;
+ __wbg_init.__wbindgen_wasm_module = module;
cachedInt32Memory0 = null;
cachedUint8Memory0 = null;
@@ -517,9 +544,11 @@ function finalizeInit(instance, module) {
}
function initSync(module, maybe_memory) {
- const imports = getImports();
+ if (wasm !== undefined) return wasm;
- initMemory(imports, maybe_memory);
+ const imports = __wbg_get_imports();
+
+ __wbg_init_memory(imports, maybe_memory);
if (!(module instanceof WebAssembly.Module)) {
module = new WebAssembly.Module(module);
@@ -527,25 +556,27 @@ function initSync(module, maybe_memory) {
const instance = new WebAssembly.Instance(module, imports);
- return finalizeInit(instance, module);
+ return __wbg_finalize_init(instance, module);
}
-async function init(input, maybe_memory) {
+async function __wbg_init(input, maybe_memory) {
+ if (wasm !== undefined) return wasm;
+
if (typeof input === 'undefined') {
- input = new URL('ezkl_lib_bg.wasm', import.meta.url);
+ input = new URL('ezkl_bg.wasm', import.meta.url);
}
- const imports = getImports();
+ const imports = __wbg_get_imports();
if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {
input = fetch(input);
}
- initMemory(imports, maybe_memory);
+ __wbg_init_memory(imports, maybe_memory);
- const { instance, module } = await load(await input, imports);
+ const { instance, module } = await __wbg_load(await input, imports);
- return finalizeInit(instance, module);
+ return __wbg_finalize_init(instance, module);
}
export { initSync }
-export default init;
+export default __wbg_init;
diff --git a/pkg/ezkl_bg.wasm b/pkg/ezkl_bg.wasm
new file mode 100644
index 0000000..550c4b5
Binary files /dev/null and b/pkg/ezkl_bg.wasm differ
diff --git a/pkg/ezkl_bg.wasm.d.ts b/pkg/ezkl_bg.wasm.d.ts
new file mode 100644
index 0000000..3cbec56
--- /dev/null
+++ b/pkg/ezkl_bg.wasm.d.ts
@@ -0,0 +1,27 @@
+/* tslint:disable */
+/* eslint-disable */
+export function poseidonHash(a: number, b: number, c: number): void;
+export function elgamalGenRandom(a: number, b: number, c: number): void;
+export function elgamalEncrypt(a: number, b: number, c: number, d: number, e: number, f: number, g: number): void;
+export function elgamalDecrypt(a: number, b: number, c: number, d: number, e: number): void;
+export function verify(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number): number;
+export function prove(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number): void;
+export function init_panic_hook(): void;
+export function __wbg_wbg_rayon_poolbuilder_free(a: number): void;
+export function wbg_rayon_poolbuilder_numThreads(a: number): number;
+export function wbg_rayon_poolbuilder_receiver(a: number): number;
+export function wbg_rayon_poolbuilder_build(a: number): void;
+export function wbg_rayon_start_worker(a: number): void;
+export function initThreadPool(a: number): number;
+export function rustsecp256k1_v0_8_1_context_create(a: number): number;
+export function rustsecp256k1_v0_8_1_context_destroy(a: number): void;
+export function rustsecp256k1_v0_8_1_default_illegal_callback_fn(a: number, b: number): void;
+export function rustsecp256k1_v0_8_1_default_error_callback_fn(a: number, b: number): void;
+export const memory: WebAssembly.Memory;
+export function __wbindgen_add_to_stack_pointer(a: number): number;
+export function __wbindgen_malloc(a: number, b: number): number;
+export function __wbindgen_free(a: number, b: number, c: number): void;
+export function __wbindgen_realloc(a: number, b: number, c: number, d: number): number;
+export function __wbindgen_exn_store(a: number): void;
+export function __wbindgen_thread_destroy(a: number, b: number): void;
+export function __wbindgen_start(): void;
diff --git a/pkg/ezkl_lib_bg.wasm b/pkg/ezkl_lib_bg.wasm
deleted file mode 100644
index f284665..0000000
Binary files a/pkg/ezkl_lib_bg.wasm and /dev/null differ
diff --git a/pkg/ezkl_lib_bg.wasm.d.ts b/pkg/ezkl_lib_bg.wasm.d.ts
deleted file mode 100644
index 1d37a73..0000000
--- a/pkg/ezkl_lib_bg.wasm.d.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-export function gen_circuit_params_wasm(a: number, b: number, c: number, d: number, e: number): void;
-export function gen_pk_wasm(a: number, b: number, c: number, d: number, e: number, f: number, g: number): void;
-export function gen_vk_wasm(a: number, b: number, c: number, d: number, e: number): void;
-export function verify_wasm(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number): number;
-export function prove_wasm(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number): void;
-export function init_panic_hook(): void;
-export function __wbg_wbg_rayon_poolbuilder_free(a: number): void;
-export function wbg_rayon_poolbuilder_numThreads(a: number): number;
-export function wbg_rayon_poolbuilder_receiver(a: number): number;
-export function wbg_rayon_poolbuilder_build(a: number): void;
-export function wbg_rayon_start_worker(a: number): void;
-export function initThreadPool(a: number): number;
-export function rustsecp256k1_v0_6_1_context_create(a: number): number;
-export function rustsecp256k1_v0_6_1_context_destroy(a: number): void;
-export function rustsecp256k1_v0_6_1_default_illegal_callback_fn(a: number, b: number): void;
-export function rustsecp256k1_v0_6_1_default_error_callback_fn(a: number, b: number): void;
-export const memory: WebAssembly.Memory;
-export function __wbindgen_add_to_stack_pointer(a: number): number;
-export function __wbindgen_malloc(a: number): number;
-export function __wbindgen_free(a: number, b: number): void;
-export function __wbindgen_realloc(a: number, b: number, c: number): number;
-export function __wbindgen_exn_store(a: number): void;
-export function __wbindgen_thread_destroy(a: number, b: number): void;
-export function __wbindgen_start(): void;
diff --git a/pkg/package.json b/pkg/package.json
index 8a49845..7133e2c 100644
--- a/pkg/package.json
+++ b/pkg/package.json
@@ -1,13 +1,13 @@
{
- "name": "ezkl-lib",
- "version": "0.1.0",
+ "name": "ezkl",
+ "version": "0.0.0",
"files": [
- "ezkl_lib_bg.wasm",
- "ezkl_lib.js",
- "ezkl_lib.d.ts"
+ "ezkl_bg.wasm",
+ "ezkl.js",
+ "ezkl.d.ts"
],
- "module": "ezkl_lib.js",
- "types": "ezkl_lib.d.ts",
+ "module": "ezkl.js",
+ "types": "ezkl.d.ts",
"sideEffects": [
"./snippets/*"
]
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..7a6fdaa
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,2842 @@
+lockfileVersion: '6.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+dependencies:
+ '@types/file-saver':
+ specifier: ^2.0.5
+ version: 2.0.5
+ '@types/json-bigint':
+ specifier: ^1.0.1
+ version: 1.0.1
+ '@types/node':
+ specifier: 20.4.5
+ version: 20.4.5
+ '@types/react':
+ specifier: 18.2.18
+ version: 18.2.18
+ '@types/react-dom':
+ specifier: 18.2.7
+ version: 18.2.7
+ autoprefixer:
+ specifier: 10.4.14
+ version: 10.4.14(postcss@8.4.27)
+ eslint:
+ specifier: 8.46.0
+ version: 8.46.0
+ eslint-config-next:
+ specifier: 13.4.12
+ version: 13.4.12(eslint@8.46.0)(typescript@5.1.6)
+ file-saver:
+ specifier: ^2.0.5
+ version: 2.0.5
+ json-bigint:
+ specifier: ^1.0.0
+ version: 1.0.0
+ jszip:
+ specifier: ^3.10.1
+ version: 3.10.1
+ next:
+ specifier: 13.4.12
+ version: 13.4.12(react-dom@18.2.0)(react@18.2.0)
+ postcss:
+ specifier: 8.4.27
+ version: 8.4.27
+ react:
+ specifier: 18.2.0
+ version: 18.2.0
+ react-dom:
+ specifier: 18.2.0
+ version: 18.2.0(react@18.2.0)
+ tailwindcss:
+ specifier: 3.3.3
+ version: 3.3.3
+ typescript:
+ specifier: 5.1.6
+ version: 5.1.6
+
+packages:
+
+ /@aashutoshrathi/word-wrap@1.2.6:
+ resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /@alloc/quick-lru@5.2.0:
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@babel/runtime@7.22.6:
+ resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ regenerator-runtime: 0.13.11
+ dev: false
+
+ /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0):
+ resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+ dependencies:
+ eslint: 8.46.0
+ eslint-visitor-keys: 3.4.2
+ dev: false
+
+ /@eslint-community/regexpp@4.6.2:
+ resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+ dev: false
+
+ /@eslint/eslintrc@2.1.1:
+ resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.3.4
+ espree: 9.6.1
+ globals: 13.20.0
+ ignore: 5.2.4
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@eslint/js@8.46.0:
+ resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: false
+
+ /@humanwhocodes/config-array@0.11.10:
+ resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==}
+ engines: {node: '>=10.10.0'}
+ dependencies:
+ '@humanwhocodes/object-schema': 1.2.1
+ debug: 4.3.4
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@humanwhocodes/module-importer@1.0.1:
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+ dev: false
+
+ /@humanwhocodes/object-schema@1.2.1:
+ resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
+ dev: false
+
+ /@jridgewell/gen-mapping@0.3.3:
+ resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/set-array': 1.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.18
+ dev: false
+
+ /@jridgewell/resolve-uri@3.1.0:
+ resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
+ engines: {node: '>=6.0.0'}
+ dev: false
+
+ /@jridgewell/set-array@1.1.2:
+ resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
+ engines: {node: '>=6.0.0'}
+ dev: false
+
+ /@jridgewell/sourcemap-codec@1.4.14:
+ resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
+ dev: false
+
+ /@jridgewell/sourcemap-codec@1.4.15:
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ dev: false
+
+ /@jridgewell/trace-mapping@0.3.18:
+ resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.0
+ '@jridgewell/sourcemap-codec': 1.4.14
+ dev: false
+
+ /@next/env@13.4.12:
+ resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==}
+ dev: false
+
+ /@next/eslint-plugin-next@13.4.12:
+ resolution: {integrity: sha512-6rhK9CdxEgj/j1qvXIyLTWEaeFv7zOK8yJMulz3Owel0uek0U9MJCGzmKgYxM3aAUBo3gKeywCZKyQnJKto60A==}
+ dependencies:
+ glob: 7.1.7
+ dev: false
+
+ /@next/swc-darwin-arm64@13.4.12:
+ resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-darwin-x64@13.4.12:
+ resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-linux-arm64-gnu@13.4.12:
+ resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-linux-arm64-musl@13.4.12:
+ resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-linux-x64-gnu@13.4.12:
+ resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-linux-x64-musl@13.4.12:
+ resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-win32-arm64-msvc@13.4.12:
+ resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-win32-ia32-msvc@13.4.12:
+ resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-win32-x64-msvc@13.4.12:
+ resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@nodelib/fs.scandir@2.1.5:
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+ dev: false
+
+ /@nodelib/fs.stat@2.0.5:
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+ dev: false
+
+ /@nodelib/fs.walk@1.2.8:
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.15.0
+ dev: false
+
+ /@pkgr/utils@2.4.2:
+ resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+ dependencies:
+ cross-spawn: 7.0.3
+ fast-glob: 3.3.1
+ is-glob: 4.0.3
+ open: 9.1.0
+ picocolors: 1.0.0
+ tslib: 2.6.1
+ dev: false
+
+ /@rushstack/eslint-patch@1.3.2:
+ resolution: {integrity: sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==}
+ dev: false
+
+ /@swc/helpers@0.5.1:
+ resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==}
+ dependencies:
+ tslib: 2.6.1
+ dev: false
+
+ /@types/file-saver@2.0.5:
+ resolution: {integrity: sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ==}
+ dev: false
+
+ /@types/json-bigint@1.0.1:
+ resolution: {integrity: sha512-zpchZLNsNuzJHi6v64UBoFWAvQlPhch7XAi36FkH6tL1bbbmimIF+cS7vwkzY4u5RaSWMoflQfu+TshMPPw8uw==}
+ dev: false
+
+ /@types/json5@0.0.29:
+ resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
+ dev: false
+
+ /@types/node@20.4.5:
+ resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==}
+ dev: false
+
+ /@types/prop-types@15.7.5:
+ resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
+ dev: false
+
+ /@types/react-dom@18.2.7:
+ resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==}
+ dependencies:
+ '@types/react': 18.2.18
+ dev: false
+
+ /@types/react@18.2.18:
+ resolution: {integrity: sha512-da4NTSeBv/P34xoZPhtcLkmZuJ+oYaCxHmyHzwaDQo9RQPBeXV+06gEk2FpqEcsX9XrnNLvRpVh6bdavDSjtiQ==}
+ dependencies:
+ '@types/prop-types': 15.7.5
+ '@types/scheduler': 0.16.3
+ csstype: 3.1.2
+ dev: false
+
+ /@types/scheduler@0.16.3:
+ resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==}
+ dev: false
+
+ /@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6):
+ resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/scope-manager': 5.62.0
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6)
+ debug: 4.3.4
+ eslint: 8.46.0
+ typescript: 5.1.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@typescript-eslint/scope-manager@5.62.0:
+ resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/visitor-keys': 5.62.0
+ dev: false
+
+ /@typescript-eslint/types@5.62.0:
+ resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: false
+
+ /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6):
+ resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/visitor-keys': 5.62.0
+ debug: 4.3.4
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.5.4
+ tsutils: 3.21.0(typescript@5.1.6)
+ typescript: 5.1.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@typescript-eslint/visitor-keys@5.62.0:
+ resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ eslint-visitor-keys: 3.4.2
+ dev: false
+
+ /acorn-jsx@5.3.2(acorn@8.10.0):
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ acorn: 8.10.0
+ dev: false
+
+ /acorn@8.10.0:
+ resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: false
+
+ /ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+ dev: false
+
+ /ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+ dev: false
+
+ /any-promise@1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+ dev: false
+
+ /anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+ dev: false
+
+ /arg@5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+ dev: false
+
+ /argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ dev: false
+
+ /aria-query@5.3.0:
+ resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
+ dependencies:
+ dequal: 2.0.3
+ dev: false
+
+ /array-buffer-byte-length@1.0.0:
+ resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
+ dependencies:
+ call-bind: 1.0.2
+ is-array-buffer: 3.0.2
+ dev: false
+
+ /array-includes@3.1.6:
+ resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ get-intrinsic: 1.2.1
+ is-string: 1.0.7
+ dev: false
+
+ /array-union@2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /array.prototype.findlastindex@1.2.2:
+ resolution: {integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ es-shim-unscopables: 1.0.0
+ get-intrinsic: 1.2.1
+ dev: false
+
+ /array.prototype.flat@1.3.1:
+ resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ es-shim-unscopables: 1.0.0
+ dev: false
+
+ /array.prototype.flatmap@1.3.1:
+ resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ es-shim-unscopables: 1.0.0
+ dev: false
+
+ /array.prototype.tosorted@1.1.1:
+ resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ es-shim-unscopables: 1.0.0
+ get-intrinsic: 1.2.1
+ dev: false
+
+ /arraybuffer.prototype.slice@1.0.1:
+ resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.0
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ get-intrinsic: 1.2.1
+ is-array-buffer: 3.0.2
+ is-shared-array-buffer: 1.0.2
+ dev: false
+
+ /ast-types-flow@0.0.7:
+ resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==}
+ dev: false
+
+ /autoprefixer@10.4.14(postcss@8.4.27):
+ resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ browserslist: 4.21.10
+ caniuse-lite: 1.0.30001518
+ fraction.js: 4.2.0
+ normalize-range: 0.1.2
+ picocolors: 1.0.0
+ postcss: 8.4.27
+ postcss-value-parser: 4.2.0
+ dev: false
+
+ /available-typed-arrays@1.0.5:
+ resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
+ /axe-core@4.7.2:
+ resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /axobject-query@3.2.1:
+ resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
+ dependencies:
+ dequal: 2.0.3
+ dev: false
+
+ /balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ dev: false
+
+ /big-integer@1.6.51:
+ resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==}
+ engines: {node: '>=0.6'}
+ dev: false
+
+ /bignumber.js@9.1.1:
+ resolution: {integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==}
+ dev: false
+
+ /binary-extensions@2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /bplist-parser@0.2.0:
+ resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==}
+ engines: {node: '>= 5.10.0'}
+ dependencies:
+ big-integer: 1.6.51
+ dev: false
+
+ /brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+ dev: false
+
+ /braces@3.0.2:
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.0.1
+ dev: false
+
+ /browserslist@4.21.10:
+ resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001518
+ electron-to-chromium: 1.4.479
+ node-releases: 2.0.13
+ update-browserslist-db: 1.0.11(browserslist@4.21.10)
+ dev: false
+
+ /bundle-name@3.0.0:
+ resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==}
+ engines: {node: '>=12'}
+ dependencies:
+ run-applescript: 5.0.0
+ dev: false
+
+ /busboy@1.6.0:
+ resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
+ engines: {node: '>=10.16.0'}
+ dependencies:
+ streamsearch: 1.1.0
+ dev: false
+
+ /call-bind@1.0.2:
+ resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
+ dependencies:
+ function-bind: 1.1.1
+ get-intrinsic: 1.2.1
+ dev: false
+
+ /callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /camelcase-css@2.0.1:
+ resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /caniuse-lite@1.0.30001518:
+ resolution: {integrity: sha512-rup09/e3I0BKjncL+FesTayKtPrdwKhUufQFd3riFw1hHg8JmIFoInYfB102cFcY/pPgGmdyl/iy+jgiDi2vdA==}
+ dev: false
+
+ /chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: false
+
+ /chokidar@3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: false
+
+ /client-only@0.0.1:
+ resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
+ dev: false
+
+ /color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+ dependencies:
+ color-name: 1.1.4
+ dev: false
+
+ /color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ dev: false
+
+ /commander@4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ dev: false
+
+ /core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+ dev: false
+
+ /cross-spawn@7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+ dev: false
+
+ /cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: false
+
+ /csstype@3.1.2:
+ resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
+ dev: false
+
+ /damerau-levenshtein@1.0.8:
+ resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
+ dev: false
+
+ /debug@3.2.7:
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.3
+ dev: false
+
+ /debug@4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+ dev: false
+
+ /deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ dev: false
+
+ /default-browser-id@3.0.0:
+ resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==}
+ engines: {node: '>=12'}
+ dependencies:
+ bplist-parser: 0.2.0
+ untildify: 4.0.0
+ dev: false
+
+ /default-browser@4.0.0:
+ resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==}
+ engines: {node: '>=14.16'}
+ dependencies:
+ bundle-name: 3.0.0
+ default-browser-id: 3.0.0
+ execa: 7.2.0
+ titleize: 3.0.0
+ dev: false
+
+ /define-lazy-prop@3.0.0:
+ resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /define-properties@1.2.0:
+ resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-property-descriptors: 1.0.0
+ object-keys: 1.1.1
+ dev: false
+
+ /dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /didyoumean@1.2.2:
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+ dev: false
+
+ /dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-type: 4.0.0
+ dev: false
+
+ /dlv@1.1.3:
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+ dev: false
+
+ /doctrine@2.1.0:
+ resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ esutils: 2.0.3
+ dev: false
+
+ /doctrine@3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ esutils: 2.0.3
+ dev: false
+
+ /electron-to-chromium@1.4.479:
+ resolution: {integrity: sha512-ABv1nHMIR8I5n3O3Een0gr6i0mfM+YcTZqjHy3pAYaOjgFG+BMquuKrSyfYf5CbEkLr9uM05RA3pOk4udNB/aQ==}
+ dev: false
+
+ /emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+ dev: false
+
+ /enhanced-resolve@5.15.0:
+ resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+ dev: false
+
+ /es-abstract@1.22.1:
+ resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.0
+ arraybuffer.prototype.slice: 1.0.1
+ available-typed-arrays: 1.0.5
+ call-bind: 1.0.2
+ es-set-tostringtag: 2.0.1
+ es-to-primitive: 1.2.1
+ function.prototype.name: 1.1.5
+ get-intrinsic: 1.2.1
+ get-symbol-description: 1.0.0
+ globalthis: 1.0.3
+ gopd: 1.0.1
+ has: 1.0.3
+ has-property-descriptors: 1.0.0
+ has-proto: 1.0.1
+ has-symbols: 1.0.3
+ internal-slot: 1.0.5
+ is-array-buffer: 3.0.2
+ is-callable: 1.2.7
+ is-negative-zero: 2.0.2
+ is-regex: 1.1.4
+ is-shared-array-buffer: 1.0.2
+ is-string: 1.0.7
+ is-typed-array: 1.1.12
+ is-weakref: 1.0.2
+ object-inspect: 1.12.3
+ object-keys: 1.1.1
+ object.assign: 4.1.4
+ regexp.prototype.flags: 1.5.0
+ safe-array-concat: 1.0.0
+ safe-regex-test: 1.0.0
+ string.prototype.trim: 1.2.7
+ string.prototype.trimend: 1.0.6
+ string.prototype.trimstart: 1.0.6
+ typed-array-buffer: 1.0.0
+ typed-array-byte-length: 1.0.0
+ typed-array-byte-offset: 1.0.0
+ typed-array-length: 1.0.4
+ unbox-primitive: 1.0.2
+ which-typed-array: 1.1.11
+ dev: false
+
+ /es-set-tostringtag@2.0.1:
+ resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.2.1
+ has: 1.0.3
+ has-tostringtag: 1.0.0
+ dev: false
+
+ /es-shim-unscopables@1.0.0:
+ resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
+ dependencies:
+ has: 1.0.3
+ dev: false
+
+ /es-to-primitive@1.2.1:
+ resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.0.5
+ is-symbol: 1.0.4
+ dev: false
+
+ /escalade@3.1.1:
+ resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /eslint-config-next@13.4.12(eslint@8.46.0)(typescript@5.1.6):
+ resolution: {integrity: sha512-ZF0r5vxKaVazyZH/37Au/XItiG7qUOBw+HaH3PeyXltIMwXorsn6bdrl0Nn9N5v5v9spc+6GM2ryjugbjF6X2g==}
+ peerDependencies:
+ eslint: ^7.23.0 || ^8.0.0
+ typescript: '>=3.3.1'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@next/eslint-plugin-next': 13.4.12
+ '@rushstack/eslint-patch': 1.3.2
+ '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
+ eslint: 8.46.0
+ eslint-import-resolver-node: 0.3.7
+ eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.0)(eslint@8.46.0)
+ eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0)
+ eslint-plugin-jsx-a11y: 6.7.1(eslint@8.46.0)
+ eslint-plugin-react: 7.33.1(eslint@8.46.0)
+ eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.46.0)
+ typescript: 5.1.6
+ transitivePeerDependencies:
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: false
+
+ /eslint-import-resolver-node@0.3.7:
+ resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==}
+ dependencies:
+ debug: 3.2.7
+ is-core-module: 2.12.1
+ resolve: 1.22.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.0)(eslint@8.46.0):
+ resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ eslint-plugin-import: '*'
+ dependencies:
+ debug: 4.3.4
+ enhanced-resolve: 5.15.0
+ eslint: 8.46.0
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0)
+ eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0)
+ get-tsconfig: 4.6.2
+ globby: 13.2.2
+ is-core-module: 2.12.1
+ is-glob: 4.0.3
+ synckit: 0.8.5
+ transitivePeerDependencies:
+ - '@typescript-eslint/parser'
+ - eslint-import-resolver-node
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: false
+
+ /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0):
+ resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
+ debug: 3.2.7
+ eslint: 8.46.0
+ eslint-import-resolver-node: 0.3.7
+ eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.0)(eslint@8.46.0)
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /eslint-plugin-import@2.28.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0):
+ resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
+ array-includes: 3.1.6
+ array.prototype.findlastindex: 1.2.2
+ array.prototype.flat: 1.3.1
+ array.prototype.flatmap: 1.3.1
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 8.46.0
+ eslint-import-resolver-node: 0.3.7
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0)
+ has: 1.0.3
+ is-core-module: 2.12.1
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.fromentries: 2.0.6
+ object.groupby: 1.0.0
+ object.values: 1.1.6
+ resolve: 1.22.3
+ semver: 6.3.1
+ tsconfig-paths: 3.14.2
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: false
+
+ /eslint-plugin-jsx-a11y@6.7.1(eslint@8.46.0):
+ resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
+ dependencies:
+ '@babel/runtime': 7.22.6
+ aria-query: 5.3.0
+ array-includes: 3.1.6
+ array.prototype.flatmap: 1.3.1
+ ast-types-flow: 0.0.7
+ axe-core: 4.7.2
+ axobject-query: 3.2.1
+ damerau-levenshtein: 1.0.8
+ emoji-regex: 9.2.2
+ eslint: 8.46.0
+ has: 1.0.3
+ jsx-ast-utils: 3.3.5
+ language-tags: 1.0.5
+ minimatch: 3.1.2
+ object.entries: 1.1.6
+ object.fromentries: 2.0.6
+ semver: 6.3.1
+ dev: false
+
+ /eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705(eslint@8.46.0):
+ resolution: {integrity: sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
+ dependencies:
+ eslint: 8.46.0
+ dev: false
+
+ /eslint-plugin-react@7.33.1(eslint@8.46.0):
+ resolution: {integrity: sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
+ dependencies:
+ array-includes: 3.1.6
+ array.prototype.flatmap: 1.3.1
+ array.prototype.tosorted: 1.1.1
+ doctrine: 2.1.0
+ eslint: 8.46.0
+ estraverse: 5.3.0
+ jsx-ast-utils: 3.3.5
+ minimatch: 3.1.2
+ object.entries: 1.1.6
+ object.fromentries: 2.0.6
+ object.hasown: 1.1.2
+ object.values: 1.1.6
+ prop-types: 15.8.1
+ resolve: 2.0.0-next.4
+ semver: 6.3.1
+ string.prototype.matchall: 4.0.8
+ dev: false
+
+ /eslint-scope@7.2.2:
+ resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+ dev: false
+
+ /eslint-visitor-keys@3.4.2:
+ resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: false
+
+ /eslint@8.46.0:
+ resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0)
+ '@eslint-community/regexpp': 4.6.2
+ '@eslint/eslintrc': 2.1.1
+ '@eslint/js': 8.46.0
+ '@humanwhocodes/config-array': 0.11.10
+ '@humanwhocodes/module-importer': 1.0.1
+ '@nodelib/fs.walk': 1.2.8
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.3
+ debug: 4.3.4
+ doctrine: 3.0.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 7.2.2
+ eslint-visitor-keys: 3.4.2
+ espree: 9.6.1
+ esquery: 1.5.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ globals: 13.20.0
+ graphemer: 1.4.0
+ ignore: 5.2.4
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ is-path-inside: 3.0.3
+ js-yaml: 4.1.0
+ json-stable-stringify-without-jsonify: 1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.3
+ strip-ansi: 6.0.1
+ text-table: 0.2.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /espree@9.6.1:
+ resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ acorn: 8.10.0
+ acorn-jsx: 5.3.2(acorn@8.10.0)
+ eslint-visitor-keys: 3.4.2
+ dev: false
+
+ /esquery@1.5.0:
+ resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ estraverse: 5.3.0
+ dev: false
+
+ /esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+ dependencies:
+ estraverse: 5.3.0
+ dev: false
+
+ /estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+ dev: false
+
+ /esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /execa@5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+ dev: false
+
+ /execa@7.2.0:
+ resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==}
+ engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 4.3.1
+ is-stream: 3.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 5.1.0
+ onetime: 6.0.0
+ signal-exit: 3.0.7
+ strip-final-newline: 3.0.0
+ dev: false
+
+ /fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ dev: false
+
+ /fast-glob@3.3.1:
+ resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
+ engines: {node: '>=8.6.0'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.5
+ dev: false
+
+ /fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ dev: false
+
+ /fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ dev: false
+
+ /fastq@1.15.0:
+ resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
+ dependencies:
+ reusify: 1.0.4
+ dev: false
+
+ /file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flat-cache: 3.0.4
+ dev: false
+
+ /file-saver@2.0.5:
+ resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==}
+ dev: false
+
+ /fill-range@7.0.1:
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: false
+
+ /find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+ dev: false
+
+ /flat-cache@3.0.4:
+ resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flatted: 3.2.7
+ rimraf: 3.0.2
+ dev: false
+
+ /flatted@3.2.7:
+ resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
+ dev: false
+
+ /for-each@0.3.3:
+ resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
+ dependencies:
+ is-callable: 1.2.7
+ dev: false
+
+ /fraction.js@4.2.0:
+ resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
+ dev: false
+
+ /fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ dev: false
+
+ /fsevents@2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /function-bind@1.1.1:
+ resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
+ dev: false
+
+ /function.prototype.name@1.1.5:
+ resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ functions-have-names: 1.2.3
+ dev: false
+
+ /functions-have-names@1.2.3:
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ dev: false
+
+ /get-intrinsic@1.2.1:
+ resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
+ dependencies:
+ function-bind: 1.1.1
+ has: 1.0.3
+ has-proto: 1.0.1
+ has-symbols: 1.0.3
+ dev: false
+
+ /get-stream@6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /get-symbol-description@1.0.0:
+ resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ get-intrinsic: 1.2.1
+ dev: false
+
+ /get-tsconfig@4.6.2:
+ resolution: {integrity: sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==}
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+ dev: false
+
+ /glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: false
+
+ /glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: false
+
+ /glob-to-regexp@0.4.1:
+ resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
+ dev: false
+
+ /glob@7.1.6:
+ resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: false
+
+ /glob@7.1.7:
+ resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: false
+
+ /glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: false
+
+ /globals@13.20.0:
+ resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.20.2
+ dev: false
+
+ /globalthis@1.0.3:
+ resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-properties: 1.2.0
+ dev: false
+
+ /globby@11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.3.1
+ ignore: 5.2.4
+ merge2: 1.4.1
+ slash: 3.0.0
+ dev: false
+
+ /globby@13.2.2:
+ resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ dir-glob: 3.0.1
+ fast-glob: 3.3.1
+ ignore: 5.2.4
+ merge2: 1.4.1
+ slash: 4.0.0
+ dev: false
+
+ /gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+ dependencies:
+ get-intrinsic: 1.2.1
+ dev: false
+
+ /graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+ dev: false
+
+ /graphemer@1.4.0:
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+ dev: false
+
+ /has-bigints@1.0.2:
+ resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
+ dev: false
+
+ /has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /has-property-descriptors@1.0.0:
+ resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
+ dependencies:
+ get-intrinsic: 1.2.1
+ dev: false
+
+ /has-proto@1.0.1:
+ resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
+ /has-symbols@1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
+ /has-tostringtag@1.0.0:
+ resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.3
+ dev: false
+
+ /has@1.0.3:
+ resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
+ engines: {node: '>= 0.4.0'}
+ dependencies:
+ function-bind: 1.1.1
+ dev: false
+
+ /human-signals@2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+ dev: false
+
+ /human-signals@4.3.1:
+ resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
+ engines: {node: '>=14.18.0'}
+ dev: false
+
+ /ignore@5.2.4:
+ resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
+ engines: {node: '>= 4'}
+ dev: false
+
+ /immediate@3.0.6:
+ resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
+ dev: false
+
+ /import-fresh@3.3.0:
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+ engines: {node: '>=6'}
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+ dev: false
+
+ /imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+ dev: false
+
+ /inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+ dev: false
+
+ /inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ dev: false
+
+ /internal-slot@1.0.5:
+ resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.2.1
+ has: 1.0.3
+ side-channel: 1.0.4
+ dev: false
+
+ /is-array-buffer@3.0.2:
+ resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
+ dependencies:
+ call-bind: 1.0.2
+ get-intrinsic: 1.2.1
+ is-typed-array: 1.1.12
+ dev: false
+
+ /is-bigint@1.0.4:
+ resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+ dependencies:
+ has-bigints: 1.0.2
+ dev: false
+
+ /is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+ dev: false
+
+ /is-boolean-object@1.1.2:
+ resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ has-tostringtag: 1.0.0
+ dev: false
+
+ /is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
+ /is-core-module@2.12.1:
+ resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
+ dependencies:
+ has: 1.0.3
+ dev: false
+
+ /is-date-object@1.0.5:
+ resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.0
+ dev: false
+
+ /is-docker@2.2.1:
+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dev: false
+
+ /is-docker@3.0.0:
+ resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ hasBin: true
+ dev: false
+
+ /is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: false
+
+ /is-inside-container@1.0.0:
+ resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
+ engines: {node: '>=14.16'}
+ hasBin: true
+ dependencies:
+ is-docker: 3.0.0
+ dev: false
+
+ /is-negative-zero@2.0.2:
+ resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
+ /is-number-object@1.0.7:
+ resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.0
+ dev: false
+
+ /is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+ dev: false
+
+ /is-path-inside@3.0.3:
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /is-regex@1.1.4:
+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ has-tostringtag: 1.0.0
+ dev: false
+
+ /is-shared-array-buffer@1.0.2:
+ resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
+ dependencies:
+ call-bind: 1.0.2
+ dev: false
+
+ /is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /is-stream@3.0.0:
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: false
+
+ /is-string@1.0.7:
+ resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.0
+ dev: false
+
+ /is-symbol@1.0.4:
+ resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.3
+ dev: false
+
+ /is-typed-array@1.1.12:
+ resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ which-typed-array: 1.1.11
+ dev: false
+
+ /is-weakref@1.0.2:
+ resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+ dependencies:
+ call-bind: 1.0.2
+ dev: false
+
+ /is-wsl@2.2.0:
+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
+ engines: {node: '>=8'}
+ dependencies:
+ is-docker: 2.2.1
+ dev: false
+
+ /isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+ dev: false
+
+ /isarray@2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+ dev: false
+
+ /isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ dev: false
+
+ /jiti@1.19.1:
+ resolution: {integrity: sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==}
+ hasBin: true
+ dev: false
+
+ /js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ dev: false
+
+ /js-yaml@4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+ dev: false
+
+ /json-bigint@1.0.0:
+ resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==}
+ dependencies:
+ bignumber.js: 9.1.1
+ dev: false
+
+ /json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ dev: false
+
+ /json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ dev: false
+
+ /json5@1.0.2:
+ resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.8
+ dev: false
+
+ /jsx-ast-utils@3.3.5:
+ resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
+ engines: {node: '>=4.0'}
+ dependencies:
+ array-includes: 3.1.6
+ array.prototype.flat: 1.3.1
+ object.assign: 4.1.4
+ object.values: 1.1.6
+ dev: false
+
+ /jszip@3.10.1:
+ resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
+ dependencies:
+ lie: 3.3.0
+ pako: 1.0.11
+ readable-stream: 2.3.8
+ setimmediate: 1.0.5
+ dev: false
+
+ /language-subtag-registry@0.3.22:
+ resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
+ dev: false
+
+ /language-tags@1.0.5:
+ resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==}
+ dependencies:
+ language-subtag-registry: 0.3.22
+ dev: false
+
+ /levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ dev: false
+
+ /lie@3.3.0:
+ resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
+ dependencies:
+ immediate: 3.0.6
+ dev: false
+
+ /lilconfig@2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ dev: false
+
+ /locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-locate: 5.0.0
+ dev: false
+
+ /lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ dev: false
+
+ /loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+ dependencies:
+ js-tokens: 4.0.0
+ dev: false
+
+ /lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+ dependencies:
+ yallist: 4.0.0
+ dev: false
+
+ /merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+ dev: false
+
+ /merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+ dev: false
+
+ /micromatch@4.0.5:
+ resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+ engines: {node: '>=8.6'}
+ dependencies:
+ braces: 3.0.2
+ picomatch: 2.3.1
+ dev: false
+
+ /mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /mimic-fn@4.0.0:
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ dependencies:
+ brace-expansion: 1.1.11
+ dev: false
+
+ /minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+ dev: false
+
+ /ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+ dev: false
+
+ /ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ dev: false
+
+ /mz@2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
+ dev: false
+
+ /nanoid@3.3.6:
+ resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: false
+
+ /natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ dev: false
+
+ /next@13.4.12(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==}
+ engines: {node: '>=16.8.0'}
+ hasBin: true
+ peerDependencies:
+ '@opentelemetry/api': ^1.1.0
+ fibers: '>= 3.1.0'
+ react: ^18.2.0
+ react-dom: ^18.2.0
+ sass: ^1.3.0
+ peerDependenciesMeta:
+ '@opentelemetry/api':
+ optional: true
+ fibers:
+ optional: true
+ sass:
+ optional: true
+ dependencies:
+ '@next/env': 13.4.12
+ '@swc/helpers': 0.5.1
+ busboy: 1.6.0
+ caniuse-lite: 1.0.30001518
+ postcss: 8.4.14
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ styled-jsx: 5.1.1(react@18.2.0)
+ watchpack: 2.4.0
+ zod: 3.21.4
+ optionalDependencies:
+ '@next/swc-darwin-arm64': 13.4.12
+ '@next/swc-darwin-x64': 13.4.12
+ '@next/swc-linux-arm64-gnu': 13.4.12
+ '@next/swc-linux-arm64-musl': 13.4.12
+ '@next/swc-linux-x64-gnu': 13.4.12
+ '@next/swc-linux-x64-musl': 13.4.12
+ '@next/swc-win32-arm64-msvc': 13.4.12
+ '@next/swc-win32-ia32-msvc': 13.4.12
+ '@next/swc-win32-x64-msvc': 13.4.12
+ transitivePeerDependencies:
+ - '@babel/core'
+ - babel-plugin-macros
+ dev: false
+
+ /node-releases@2.0.13:
+ resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
+ dev: false
+
+ /normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /normalize-range@0.1.2:
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /npm-run-path@4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-key: 3.1.1
+ dev: false
+
+ /npm-run-path@5.1.0:
+ resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ path-key: 4.0.0
+ dev: false
+
+ /object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /object-hash@3.0.0:
+ resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /object-inspect@1.12.3:
+ resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
+ dev: false
+
+ /object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
+ /object.assign@4.1.4:
+ resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ has-symbols: 1.0.3
+ object-keys: 1.1.1
+ dev: false
+
+ /object.entries@1.1.6:
+ resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ dev: false
+
+ /object.fromentries@2.0.6:
+ resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ dev: false
+
+ /object.groupby@1.0.0:
+ resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ get-intrinsic: 1.2.1
+ dev: false
+
+ /object.hasown@1.1.2:
+ resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==}
+ dependencies:
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ dev: false
+
+ /object.values@1.1.6:
+ resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ dev: false
+
+ /once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ dependencies:
+ wrappy: 1.0.2
+ dev: false
+
+ /onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ mimic-fn: 2.1.0
+ dev: false
+
+ /onetime@6.0.0:
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ mimic-fn: 4.0.0
+ dev: false
+
+ /open@9.1.0:
+ resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==}
+ engines: {node: '>=14.16'}
+ dependencies:
+ default-browser: 4.0.0
+ define-lazy-prop: 3.0.0
+ is-inside-container: 1.0.0
+ is-wsl: 2.2.0
+ dev: false
+
+ /optionator@0.9.3:
+ resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ '@aashutoshrathi/word-wrap': 1.2.6
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ dev: false
+
+ /p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ yocto-queue: 0.1.0
+ dev: false
+
+ /p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-limit: 3.1.0
+ dev: false
+
+ /pako@1.0.11:
+ resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
+ dev: false
+
+ /parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+ dependencies:
+ callsites: 3.1.0
+ dev: false
+
+ /path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /path-key@4.0.0:
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ dev: false
+
+ /path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /picocolors@1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+ dev: false
+
+ /picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+ dev: false
+
+ /pify@2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /pirates@4.0.6:
+ resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /postcss-import@15.1.0(postcss@8.4.27):
+ resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+ dependencies:
+ postcss: 8.4.27
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.2
+ dev: false
+
+ /postcss-js@4.0.1(postcss@8.4.27):
+ resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
+ engines: {node: ^12 || ^14 || >= 16}
+ peerDependencies:
+ postcss: ^8.4.21
+ dependencies:
+ camelcase-css: 2.0.1
+ postcss: 8.4.27
+ dev: false
+
+ /postcss-load-config@4.0.1(postcss@8.4.27):
+ resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ lilconfig: 2.1.0
+ postcss: 8.4.27
+ yaml: 2.3.1
+ dev: false
+
+ /postcss-nested@6.0.1(postcss@8.4.27):
+ resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
+ engines: {node: '>=12.0'}
+ peerDependencies:
+ postcss: ^8.2.14
+ dependencies:
+ postcss: 8.4.27
+ postcss-selector-parser: 6.0.13
+ dev: false
+
+ /postcss-selector-parser@6.0.13:
+ resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+ dev: false
+
+ /postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+ dev: false
+
+ /postcss@8.4.14:
+ resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.6
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+ dev: false
+
+ /postcss@8.4.27:
+ resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.6
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+ dev: false
+
+ /prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+ dev: false
+
+ /process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+ dev: false
+
+ /prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+ dev: false
+
+ /punycode@2.3.0:
+ resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ dev: false
+
+ /react-dom@18.2.0(react@18.2.0):
+ resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
+ peerDependencies:
+ react: ^18.2.0
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.2.0
+ scheduler: 0.23.0
+ dev: false
+
+ /react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+ dev: false
+
+ /react@18.2.0:
+ resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: false
+
+ /read-cache@1.0.0:
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+ dependencies:
+ pify: 2.3.0
+ dev: false
+
+ /readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+ dev: false
+
+ /readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+ dev: false
+
+ /regenerator-runtime@0.13.11:
+ resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
+ dev: false
+
+ /regexp.prototype.flags@1.5.0:
+ resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ functions-have-names: 1.2.3
+ dev: false
+
+ /resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+ dev: false
+
+ /resolve@1.22.2:
+ resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.12.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ dev: false
+
+ /resolve@1.22.3:
+ resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.12.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ dev: false
+
+ /resolve@2.0.0-next.4:
+ resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.12.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ dev: false
+
+ /reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ dev: false
+
+ /rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ hasBin: true
+ dependencies:
+ glob: 7.2.3
+ dev: false
+
+ /run-applescript@5.0.0:
+ resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==}
+ engines: {node: '>=12'}
+ dependencies:
+ execa: 5.1.1
+ dev: false
+
+ /run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ dependencies:
+ queue-microtask: 1.2.3
+ dev: false
+
+ /safe-array-concat@1.0.0:
+ resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==}
+ engines: {node: '>=0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ get-intrinsic: 1.2.1
+ has-symbols: 1.0.3
+ isarray: 2.0.5
+ dev: false
+
+ /safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+ dev: false
+
+ /safe-regex-test@1.0.0:
+ resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
+ dependencies:
+ call-bind: 1.0.2
+ get-intrinsic: 1.2.1
+ is-regex: 1.1.4
+ dev: false
+
+ /scheduler@0.23.0:
+ resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: false
+
+ /semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+ dev: false
+
+ /semver@7.5.4:
+ resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ lru-cache: 6.0.0
+ dev: false
+
+ /setimmediate@1.0.5:
+ resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
+ dev: false
+
+ /shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+ dependencies:
+ shebang-regex: 3.0.0
+ dev: false
+
+ /shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /side-channel@1.0.4:
+ resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
+ dependencies:
+ call-bind: 1.0.2
+ get-intrinsic: 1.2.1
+ object-inspect: 1.12.3
+ dev: false
+
+ /signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ dev: false
+
+ /slash@3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /slash@4.0.0:
+ resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /source-map-js@1.0.2:
+ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /streamsearch@1.1.0:
+ resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
+ engines: {node: '>=10.0.0'}
+ dev: false
+
+ /string.prototype.matchall@4.0.8:
+ resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ get-intrinsic: 1.2.1
+ has-symbols: 1.0.3
+ internal-slot: 1.0.5
+ regexp.prototype.flags: 1.5.0
+ side-channel: 1.0.4
+ dev: false
+
+ /string.prototype.trim@1.2.7:
+ resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ dev: false
+
+ /string.prototype.trimend@1.0.6:
+ resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ dev: false
+
+ /string.prototype.trimstart@1.0.6:
+ resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.2.0
+ es-abstract: 1.22.1
+ dev: false
+
+ /string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+ dependencies:
+ safe-buffer: 5.1.2
+ dev: false
+
+ /strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-regex: 5.0.1
+ dev: false
+
+ /strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /strip-final-newline@2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /strip-final-newline@3.0.0:
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /styled-jsx@5.1.1(react@18.2.0):
+ resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
+ engines: {node: '>= 12.0.0'}
+ peerDependencies:
+ '@babel/core': '*'
+ babel-plugin-macros: '*'
+ react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ babel-plugin-macros:
+ optional: true
+ dependencies:
+ client-only: 0.0.1
+ react: 18.2.0
+ dev: false
+
+ /sucrase@3.34.0:
+ resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.3
+ commander: 4.1.1
+ glob: 7.1.6
+ lines-and-columns: 1.2.4
+ mz: 2.7.0
+ pirates: 4.0.6
+ ts-interface-checker: 0.1.13
+ dev: false
+
+ /supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ dev: false
+
+ /supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
+ /synckit@0.8.5:
+ resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ dependencies:
+ '@pkgr/utils': 2.4.2
+ tslib: 2.6.1
+ dev: false
+
+ /tailwindcss@3.3.3:
+ resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+ dependencies:
+ '@alloc/quick-lru': 5.2.0
+ arg: 5.0.2
+ chokidar: 3.5.3
+ didyoumean: 1.2.2
+ dlv: 1.1.3
+ fast-glob: 3.3.1
+ glob-parent: 6.0.2
+ is-glob: 4.0.3
+ jiti: 1.19.1
+ lilconfig: 2.1.0
+ micromatch: 4.0.5
+ normalize-path: 3.0.0
+ object-hash: 3.0.0
+ picocolors: 1.0.0
+ postcss: 8.4.27
+ postcss-import: 15.1.0(postcss@8.4.27)
+ postcss-js: 4.0.1(postcss@8.4.27)
+ postcss-load-config: 4.0.1(postcss@8.4.27)
+ postcss-nested: 6.0.1(postcss@8.4.27)
+ postcss-selector-parser: 6.0.13
+ resolve: 1.22.2
+ sucrase: 3.34.0
+ transitivePeerDependencies:
+ - ts-node
+ dev: false
+
+ /tapable@2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /text-table@0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+ dev: false
+
+ /thenify-all@1.6.0:
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ thenify: 3.3.1
+ dev: false
+
+ /thenify@3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+ dependencies:
+ any-promise: 1.3.0
+ dev: false
+
+ /titleize@3.0.0:
+ resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+ dev: false
+
+ /ts-interface-checker@0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ dev: false
+
+ /tsconfig-paths@3.14.2:
+ resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==}
+ dependencies:
+ '@types/json5': 0.0.29
+ json5: 1.0.2
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+ dev: false
+
+ /tslib@1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+ dev: false
+
+ /tslib@2.6.1:
+ resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==}
+ dev: false
+
+ /tsutils@3.21.0(typescript@5.1.6):
+ resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
+ engines: {node: '>= 6'}
+ peerDependencies:
+ typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
+ dependencies:
+ tslib: 1.14.1
+ typescript: 5.1.6
+ dev: false
+
+ /type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ dev: false
+
+ /type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /typed-array-buffer@1.0.0:
+ resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ get-intrinsic: 1.2.1
+ is-typed-array: 1.1.12
+ dev: false
+
+ /typed-array-byte-length@1.0.0:
+ resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ for-each: 0.3.3
+ has-proto: 1.0.1
+ is-typed-array: 1.1.12
+ dev: false
+
+ /typed-array-byte-offset@1.0.0:
+ resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ available-typed-arrays: 1.0.5
+ call-bind: 1.0.2
+ for-each: 0.3.3
+ has-proto: 1.0.1
+ is-typed-array: 1.1.12
+ dev: false
+
+ /typed-array-length@1.0.4:
+ resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
+ dependencies:
+ call-bind: 1.0.2
+ for-each: 0.3.3
+ is-typed-array: 1.1.12
+ dev: false
+
+ /typescript@5.1.6:
+ resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+ dev: false
+
+ /unbox-primitive@1.0.2:
+ resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
+ dependencies:
+ call-bind: 1.0.2
+ has-bigints: 1.0.2
+ has-symbols: 1.0.3
+ which-boxed-primitive: 1.0.2
+ dev: false
+
+ /untildify@4.0.0:
+ resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /update-browserslist-db@1.0.11(browserslist@4.21.10):
+ resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.21.10
+ escalade: 3.1.1
+ picocolors: 1.0.0
+ dev: false
+
+ /uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ dependencies:
+ punycode: 2.3.0
+ dev: false
+
+ /util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ dev: false
+
+ /watchpack@2.4.0:
+ resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
+ dev: false
+
+ /which-boxed-primitive@1.0.2:
+ resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+ dependencies:
+ is-bigint: 1.0.4
+ is-boolean-object: 1.1.2
+ is-number-object: 1.0.7
+ is-string: 1.0.7
+ is-symbol: 1.0.4
+ dev: false
+
+ /which-typed-array@1.1.11:
+ resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ available-typed-arrays: 1.0.5
+ call-bind: 1.0.2
+ for-each: 0.3.3
+ gopd: 1.0.1
+ has-tostringtag: 1.0.0
+ dev: false
+
+ /which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+ dev: false
+
+ /wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+ dev: false
+
+ /yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ dev: false
+
+ /yaml@2.3.1:
+ resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==}
+ engines: {node: '>= 14'}
+ dev: false
+
+ /yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /zod@3.21.4:
+ resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==}
+ dev: false
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..33ad091
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+}
diff --git a/public/data/circuit b/public/data/circuit
new file mode 100644
index 0000000..74b27dd
--- /dev/null
+++ b/public/data/circuit
@@ -0,0 +1,48 @@
+{
+ "run_args": {
+ "tolerance": {
+ "Abs": {
+ "val": 0
+ }
+ },
+ "scale": 0,
+ "bits": 5,
+ "logrows": 7,
+ "batch_size": 1,
+ "input_visibility": "Private",
+ "output_visibility": "Public",
+ "param_visibility": "Private",
+ "allocated_constraints": null
+ },
+ "num_constraints": 24,
+ "model_instance_shapes": [
+ [
+ 1,
+ 4
+ ]
+ ],
+ "module_sizes": {
+ "poseidon": [
+ 0,
+ [
+ 0
+ ]
+ ],
+ "elgamal": [
+ 0,
+ [
+ 0,
+ 0,
+ 0
+ ]
+ ]
+ },
+ "required_lookups": [
+ {
+ "ReLU": {
+ "scale": 1
+ }
+ }
+ ],
+ "check_mode": "SAFE"
+}
\ No newline at end of file
diff --git a/public/data/kzg b/public/data/kzg
new file mode 100644
index 0000000..652e96a
Binary files /dev/null and b/public/data/kzg differ
diff --git a/public/data/message b/public/data/message
new file mode 100644
index 0000000..2495134
--- /dev/null
+++ b/public/data/message
@@ -0,0 +1 @@
+[[0, 0, 0, 0],[1, 0, 0, 0]]
\ No newline at end of file
diff --git a/public/data/settings.json b/public/data/settings.json
new file mode 100644
index 0000000..81eeacf
--- /dev/null
+++ b/public/data/settings.json
@@ -0,0 +1,32 @@
+{
+ "run_args": {
+ "tolerance": {
+ "val": 0.0,
+ "scales": [1, 1]
+ },
+ "scale": 0,
+ "bits": 5,
+ "logrows": 7,
+ "batch_size": 1,
+ "input_visibility": "Private",
+ "output_visibility": "Public",
+ "param_visibility": "Private",
+ "allocated_constraints": null
+ },
+ "version": "0.0.0-git",
+ "num_constraints": 24,
+ "model_output_scales": [7],
+ "model_instance_shapes": [[1, 4]],
+ "module_sizes": {
+ "poseidon": [0, [0]],
+ "elgamal": [0, [0, 0, 0]]
+ },
+ "required_lookups": [
+ {
+ "ReLU": {
+ "scale": 1
+ }
+ }
+ ],
+ "check_mode": "SAFE"
+}
diff --git a/public/data/test.key b/public/data/test.key
new file mode 100644
index 0000000..9a843aa
Binary files /dev/null and b/public/data/test.key differ
diff --git a/public/data/test.onnx b/public/data/test.onnx
new file mode 100644
index 0000000..3e22eb0
Binary files /dev/null and b/public/data/test.onnx differ
diff --git a/public/data/test.proof b/public/data/test.proof
new file mode 100644
index 0000000..e34893e
--- /dev/null
+++ b/public/data/test.proof
@@ -0,0 +1 @@
+{"instances":[[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]],"proof":"0d14727cd95987ba78785a7eb48e9c6d5b3953e0de87cee5656871f7fae2674f0e5e05b0a9cd50995d1d2c69ae612aab36d1b69c61c30826f70ef638deb20983156d71f29910082e38ee862b5b392c33033fb249486c38b6272bde27e6f67969147d6be2c5a1f35dd26cb13da126a51e3f88b691be4f83d8e589b0b4d016f56629c642b6ad98d9c7758c99f315d16422e01203fa1091cfeafd19228558b1e3010c13b6eb63cc8b5c3a6e2a07175baa2cf376efca85fd5867f621a51e43650e740296f0330bc158e6f10334eb6f37acc279f84c05a71817b725c800ea488bb2020a0f2d2eed490fbcc47891e524536fdd10f7f932996730ac90ed50b8d839bc4c26174569978c389c09f58e113686a6c704f2dc03f3938e20ed425278296d10941114df1e8b57c5b0d2c27f87ead2a594f9c34160281cc5b91aec6c94389b992e0ee90e609751045b37ad3ec4e58788dc7622a1b6a588ca33f97388c12fc615381065ed07b7b522392224c27dd50671f541818306618420d494886fa5c6d599601490384485155dd25f5d2c81d4bc7797836acb921ba9110e6c48385366fdcecd0636a2ffcc02c7072862b61373e21975fac694a556640ba30e64ccd78149e5042b57e8424ce9370c7a75597f824ca057e92b965ecac9cd26f0d5c0130df965be003c8b23fdff269814cc43c4e678e1c889652afb63912753b73193a1e754baa31e298a3d251eb9a6c70eebbb6175e666facd07e2b3b241fd37e5c676f32231c62a8ee5b010b079b1bc069e3ababe161b2b095ff58475b9aa199c5d4b32a5153f20a0d0d8763eaac3151cbf4db0405e4919abf1eafed993df5e9dd6494a2b807e075a90e35819c3a600ede73fd361745abb548cd339c465f3e5b04353b728fab12e7fef3822693b552e1dbffd0b4509b696e8dd29eeaa663c8f0e5e3522d4559d111c771c5a46f8817da57d13caaf9d5e834f9b163002dde45b3cf08ad890f49f0a2fab4fde4fc49e06d46ad564efd58f9fc93fc3f9f4ccbed7343208a1d946690f19b7779a4e0994134765ab34692b4f2c83a7d28ea720f7011563220f7b4cf214a0d0d0da3ba9f7c04b56d11f75d837b77e959454b171bb814005ee125248b109ba3fffd73df4765b8ee726af046bbadc090e044c75debc106b46f886838e3e028fcc450c8209edae7f023d252e7645b5448e1509827f751d9c47aef14e63be2a1479ffe7e5f8d2277d8d080a6f563e12443efa4f68e58766ecfc5d63251ab5217eedc3f656791f7ddf8646f21f7dff92011b38d625ecf55856a49b2c409f1f2343b47906ad5df1959fb237ea6d7970eb894fa24ecef5f6044b37d73ee6c97a00000000000000000000000000000000000000000000000000000000000000000d1f9fa8b2eaffb104124ca6a749e6fa7e953ce7db6bd0f76d98623ac969941e27231684059a51cd38231da05f167414de166d7159123648d431ec151b45c9aa1cf594b4081db9c9954871c26382eddb5bc448ea3fe5a8c2a9f4436530003a6419c60d34cc03891de3e5173057666077751d9dfb51a129c05e1098cd8f51555103eb352bf5b4677075c40092a5fe957326c6918a0a28255ca369f5793a3832b92686324a7bda56ec16ba858242a386949297c4d893c19a0ecd496e0552b8245700000000000000000000000000000000000000000000000000000000000000001cc8b5d56e277b2a5af1b46bd3e91bfe103a5719744d801ddbe46f0ee76fd9db11cdbecac32c320bc7c8fd85d443328b7ce0037ff7cc2af236b84855fccac15c05d030e14b04f55264ff2c09db98c19377720409a1e5742c8102afb6f742b36f1d5826412da6828c70f520651827ac47fdc0dd2ea6f2a1ad25ab57afd8b2f0f713cf4c57b992e029a465bd11661c53b88bc47edcbab15018d344c176d42c5207098059740720dc447864ad48511444b45ef510e395d870d5d1e36e0d05bfe1e408836b41fde46c669939220e688d8f2b03a13bad29b4a8a8e65f4783c317bd092e7c937ac130aae997f3abb3c51f8e49e5db8908bfcb7879d451a88ce12429b00b031f6aa4f2784baede58dc19a3ad06ffb784b81c22b6da91203f2fd1cdd03d15b6a481c1768e72f87fc3630534ef3f979fb63f21a83f3eea0e9ac10e0cda32195b48731a941f14064600e72a5664d12d9996cbe3b745427392165b2a1af840183174b7599e3331fe4e5c1958b29574a8d6748d69f93f05700fec1a531de98206f54d380ee51f5d25b479417df40b10500356be23d3c8d9807bebd035fb1fd706c7b4acc37fb7b02d69e8b32c0f7a69f4fdba05492ff2ac3c904b366688b2ba08cf528152e7ccf5a7c53399aa2ee58771a925ae22347b5a5f3096cdb5c0a80c1158867ce8b6c1126ba3cd3916220e97821ccfb3bb227f2829438f891e6ed4101e038a5904bfd30e03380df59c467e04cb1b6dd0c5ba2f6415b944b5d641f60e0b13628cfbd79dced1caee06bb3af616303779e66c3e1866ce8e918ca173ea00253b064ca3241d7792d95b6cc1f578b330169cfae8dd88ca6c9e854c0624c6fc28cec21aa0e5a17eda2ac613319e201eafd9b002fb66e4f112af8e9d3a3ae2950f9b1c63e990f8010f1a56302ebc2fc2425fa2c54c8a49094989cb175f112eab2ae43b1c6d5fd489279b66c4722bcd652e3ff9424c5b1dbeec33dac93144602e13f4986e22537227cb4e06aaec12ab8064d93af995ca7e974f6e1f17b51771e11e06827c2c0d1dc307e7eb443522111c85dedd39c8172fd3b71ec3e675bc1e58","transcript_type":"EVM","protocol":{"domain":{"k":6,"n":64,"n_inv":[0,0,0,288230376151711744],"gen":[13065489725457997378,11211756437640344014,7238224585957573902,708111906564994541],"gen_inv":[12835574056175175549,9273301601072327479,17618698331133403535,2628560312543510721]},"preprocessed":[{"x":[0,0,0,0],"y":[0,0,0,0]},{"x":[15892520050510230344,17374574942102605775,5318356770787522907,1787743409480761049],"y":[6739641715635189184,3855943783057599807,7713725374243272979,802902418015120106]},{"x":[16363051564853346422,7795052860770989663,8556478298616703674,2748138783290834923],"y":[13087487910584912942,9135413512532872644,7187901193922462619,2445734187906676520]},{"x":[18078126832532011473,407958784062439123,16881660600404021598,271434827356920418],"y":[7976827836822365952,6512423876463944241,27297205003289957,2120491631363284058]},{"x":[4042182506291063351,17762436592368288829,563765780385385476,189391611199961240],"y":[7426883431255098890,17552770502768534744,16053906895097945438,928636482639766197]},{"x":[15707345497003175353,6944847732196239726,5401353920877483623,1564807458096334950],"y":[5619333246300709873,14422384534865441879,11141811562108260505,261082017964298205]},{"x":[6085740493390165041,16280591500755705125,1231817382749998078,777845521977218103],"y":[14116331477026245918,7924134066871610406,272301758049638237,1481909996718938050]},{"x":[0,0,0,0],"y":[0,0,0,0]},{"x":[2145335927969286093,3252996053964890716,4653468741012836112,249323789115533759],"y":[16136298802093138716,5383131027651607402,5837786430425894741,1264245050482005446]},{"x":[1755968792829191479,9116724571222804812,4912151205534017703,1231646927750292988],"y":[8013431788850405672,9987230650743940402,8610555232284450477,878790299842750285]},{"x":[14662887090101874985,10603130267246623575,16805703951545382367,2193944558320014800],"y":[17996551379761385358,14616193245962519385,17350239694923460177,937807217116833033]},{"x":[14337148894628172238,17381737515822767674,8427233820585994239,874146233140047746],"y":[13782742031865123994,3615121272283125859,7411366692924579120,3175815460888651889]},{"x":[2053425909763113988,8635405453899921881,6754106819062520147,3161518507209143189],"y":[3921084984809054090,1873649054155158520,17501099108056964912,1265681626307071133]}],"num_instance":[4],"num_witness":[3,2,4],"num_challenge":[1,2,1],"evaluations":[{"poly":14,"rotation":0},{"poly":15,"rotation":0},{"poly":16,"rotation":0},{"poly":16,"rotation":-1},{"poly":0,"rotation":0},{"poly":1,"rotation":0},{"poly":2,"rotation":0},{"poly":3,"rotation":0},{"poly":4,"rotation":0},{"poly":5,"rotation":0},{"poly":6,"rotation":0},{"poly":7,"rotation":0},{"poly":22,"rotation":0},{"poly":8,"rotation":0},{"poly":9,"rotation":0},{"poly":10,"rotation":0},{"poly":11,"rotation":0},{"poly":12,"rotation":0},{"poly":19,"rotation":0},{"poly":19,"rotation":1},{"poly":19,"rotation":-6},{"poly":20,"rotation":0},{"poly":20,"rotation":1},{"poly":21,"rotation":0},{"poly":21,"rotation":1},{"poly":17,"rotation":0},{"poly":17,"rotation":-1},{"poly":18,"rotation":0}],"queries":[{"poly":14,"rotation":0},{"poly":15,"rotation":0},{"poly":16,"rotation":0},{"poly":16,"rotation":-1},{"poly":19,"rotation":0},{"poly":19,"rotation":1},{"poly":20,"rotation":0},{"poly":20,"rotation":1},{"poly":19,"rotation":-6},{"poly":21,"rotation":0},{"poly":17,"rotation":0},{"poly":18,"rotation":0},{"poly":17,"rotation":-1},{"poly":21,"rotation":1},{"poly":0,"rotation":0},{"poly":1,"rotation":0},{"poly":2,"rotation":0},{"poly":3,"rotation":0},{"poly":4,"rotation":0},{"poly":5,"rotation":0},{"poly":6,"rotation":0},{"poly":7,"rotation":0},{"poly":8,"rotation":0},{"poly":9,"rotation":0},{"poly":10,"rotation":0},{"poly":11,"rotation":0},{"poly":12,"rotation":0},{"poly":23,"rotation":0},{"poly":22,"rotation":0}],"quotient":{"chunk_degree":1,"num_chunk":4,"numerator":{"DistributePowers":[[{"Product":[{"Product":[{"Product":[{"Polynomial":{"poly":4,"rotation":0}},{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"Polynomial":{"poly":4,"rotation":0}}}]}]},{"Sum":[{"Constant":[6425625360762666998,7924344314350639699,14762033076929465436,2023505479389396574]},{"Negated":{"Polynomial":{"poly":4,"rotation":0}}}]}]},{"Sum":[{"Polynomial":{"poly":16,"rotation":0}},{"Negated":{"Sum":[{"Product":[{"Polynomial":{"poly":14,"rotation":0}},{"Polynomial":{"poly":15,"rotation":0}}]},{"Polynomial":{"poly":16,"rotation":-1}}]}}]}]},{"Product":[{"Product":[{"Product":[{"Polynomial":{"poly":6,"rotation":0}},{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"Polynomial":{"poly":6,"rotation":0}}}]}]},{"Sum":[{"Constant":[6425625360762666998,7924344314350639699,14762033076929465436,2023505479389396574]},{"Negated":{"Polynomial":{"poly":6,"rotation":0}}}]}]},{"Sum":[{"Polynomial":{"poly":16,"rotation":0}},{"Negated":{"Polynomial":{"poly":15,"rotation":0}}}]}]},{"Product":[{"Product":[{"Product":[{"Polynomial":{"poly":4,"rotation":0}},{"Sum":[{"Constant":[6425625360762666998,7924344314350639699,14762033076929465436,2023505479389396574]},{"Negated":{"Polynomial":{"poly":4,"rotation":0}}}]}]},{"Sum":[{"Constant":[415066004289224689,11886516471525959549,3696305541684646538,3035258219084094862]},{"Negated":{"Polynomial":{"poly":4,"rotation":0}}}]}]},{"Sum":[{"Polynomial":{"poly":16,"rotation":0}},{"Negated":{"Sum":[{"Polynomial":{"poly":14,"rotation":0}},{"Polynomial":{"poly":15,"rotation":0}}]}}]}]},{"Product":[{"Product":[{"Product":[{"Polynomial":{"poly":5,"rotation":0}},{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"Polynomial":{"poly":5,"rotation":0}}}]}]},{"Sum":[{"Constant":[6425625360762666998,7924344314350639699,14762033076929465436,2023505479389396574]},{"Negated":{"Polynomial":{"poly":5,"rotation":0}}}]}]},{"Sum":[{"Polynomial":{"poly":16,"rotation":0}},{"Negated":{"Product":[{"Polynomial":{"poly":14,"rotation":0}},{"Polynomial":{"poly":15,"rotation":0}}]}}]}]},{"Product":[{"Product":[{"Product":[{"Polynomial":{"poly":4,"rotation":0}},{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"Polynomial":{"poly":4,"rotation":0}}}]}]},{"Sum":[{"Constant":[415066004289224689,11886516471525959549,3696305541684646538,3035258219084094862]},{"Negated":{"Polynomial":{"poly":4,"rotation":0}}}]}]},{"Sum":[{"Polynomial":{"poly":16,"rotation":0}},{"Negated":{"Sum":[{"Polynomial":{"poly":14,"rotation":0}},{"Negated":{"Polynomial":{"poly":15,"rotation":0}}}]}}]}]},{"Product":[{"Product":[{"Product":[{"Polynomial":{"poly":5,"rotation":0}},{"Sum":[{"Constant":[6425625360762666998,7924344314350639699,14762033076929465436,2023505479389396574]},{"Negated":{"Polynomial":{"poly":5,"rotation":0}}}]}]},{"Sum":[{"Constant":[415066004289224689,11886516471525959549,3696305541684646538,3035258219084094862]},{"Negated":{"Polynomial":{"poly":5,"rotation":0}}}]}]},{"Sum":[{"Polynomial":{"poly":16,"rotation":0}},{"Negated":{"Sum":[{"Polynomial":{"poly":15,"rotation":0}},{"Polynomial":{"poly":16,"rotation":-1}}]}}]}]},{"Product":[{"Product":[{"Product":[{"Polynomial":{"poly":5,"rotation":0}},{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"Polynomial":{"poly":5,"rotation":0}}}]}]},{"Sum":[{"Constant":[415066004289224689,11886516471525959549,3696305541684646538,3035258219084094862]},{"Negated":{"Polynomial":{"poly":5,"rotation":0}}}]}]},{"Sum":[{"Polynomial":{"poly":16,"rotation":0}},{"Negated":{"Negated":{"Polynomial":{"poly":15,"rotation":0}}}}]}]},{"Product":[{"Product":[{"Product":[{"Polynomial":{"poly":6,"rotation":0}},{"Sum":[{"Constant":[6425625360762666998,7924344314350639699,14762033076929465436,2023505479389396574]},{"Negated":{"Polynomial":{"poly":6,"rotation":0}}}]}]},{"Sum":[{"Constant":[415066004289224689,11886516471525959549,3696305541684646538,3035258219084094862]},{"Negated":{"Polynomial":{"poly":6,"rotation":0}}}]}]},{"Sum":[{"Polynomial":{"poly":15,"rotation":0}},{"Negated":{"Polynomial":{"poly":16,"rotation":0}}}]}]},{"Product":[{"Product":[{"Product":[{"Polynomial":{"poly":6,"rotation":0}},{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"Polynomial":{"poly":6,"rotation":0}}}]}]},{"Sum":[{"Constant":[415066004289224689,11886516471525959549,3696305541684646538,3035258219084094862]},{"Negated":{"Polynomial":{"poly":6,"rotation":0}}}]}]},{"Polynomial":{"poly":15,"rotation":0}}]},{"Product":[{"Polynomial":{"poly":7,"rotation":0}},{"Product":[{"Polynomial":{"poly":15,"rotation":0}},{"Sum":[{"Polynomial":{"poly":15,"rotation":0}},{"Negated":{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]}}]}]}]},{"Product":[{"CommonPolynomial":{"Lagrange":0}},{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"Polynomial":{"poly":19,"rotation":0}}}]}]},{"Product":[{"CommonPolynomial":{"Lagrange":-6}},{"Sum":[{"Product":[{"Polynomial":{"poly":20,"rotation":0}},{"Polynomial":{"poly":20,"rotation":0}}]},{"Negated":{"Polynomial":{"poly":20,"rotation":0}}}]}]},{"Product":[{"CommonPolynomial":{"Lagrange":0}},{"Sum":[{"Polynomial":{"poly":20,"rotation":0}},{"Negated":{"Polynomial":{"poly":19,"rotation":-6}}}]}]},{"Product":[{"Sum":[{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"CommonPolynomial":{"Lagrange":-6}}}]},{"Negated":{"Sum":[{"Sum":[{"Sum":[{"Sum":[{"CommonPolynomial":{"Lagrange":-5}},{"CommonPolynomial":{"Lagrange":-4}}]},{"CommonPolynomial":{"Lagrange":-3}}]},{"CommonPolynomial":{"Lagrange":-2}}]},{"CommonPolynomial":{"Lagrange":-1}}]}}]},{"Sum":[{"Product":[{"Polynomial":{"poly":19,"rotation":1}},{"Product":[{"Product":[{"Sum":[{"Sum":[{"Polynomial":{"poly":14,"rotation":0}},{"Product":[{"Challenge":1},{"Polynomial":{"poly":8,"rotation":0}}]}]},{"Challenge":2}]},{"Sum":[{"Sum":[{"Polynomial":{"poly":15,"rotation":0}},{"Product":[{"Challenge":1},{"Polynomial":{"poly":9,"rotation":0}}]}]},{"Challenge":2}]}]},{"Sum":[{"Sum":[{"Polynomial":{"poly":16,"rotation":0}},{"Product":[{"Challenge":1},{"Polynomial":{"poly":10,"rotation":0}}]}]},{"Challenge":2}]}]}]},{"Negated":{"Product":[{"Polynomial":{"poly":19,"rotation":0}},{"Product":[{"Product":[{"Sum":[{"Sum":[{"Polynomial":{"poly":14,"rotation":0}},{"Product":[{"Product":[{"Challenge":1},{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]}]},{"CommonPolynomial":"Identity"}]}]},{"Challenge":2}]},{"Sum":[{"Sum":[{"Polynomial":{"poly":15,"rotation":0}},{"Product":[{"Product":[{"Challenge":1},{"Constant":[11100302345850292309,5109383341788583484,6450182039226333095,2498166472155664813]}]},{"CommonPolynomial":"Identity"}]}]},{"Challenge":2}]}]},{"Sum":[{"Sum":[{"Polynomial":{"poly":16,"rotation":0}},{"Product":[{"Product":[{"Challenge":1},{"Constant":[11922143911221101039,4762855335879493275,9634852812984583437,2104342265551292894]}]},{"CommonPolynomial":"Identity"}]}]},{"Challenge":2}]}]}]}}]}]},{"Product":[{"Sum":[{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"CommonPolynomial":{"Lagrange":-6}}}]},{"Negated":{"Sum":[{"Sum":[{"Sum":[{"Sum":[{"CommonPolynomial":{"Lagrange":-5}},{"CommonPolynomial":{"Lagrange":-4}}]},{"CommonPolynomial":{"Lagrange":-3}}]},{"CommonPolynomial":{"Lagrange":-2}}]},{"CommonPolynomial":{"Lagrange":-1}}]}}]},{"Sum":[{"Product":[{"Polynomial":{"poly":20,"rotation":1}},{"Product":[{"Sum":[{"Sum":[{"Polynomial":{"poly":13,"rotation":0}},{"Product":[{"Challenge":1},{"Polynomial":{"poly":11,"rotation":0}}]}]},{"Challenge":2}]},{"Sum":[{"Sum":[{"Polynomial":{"poly":0,"rotation":0}},{"Product":[{"Challenge":1},{"Polynomial":{"poly":12,"rotation":0}}]}]},{"Challenge":2}]}]}]},{"Negated":{"Product":[{"Polynomial":{"poly":20,"rotation":0}},{"Product":[{"Sum":[{"Sum":[{"Polynomial":{"poly":13,"rotation":0}},{"Product":[{"Product":[{"Challenge":1},{"Constant":[6393076176221150738,7283021187728417300,15472188617747294665,3366061389777165561]}]},{"CommonPolynomial":"Identity"}]}]},{"Challenge":2}]},{"Sum":[{"Sum":[{"Polynomial":{"poly":0,"rotation":0}},{"Product":[{"Product":[{"Challenge":1},{"Constant":[5185504448716010194,13473122879869045206,7110214824824105482,296185565312886903]}]},{"CommonPolynomial":"Identity"}]}]},{"Challenge":2}]}]}]}}]}]},{"Product":[{"CommonPolynomial":{"Lagrange":0}},{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"Polynomial":{"poly":21,"rotation":0}}}]}]},{"Product":[{"CommonPolynomial":{"Lagrange":-6}},{"Sum":[{"Product":[{"Polynomial":{"poly":21,"rotation":0}},{"Polynomial":{"poly":21,"rotation":0}}]},{"Negated":{"Polynomial":{"poly":21,"rotation":0}}}]}]},{"Product":[{"Sum":[{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"CommonPolynomial":{"Lagrange":-6}}}]},{"Negated":{"Sum":[{"Sum":[{"Sum":[{"Sum":[{"CommonPolynomial":{"Lagrange":-5}},{"CommonPolynomial":{"Lagrange":-4}}]},{"CommonPolynomial":{"Lagrange":-3}}]},{"CommonPolynomial":{"Lagrange":-2}}]},{"CommonPolynomial":{"Lagrange":-1}}]}}]},{"Sum":[{"Product":[{"Product":[{"Polynomial":{"poly":21,"rotation":1}},{"Sum":[{"Polynomial":{"poly":17,"rotation":0}},{"Challenge":1}]}]},{"Sum":[{"Polynomial":{"poly":18,"rotation":0}},{"Challenge":2}]}]},{"Negated":{"Product":[{"Product":[{"Polynomial":{"poly":21,"rotation":0}},{"Sum":[{"DistributePowers":[[{"Sum":[{"Product":[{"Polynomial":{"poly":3,"rotation":0}},{"Polynomial":{"poly":14,"rotation":0}}]},{"Scaled":[{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"Polynomial":{"poly":3,"rotation":0}}}]},[0,0,0,0]]}]},{"Sum":[{"Product":[{"Polynomial":{"poly":3,"rotation":0}},{"Polynomial":{"poly":15,"rotation":0}}]},{"Scaled":[{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"Polynomial":{"poly":3,"rotation":0}}}]},[0,0,0,0]]}]}],{"Challenge":0}]},{"Challenge":1}]}]},{"Sum":[{"DistributePowers":[[{"Polynomial":{"poly":1,"rotation":0}},{"Polynomial":{"poly":2,"rotation":0}}],{"Challenge":0}]},{"Challenge":2}]}]}}]}]},{"Product":[{"CommonPolynomial":{"Lagrange":0}},{"Sum":[{"Polynomial":{"poly":17,"rotation":0}},{"Negated":{"Polynomial":{"poly":18,"rotation":0}}}]}]},{"Product":[{"Product":[{"Sum":[{"Sum":[{"Constant":[12436184717236109307,3962172157175319849,7381016538464732718,1011752739694698287]},{"Negated":{"CommonPolynomial":{"Lagrange":-6}}}]},{"Negated":{"Sum":[{"Sum":[{"Sum":[{"Sum":[{"CommonPolynomial":{"Lagrange":-5}},{"CommonPolynomial":{"Lagrange":-4}}]},{"CommonPolynomial":{"Lagrange":-3}}]},{"CommonPolynomial":{"Lagrange":-2}}]},{"CommonPolynomial":{"Lagrange":-1}}]}}]},{"Sum":[{"Polynomial":{"poly":17,"rotation":0}},{"Negated":{"Polynomial":{"poly":18,"rotation":0}}}]}]},{"Sum":[{"Polynomial":{"poly":17,"rotation":0}},{"Negated":{"Polynomial":{"poly":17,"rotation":-1}}}]}]}],{"Challenge":3}]}},"transcript_initial_state":[14020464927531827270,4059452293250824521,4573550151647582568,1227786991152106446],"instance_committing_key":null,"linearization":null,"accumulator_indices":[]}}
\ No newline at end of file
diff --git a/public/data/test.provekey b/public/data/test.provekey
new file mode 100644
index 0000000..b23546b
Binary files /dev/null and b/public/data/test.provekey differ
diff --git a/public/data/test.witness.json b/public/data/test.witness.json
new file mode 100644
index 0000000..5bb35f3
--- /dev/null
+++ b/public/data/test.witness.json
@@ -0,0 +1,18 @@
+{
+ "inputs": [
+ [
+ [2, 0, 0, 0],
+ [1, 0, 0, 0],
+ [1, 0, 0, 0]
+ ]
+ ],
+ "outputs": [
+ [
+ [0, 0, 0, 0],
+ [0, 0, 0, 0],
+ [0, 0, 0, 0],
+ [0, 0, 0, 0]
+ ]
+ ],
+ "max_lookup_inputs": 0
+}
diff --git a/public/next.svg b/public/next.svg
new file mode 100644
index 0000000..5174b28
--- /dev/null
+++ b/public/next.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/vercel.svg b/public/vercel.svg
new file mode 100644
index 0000000..d2f8422
--- /dev/null
+++ b/public/vercel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/tailwind.config.js b/tailwind.config.js
new file mode 100644
index 0000000..8c4d1b2
--- /dev/null
+++ b/tailwind.config.js
@@ -0,0 +1,18 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ content: [
+ './pages/**/*.{js,ts,jsx,tsx,mdx}',
+ './components/**/*.{js,ts,jsx,tsx,mdx}',
+ './app/**/*.{js,ts,jsx,tsx,mdx}',
+ ],
+ theme: {
+ extend: {
+ backgroundImage: {
+ 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
+ 'gradient-conic':
+ 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
+ },
+ },
+ },
+ plugins: [],
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..23ba4fd
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,28 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": ["./*"]
+ }
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
+ "exclude": ["node_modules"]
+}
diff --git a/verification.png b/verification.png
deleted file mode 100644
index 0aa4547..0000000
Binary files a/verification.png and /dev/null differ
diff --git a/wasmwhirlwind.png b/wasmwhirlwind.png
deleted file mode 100644
index a5316e4..0000000
Binary files a/wasmwhirlwind.png and /dev/null differ