diff --git a/.dockerignore b/.dockerignore index 1e31546e2..29465bbd7 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,11 +1,12 @@ +**/node_modules +**/dist +**/.vscode +desci-server/log config dist -./node_modules .git .env desci-art-viewer desci-dapp -desci-server/node_modules local-data database -desci-server/log \ No newline at end of file diff --git a/.env.example b/.env.example index 13f1c488a..007959309 100755 --- a/.env.example +++ b/.env.example @@ -69,6 +69,10 @@ AWS_SECRET_ACCESS_KEY= # for faucet HOT_WALLET_KEY= + +# for upgrading legacy dPID's (default is ganache account #1 for local dev) +REGISTRY_OWNER_PKEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 + # https://cso-classifier.internal CSO_CLASSIFIER_API= # vscode runnable @@ -111,9 +115,6 @@ GOOGLE_DEV_API_KEY= # Unnecessary for now, not doing serverside 2step ## Configure RPC nodes (open an issue/ping us to access DeSci Labs' nodes) ETHEREUM_RPC_URL=http://host.docker.internal:8545 -# Use this for Goerli testnet -# ETHEREUM_RPC_URL=https://eth-goerli.g.alchemy.com/v2/demo - # Use this for Sepolia testnet # ETHEREUM_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/demo @@ -123,3 +124,22 @@ DPID_URL_OVERRIDE=https://dev-beta.dpid.org MUTE_PUBLISH_WORKER=false # SingleNodeLockServce MAX_LOCK_TIME=3600 # 1 hour + +DOI_PREFIX=10.62891 +CROSSREF_DOI_URL=https://doi.org + +# Cross ref api +CROSSREF_METADATA_API=https://test.crossref.org/servlet/deposit +CROSSREF_ADMIN_API=https://test.crossref.org +CROSSREF_EMAIL= +CROSSREF_LOGIN= +CROSSREF_PASSWORD= + +# Cross ref notification callback envs +CROSSREF_NOTIFY_ENDPOINT=endpoint + +# automated metadata + +# Automated metadata +AUTOMATED_METADATA_API=http://host.docker.internal:5005 +AUTOMATED_METADATA_API_KEY= \ No newline at end of file diff --git a/.env.test b/.env.test index a20e598d1..a983b8529 100644 --- a/.env.test +++ b/.env.test @@ -2,7 +2,7 @@ NODE_ENV=test PORT=5421 -IPFS_NODE_URL=http://host.docker.internal:5002 +IPFS_NODE_URL=http://host.docker.internal:5003 PUBLIC_IPFS_RESOLVER=https://ipfs.io ### Database - Postgres @@ -72,4 +72,22 @@ VSCODE_ACCESS_TOKEN= NODES_MEDIA_SERVER_URL=http://host.docker.internal:5454 REPO_SERVICE_SECRET_KEY="m8sIy5BPygBcX3+ZmMVuAA10k6w59BSCZd+Z5+VLYm4=" -REPO_SERVER_URL=http://host.docker.internal:5485 \ No newline at end of file +REPO_SERVER_URL=http://host.docker.internal:5485 + +DOI_PREFIX=10.62891 +CROSSREF_DOI_URL=https://doi.org + +# Cross ref api +CROSSREF_METADATA_API=https://test.crossref.org/servlet/deposit +CROSSREF_ADMIN_API=https://test.crossref.org +CROSSREF_API_KEY= +CROSSREF_EMAIL= +CROSSREF_LOGIN= +CROSSREF_PASSWORD= + +# Cross ref notification callback envs +CROSSREF_NOTIFY_ENDPOINT=endpoint + +# Automated metadata +AUTOMATED_METADATA_API= +AUTOMATED_METADATA_API_KEY= \ No newline at end of file diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index ec9d7259a..956ee3061 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -54,7 +54,7 @@ jobs: docker info - name: Install dependencies - run: cd desci-models && npm i -g yarn && yarn && yarn build && cd ../desci-server && yarn && cd ../desci-repo && yarn + run: cd desci-models && npm i -g yarn && yarn && yarn build && cd ../desci-server && yarn --ignore-engines && cd ../desci-repo && yarn - name: Stub contract run: | @@ -63,7 +63,7 @@ jobs: - name: Run tests run: | - cd desci-server && export DOCKER_BUILDKIT=1 && yarn && yarn test + cd desci-server && export DOCKER_BUILDKIT=1 && yarn --ignore-engines && yarn test if [ $? -ne 0 ]; then exit 1 fi diff --git a/.github/workflows/build-isolated-media-server.yaml b/.github/workflows/build-isolated-media-server.yaml index cb8ca9e8d..e963f5cf0 100644 --- a/.github/workflows/build-isolated-media-server.yaml +++ b/.github/workflows/build-isolated-media-server.yaml @@ -55,7 +55,6 @@ jobs: sudo apt-get install less echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config aws sts get-caller-identity - kubectl describe deployments - name: Build and tag the image (DEV) if: github.ref == 'refs/heads/develop' diff --git a/.github/workflows/build-nodes-media.yaml b/.github/workflows/build-nodes-media.yaml index b42f5a6e4..87906af13 100644 --- a/.github/workflows/build-nodes-media.yaml +++ b/.github/workflows/build-nodes-media.yaml @@ -54,7 +54,6 @@ jobs: sudo apt-get install less echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config aws sts get-caller-identity - kubectl describe deployments - name: Build and tag the image (DEV) if: github.ref == 'refs/heads/develop' diff --git a/.github/workflows/build-repo-server.yaml b/.github/workflows/build-repo-server.yaml index bab5513cc..ff50b44ec 100644 --- a/.github/workflows/build-repo-server.yaml +++ b/.github/workflows/build-repo-server.yaml @@ -90,7 +90,6 @@ jobs: sudo apt-get install less echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config aws sts get-caller-identity - kubectl describe deployments - name: Build and tag the image (DEV) if: github.ref == 'refs/heads/develop' diff --git a/.github/workflows/build-reverse-proxy.yaml b/.github/workflows/build-reverse-proxy.yaml index 9cfcb68bd..c2512f9a9 100644 --- a/.github/workflows/build-reverse-proxy.yaml +++ b/.github/workflows/build-reverse-proxy.yaml @@ -49,7 +49,6 @@ jobs: sudo apt-get install less echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config aws sts get-caller-identity - kubectl describe deployments - name: Build and tag the image (DEV) if: github.ref == 'refs/heads/develop' diff --git a/.github/workflows/build-server.yaml b/.github/workflows/build-server.yaml index 037c538a6..ebef63f23 100644 --- a/.github/workflows/build-server.yaml +++ b/.github/workflows/build-server.yaml @@ -56,7 +56,7 @@ jobs: docker info - name: Install dependencies - run: cd desci-models && npm i -g yarn && yarn && yarn build && cd ../desci-server && yarn + run: cd desci-models && npm i -g yarn && yarn && yarn build && cd ../desci-server && yarn --ignore-engines - name: Stub contract run: | @@ -65,15 +65,15 @@ jobs: - name: Run tests run: | - cd desci-server && export DOCKER_BUILDKIT=1 && yarn && yarn test + cd desci-server && export DOCKER_BUILDKIT=1 && yarn --ignore-engines && yarn test echo "exit code $?" if [ $? -ne 0 ]; then exit 1 fi - build-and-push: - needs: build-and-test - name: Build and deploy + build-and-push-images: + # we build and push for every commit, even if tests pass, that way when tests pass deployment is short (run test + build in parallel) + name: Build and push images runs-on: ubuntu-latest steps: - uses: hashicorp/setup-terraform@v1 @@ -102,7 +102,6 @@ jobs: sudo apt-get install less echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config aws sts get-caller-identity - kubectl describe deployments # - name: Check Docker Version # run: docker --version @@ -125,7 +124,7 @@ jobs: run: | # Build and tag the image docker build \ - -t $CONTAINER_IMAGE-dev:latest \ + -t $CONTAINER_IMAGE-dev:${{ github.sha }} \ -t $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-dev \ . @@ -134,7 +133,7 @@ jobs: run: | # Build and tag the image docker build \ - -t $CONTAINER_IMAGE-demo:latest \ + -t $CONTAINER_IMAGE-demo:${{ github.sha }} \ -t $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-demo \ . @@ -143,42 +142,67 @@ jobs: run: | # Build and tag the image docker build \ - -t $CONTAINER_IMAGE:latest \ + -t $CONTAINER_IMAGE:${{ github.sha }} \ -t $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE \ . - # Add additional steps here like scanning of image - - # Only push to registry on dev - name: Push (DEV) if: github.ref == 'refs/heads/develop' run: | # Push image to AWS ECR aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com - docker tag $CONTAINER_IMAGE-dev:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-dev:${{ github.sha }} - docker tag $CONTAINER_IMAGE-dev:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-dev:latest + docker tag $CONTAINER_IMAGE-dev:${{ github.sha }} $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-dev:${{ github.sha }} docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-dev:${{ github.sha }} - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-dev:latest - name: Push (DEMO) if: github.ref == 'refs/heads/demo' run: | # Push image to AWS ECR aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com - docker tag $CONTAINER_IMAGE-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-demo:${{ github.sha }} - docker tag $CONTAINER_IMAGE-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-demo:latest + docker tag $CONTAINER_IMAGE-demo:${{ github.sha }} $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-demo:${{ github.sha }} docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-demo:${{ github.sha }} - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-demo:latest - name: Push (PROD) if: github.ref == 'refs/heads/main' run: | # Push image to AWS ECR aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com - docker tag $CONTAINER_IMAGE:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE:${{ github.sha }} - docker tag $CONTAINER_IMAGE:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE:latest + docker tag $CONTAINER_IMAGE:${{ github.sha }} $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE:${{ github.sha }} docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE:${{ github.sha }} - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE:latest + + deploy: + name: Deploy desci-server + needs: + - build-and-test + - build-and-push-images + runs-on: ubuntu-latest + steps: + - uses: hashicorp/setup-terraform@v1 + - name: Checkout + uses: actions/checkout@v4 + + # Add steps here like linting, testing, minification, etc. + - id: install-aws-cli + uses: unfor19/install-aws-cli-action@v1 + with: + version: 1 + + - uses: prepor/action-aws-iam-authenticator@master + - run: aws-iam-authenticator version + + - name: Install Kubectl + run: | + #$(curl -Ls https://dl.k8s.io/release/stable.txt) + version=v1.23.6 + echo "using kubectl@$version" + curl -sLO "https://dl.k8s.io/release/$version/bin/linux/amd64/kubectl" -o kubectl + chmod +x kubectl + mv kubectl /usr/local/bin + mkdir $HOME/.kube + sudo apt-get update + sudo apt-get install less + echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config + aws sts get-caller-identity - name: Deploy to EKS (DEV) # uses: steebchen/kubectl@v2.0.0 @@ -186,18 +210,30 @@ jobs: run: | # defaults to latest kubectl binary version kubectl apply -f desci-server/kubernetes/deployment_dev.yaml kubectl set image deployment/desci-server-dev desci-server-dev=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-dev:${{ github.sha }} --record + aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com + docker pull $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-dev:${{ github.sha }} + docker tag $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-dev:${{ github.sha }} $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-dev:latest + docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-dev:latest - name: Deploy to EKS (DEMO) # uses: steebchen/kubectl@v2.0.0 if: github.ref == 'refs/heads/demo' run: | # defaults to latest kubectl binary version kubectl set image deployment/desci-server-demo desci-server-demo=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-demo:${{ github.sha }} --record + aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com + docker pull $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-demo:${{ github.sha }} + docker tag $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-demo:${{ github.sha }} $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-demo:latest + docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE-demo:latest - name: Deploy to EKS (PROD) if: github.ref == 'refs/heads/main' run: | # defaults to latest kubectl binary version kubectl apply -f desci-server/kubernetes/deployment_prod.yaml kubectl set image deployment/desci-server desci-server=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE:${{ github.sha }} --record + aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com + docker pull $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE:${{ github.sha }} + docker tag $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE:${{ github.sha }} $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE:latest + docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE:latest - name: Verify EKS Deployment (DEV) if: github.ref == 'refs/heads/develop' diff --git a/.github/workflows/deploy-staging-services.yaml b/.github/workflows/deploy-staging-services.yaml index c1bf24370..a810c2dae 100644 --- a/.github/workflows/deploy-staging-services.yaml +++ b/.github/workflows/deploy-staging-services.yaml @@ -46,7 +46,6 @@ jobs: sudo apt-get install less echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config aws sts get-caller-identity - kubectl describe deployments - name: Build and tag desci-media-isolated image (STAGING) run: | @@ -103,7 +102,6 @@ jobs: sudo apt-get install less echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config aws sts get-caller-identity - kubectl describe deployments - name: Build and tag nodes-media-server image (STAGING) run: | @@ -160,7 +158,6 @@ jobs: sudo apt-get install less echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config aws sts get-caller-identity - kubectl describe deployments - name: Stub contract run: | @@ -222,7 +219,6 @@ jobs: sudo apt-get install less echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config aws sts get-caller-identity - kubectl describe deployments - name: Stub contract run: | @@ -289,7 +285,6 @@ jobs: sudo apt-get install less echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config aws sts get-caller-identity - kubectl describe deployments - name: Build and tag the image (STAGING) run: | @@ -307,7 +302,7 @@ jobs: docker tag $CONTAINER_IMAGE_PROXY-staging:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE_PROXY-staging:latest docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE_PROXY-staging:${{ github.sha }} docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE_PROXY-staging:latest - + - name: Deploy to EKS (STAGING) run: | # defaults to latest kubectl binary version kubectl apply -f $CONTAINER_IMAGE_PROXY/deployment.yaml diff --git a/.github/workflows/run-migrations-dev.yaml b/.github/workflows/run-migrations-dev.yaml index 21db0989a..01ec1aea0 100644 --- a/.github/workflows/run-migrations-dev.yaml +++ b/.github/workflows/run-migrations-dev.yaml @@ -39,7 +39,6 @@ jobs: sudo apt-get install less echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config aws sts get-caller-identity - kubectl describe deployments - name: Migrate DB (DEV) if: github.ref == 'refs/heads/develop' diff --git a/.nvmrc b/.nvmrc index 23cc58a71..5bacb9a1f 100755 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.20.0 \ No newline at end of file +20.8.1 \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index 99647a2ac..f6b0be3f1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,7 +9,7 @@ "type": "node", "request": "attach", "restart": true, - "port": 9229, + "port": 9228, "address": "localhost", "localRoot": "${workspaceFolder}", "remoteRoot": "/app" diff --git a/.vscode/settings.json b/.vscode/settings.json index 317272b14..ec6e6899d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,7 @@ { "explorer.compactFolders": false, "files.exclude": { - "**/node_modules/**": true + "**/node_modules/**": false }, "editor.formatOnSave": true, // Tell VSCode to format files on save "editor.defaultFormatter": "esbenp.prettier-vscode", diff --git a/Dockerfile b/Dockerfile index 147c5a5da..6e2e53312 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18.20.0-bullseye +FROM node:20.8.1-bullseye-slim VOLUME /root/.yarn @@ -46,7 +46,8 @@ COPY --chown=node:node ./desci-contracts/artifacts ./src/desci-contracts-artifac RUN mv package.json package.json.old RUN sed 's/link:/file:/' package.json.old > package.json -RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn install +# Remove ignore-engines flag after bump to node 20, composedb CLI blocks installing meanwhile +RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn install --ignore-engines RUN chown -R node /app/node_modules/.prisma RUN chown -R node /root/.cache/prisma/master diff --git a/desci-contracts/.gitignore b/desci-contracts/.gitignore index d3767f7da..7b4e35123 100644 --- a/desci-contracts/.gitignore +++ b/desci-contracts/.gitignore @@ -12,3 +12,4 @@ build *.dbg.json flat.sol dist +.vscode \ No newline at end of file diff --git a/desci-contracts/.openzeppelin/opSepoliaDev-dpid-alias-registry.json b/desci-contracts/.openzeppelin/opSepoliaDev-dpid-alias-registry.json new file mode 100644 index 000000000..f88f3115f --- /dev/null +++ b/desci-contracts/.openzeppelin/opSepoliaDev-dpid-alias-registry.json @@ -0,0 +1,201 @@ +{ + "manifestVersion": "3.2", + "admin": { + "address": "0x280685c10281F16b4A8585810f695E293B6097eB", + "txHash": "0x5d600bd4cc7f920597350266a6d3840c9d938b6bf5f0d0ccde77117fd2c95ea0" + }, + "proxies": [ + { + "address": "0x2Ea4Ee2Af79495e045EBe925aC67d755520877e7", + "txHash": "0x32b16b14970350db7db8bdc9da8c7ddffa389f5678e810f3d3208cb277b76a1c", + "kind": "transparent" + } + ], + "impls": { + "a230b5b705959d3e3e4fc01d0b0da971f2e249681ed6a78165280ba33db100b5": { + "address": "0x682c122e535aB4637AA6d8DCCCa106CA89831918", + "txHash": "0x6e925112f68a35e6e8a9ba70f88cab98bc88e3de0e64f5f4d398efb8aaab1721", + "layout": { + "solcVersion": "0.8.4", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "_paused", + "offset": 0, + "slot": "101", + "type": "t_bool", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:29" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:116" + }, + { + "label": "nextDpid", + "offset": 0, + "slot": "151", + "type": "t_uint256", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:10" + }, + { + "label": "registry", + "offset": 0, + "slot": "152", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:13" + }, + { + "label": "reverseRegistry", + "offset": 0, + "slot": "153", + "type": "t_mapping(t_string_memory_ptr,t_uint256)", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:16" + }, + { + "label": "legacy", + "offset": 0, + "slot": "154", + "type": "t_mapping(t_uint256,t_struct(LegacyDpidEntry)843_storage)", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:125" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_struct(LegacyVersion)836_storage)dyn_storage": { + "label": "struct DpidAliasRegistry.LegacyVersion[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_string_memory_ptr,t_uint256)": { + "label": "mapping(string => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(LegacyDpidEntry)843_storage)": { + "label": "mapping(uint256 => struct DpidAliasRegistry.LegacyDpidEntry)", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(LegacyDpidEntry)843_storage": { + "label": "struct DpidAliasRegistry.LegacyDpidEntry", + "members": [ + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "versions", + "type": "t_array(t_struct(LegacyVersion)836_storage)dyn_storage", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(LegacyVersion)836_storage": { + "label": "struct DpidAliasRegistry.LegacyVersion", + "members": [ + { + "label": "cid", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "time", + "type": "t_uint256", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + } + } +} diff --git a/desci-contracts/.openzeppelin/opSepoliaProd-dpid-alias-registry.json b/desci-contracts/.openzeppelin/opSepoliaProd-dpid-alias-registry.json new file mode 100644 index 000000000..a09e8be70 --- /dev/null +++ b/desci-contracts/.openzeppelin/opSepoliaProd-dpid-alias-registry.json @@ -0,0 +1,201 @@ +{ + "manifestVersion": "3.2", + "admin": { + "address": "0x1cb519A0f2C7F0695BfDd4a71473885a070D2144", + "txHash": "0xf3cb35faa31f949a534a766f9beff65f35323c151dbcca5f844084900e07372e" + }, + "proxies": [ + { + "address": "0x935e08ce8AFdefa17CD1579f5a3CD31224e47456", + "txHash": "0x5132459b8b0e828aad6e54de40b58de3b7e55e1c40b0a15f99cda3373629f344", + "kind": "transparent" + } + ], + "impls": { + "a230b5b705959d3e3e4fc01d0b0da971f2e249681ed6a78165280ba33db100b5": { + "address": "0x40EcC698B074604a85Bb877Eb7362ab6Cf14BaDE", + "txHash": "0xb81b2d4547119d842d88e7aaeb582cec2eca72e891c17dc20df64425a00f9e5f", + "layout": { + "solcVersion": "0.8.4", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "_paused", + "offset": 0, + "slot": "101", + "type": "t_bool", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:29" + }, + { + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage", + "contract": "PausableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:116" + }, + { + "label": "nextDpid", + "offset": 0, + "slot": "151", + "type": "t_uint256", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:10" + }, + { + "label": "registry", + "offset": 0, + "slot": "152", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:13" + }, + { + "label": "reverseRegistry", + "offset": 0, + "slot": "153", + "type": "t_mapping(t_string_memory_ptr,t_uint256)", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:16" + }, + { + "label": "legacy", + "offset": 0, + "slot": "154", + "type": "t_mapping(t_uint256,t_struct(LegacyDpidEntry)4712_storage)", + "contract": "DpidAliasRegistry", + "src": "contracts/DpidAliasRegistry.sol:125" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_struct(LegacyVersion)4705_storage)dyn_storage": { + "label": "struct DpidAliasRegistry.LegacyVersion[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_mapping(t_string_memory_ptr,t_uint256)": { + "label": "mapping(string => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(LegacyDpidEntry)4712_storage)": { + "label": "mapping(uint256 => struct DpidAliasRegistry.LegacyDpidEntry)", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(LegacyDpidEntry)4712_storage": { + "label": "struct DpidAliasRegistry.LegacyDpidEntry", + "members": [ + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "versions", + "type": "t_array(t_struct(LegacyVersion)4705_storage)dyn_storage", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(LegacyVersion)4705_storage": { + "label": "struct DpidAliasRegistry.LegacyVersion", + "members": [ + { + "label": "cid", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "time", + "type": "t_uint256", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + } + } +} diff --git a/desci-contracts/artifacts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json b/desci-contracts/artifacts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json new file mode 100644 index 000000000..4bc1f5eeb --- /dev/null +++ b/desci-contracts/artifacts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json @@ -0,0 +1,63 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PausableUpgradeable", + "sourceName": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json new file mode 100644 index 000000000..75d6a5e17 --- /dev/null +++ b/desci-contracts/artifacts/contracts/DpidAliasRegistry.sol/DpidAliasRegistry.json @@ -0,0 +1,465 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DpidAliasRegistry", + "sourceName": "contracts/DpidAliasRegistry.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "streamID", + "type": "string" + } + ], + "name": "DpidMinted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "cid", + "type": "string" + }, + { + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "internalType": "struct DpidAliasRegistry.LegacyVersion[]", + "name": "versions", + "type": "tuple[]" + } + ], + "indexed": false, + "internalType": "struct DpidAliasRegistry.LegacyDpidEntry", + "name": "entry", + "type": "tuple" + } + ], + "name": "ImportedDpid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "streamId", + "type": "string" + } + ], + "name": "UpgradedDpid", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "streamId", + "type": "string" + } + ], + "name": "find", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "cid", + "type": "string" + }, + { + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "internalType": "struct DpidAliasRegistry.LegacyVersion[]", + "name": "versions", + "type": "tuple[]" + } + ], + "internalType": "struct DpidAliasRegistry.LegacyDpidEntry", + "name": "entry", + "type": "tuple" + } + ], + "name": "importLegacyDpid", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "legacy", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + } + ], + "name": "legacyLookup", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "cid", + "type": "string" + }, + { + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "internalType": "struct DpidAliasRegistry.LegacyVersion[]", + "name": "versions", + "type": "tuple[]" + } + ], + "internalType": "struct DpidAliasRegistry.LegacyDpidEntry", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "streamId", + "type": "string" + } + ], + "name": "mintDpid", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "nextDpid", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "registry", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "reverseRegistry", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_nextDpid", + "type": "uint256" + } + ], + "name": "setNextDpid", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "dpid", + "type": "uint256" + }, + { + "internalType": "string", + "name": "streamId", + "type": "string" + } + ], + "name": "upgradeDpid", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b612b0480620001e36000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638129fc1c116100a2578063a5ad8ac611610071578063a5ad8ac6146102bb578063afc26911146102d7578063b724de3a146102f5578063ded8896b14610325578063f2fde38b1461034157610116565b80638129fc1c1461025957806382b7b500146102635780638456cb59146102935780638da5cb5b1461029d57610116565b80635893253c116100e95780635893253c146101a15780635c975abb146101d1578063715018a6146101ef578063788243d5146101f9578063810a9afa1461022957610116565b8063144ae8551461011b5780633f4ba83a146101375780634f896d4f14610141578063587a8cbf14610171575b600080fd5b6101356004803603810190610130919061146f565b61035d565b005b61013f6103c5565b005b61015b600480360381019061015691906113ee565b6103df565b60405161016891906119dc565b60405180910390f35b61018b600480360381019061018691906113ad565b610484565b6040516101989190611b40565b60405180910390f35b6101bb60048036038101906101b691906113ee565b6104b2565b6040516101c891906119dc565b60405180910390f35b6101d9610552565b6040516101e691906119a6565b60405180910390f35b6101f7610569565b005b610213600480360381019061020e91906113ee565b61057d565b604051610220919061198b565b60405180910390f35b610243600480360381019061023e91906113ee565b6105bb565b6040516102509190611b1e565b60405180910390f35b610261610739565b005b61027d60048036038101906102789190611368565b610887565b60405161028a9190611b40565b60405180910390f35b61029b6108b2565b005b6102a56108cc565b6040516102b2919061198b565b60405180910390f35b6102d560048036038101906102d091906113ee565b6108f6565b005b6102df610910565b6040516102ec9190611b40565b60405180910390f35b61030f600480360381019061030a9190611368565b610916565b60405161031c9190611b40565b60405180910390f35b61033f600480360381019061033a9190611417565b610a33565b005b61035b6004803603810190610356919061133f565b610caa565b005b610365610d2e565b80609a600084815260200190815260200160002081816103859190612a27565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada82826040516103b9929190611b8d565b60405180910390a15050565b6103cd610d2e565b6103d5610dac565b6103dd610df5565b565b60606098600083815260200190815260200160002080546103ff906123b4565b80601f016020809104026020016040519081016040528092919081815260200182805461042b906123b4565b80156104785780601f1061044d57610100808354040283529160200191610478565b820191906000526020600020905b81548152906001019060200180831161045b57829003601f168201915b50505050509050919050565b6099818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b609860205280600052604060002060009150905080546104d1906123b4565b80601f01602080910402602001604051908101604052809291908181526020018280546104fd906123b4565b801561054a5780601f1061051f5761010080835404028352916020019161054a565b820191906000526020600020905b81548152906001019060200180831161052d57829003601f168201915b505050505081565b6000606560009054906101000a900460ff16905090565b610571610d2e565b61057b6000610e58565b565b609a6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105c3611175565b609a60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561072a578382906000526020600020906002020160405180604001604052908160008201805461068f906123b4565b80601f01602080910402602001604051908101604052809291908181526020018280546106bb906123b4565b80156107085780601f106106dd57610100808354040283529160200191610708565b820191906000526020600020905b8154815290600101906020018083116106eb57829003601f168201915b505050505081526020016001820154815250508152602001906001019061065c565b50505050815250509050919050565b60008060019054906101000a900460ff1615905080801561076a5750600160008054906101000a900460ff1660ff16105b80610797575061077930610f1e565b1580156107965750600160008054906101000a900460ff1660ff16145b5b6107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd90611a9e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610813576001600060016101000a81548160ff0219169083151502179055505b61081b610f41565b610823610f9a565b61082b610ff3565b80156108845760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161087b91906119c1565b60405180910390a15b50565b60006099838360405161089b929190611972565b908152602001604051809103902054905092915050565b6108ba610d2e565b6108c2611056565b6108ca610ff3565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108fe610d2e565b610906610dac565b8060978190555050565b60975481565b6000828260006099838360405161092e929190611972565b9081526020016040518091039020541461097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097490611a7e565b60405180910390fd5b610985611056565b6000609754905085856098600084815260200190815260200160002091906109ae9291906111a5565b5080609987876040516109c2929190611972565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d818787604051610a0793929190611b5b565b60405180910390a160976000815480929190610a2290612433565b919050555080935050505092915050565b8181600060998383604051610a49929190611972565b90815260200160405180910390205414610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90611a7e565b60405180910390fd5b610aa0611056565b6000609860008781526020019081526020016000208054610ac0906123b4565b90501480610b005750610ad16108cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690611a1e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16609a600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610be15750610bb26108cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790611afe565b60405180910390fd5b8383609860008881526020019081526020016000209190610c429291906111a5565b508460998585604051610c56929190611972565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610c9b93929190611b5b565b60405180910390a15050505050565b610cb2610d2e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990611a3e565b60405180910390fd5b610d2b81610e58565b50565b610d366110a0565b73ffffffffffffffffffffffffffffffffffffffff16610d546108cc565b73ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190611abe565b60405180910390fd5b565b610db4610552565b610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea906119fe565b60405180910390fd5b565b610dfd610dac565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e416110a0565b604051610e4e919061198b565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790611ade565b60405180910390fd5b610f986110a8565b565b600060019054906101000a900460ff16610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090611ade565b60405180910390fd5b610ff1611109565b565b610ffb611056565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861103f6110a0565b60405161104c919061198b565b60405180910390a1565b61105e610552565b1561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590611a5e565b60405180910390fd5b565b600033905090565b600060019054906101000a900460ff166110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90611ade565b60405180910390fd5b6111076111026110a0565b610e58565b565b600060019054906101000a900460ff16611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90611ade565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b8280546111b1906123b4565b90600052602060002090601f0160209004810192826111d3576000855561121a565b82601f106111ec57803560ff191683800117855561121a565b8280016001018555821561121a579182015b828111156112195782358255916020019190600101906111fe565b5b509050611227919061122b565b5090565b5b8082111561124457600081600090555060010161122c565b5090565b600061125b61125684611cb4565b611c8f565b90508281526020810184848401111561127357600080fd5b61127e8482856122e6565b509392505050565b60008135905061129581612a9b565b92915050565b60008083601f8401126112ad57600080fd5b8235905067ffffffffffffffff8111156112c657600080fd5b6020830191508360018202830111156112de57600080fd5b9250929050565b600082601f8301126112f657600080fd5b8135611306848260208601611248565b91505092915050565b60006040828403121561132157600080fd5b81905092915050565b60008135905061133981612ab2565b92915050565b60006020828403121561135157600080fd5b600061135f84828501611286565b91505092915050565b6000806020838503121561137b57600080fd5b600083013567ffffffffffffffff81111561139557600080fd5b6113a18582860161129b565b92509250509250929050565b6000602082840312156113bf57600080fd5b600082013567ffffffffffffffff8111156113d957600080fd5b6113e5848285016112e5565b91505092915050565b60006020828403121561140057600080fd5b600061140e8482850161132a565b91505092915050565b60008060006040848603121561142c57600080fd5b600061143a8682870161132a565b935050602084013567ffffffffffffffff81111561145757600080fd5b6114638682870161129b565b92509250509250925092565b6000806040838503121561148257600080fd5b60006114908582860161132a565b925050602083013567ffffffffffffffff8111156114ad57600080fd5b6114b98582860161130f565b9150509250929050565b60006114cf83836118c8565b905092915050565b60006114e38383611917565b905092915050565b6114f48161202e565b82525050565b6115038161202e565b82525050565b60006115158385611d91565b93508360208402850161152784611cfc565b8060005b8781101561156b5784840389526115428284611f99565b61154c85826114c3565b945061155783611d77565b925060208a0199505060018101905061152b565b50829750879450505050509392505050565b600061158882611d4b565b6115928185611d91565b9350836020820285016115a485611d06565b8060005b858110156115e057848403895281516115c185826114d7565b94506115cc83611d84565b925060208a019950506001810190506115a8565b50829750879550505050505092915050565b6115fb81612040565b82525050565b61160a81612129565b82525050565b600061161c8385611da2565b93506116298385846122e6565b6116328361268a565b840190509392505050565b60006116498385611db3565b93506116568385846122e6565b61165f8361268a565b840190509392505050565b60006116768385611dc4565b93506116838385846122e6565b82840190509392505050565b600061169a82611d6c565b6116a48185611da2565b93506116b48185602086016122f5565b6116bd8161268a565b840191505092915050565b60006116d382611d6c565b6116dd8185611db3565b93506116ed8185602086016122f5565b6116f68161268a565b840191505092915050565b600061170e601483611db3565b915061171982612716565b602082019050919050565b6000611731601583611db3565b915061173c8261273f565b602082019050919050565b6000611754602683611db3565b915061175f82612768565b604082019050919050565b6000611777601083611db3565b9150611782826127b7565b602082019050919050565b600061179a601983611db3565b91506117a5826127e0565b602082019050919050565b60006117bd602e83611db3565b91506117c882612809565b604082019050919050565b60006117e0602083611db3565b91506117eb82612858565b602082019050919050565b6000611803602b83611db3565b915061180e82612881565b604082019050919050565b6000611826601983611db3565b9150611831826128d0565b602082019050919050565b60006040830161184f6000840184611ed4565b61185c60008601826114eb565b5061186a6020840184611eeb565b858303602087015261187d838284611509565b925050508091505092915050565b60006040830160008301516118a360008601826114eb565b50602083015184820360208601526118bb828261157d565b9150508091505092915050565b6000604083016118db6000840184611f42565b85830360008701526118ee838284611610565b925050506118ff6020840184611fbd565b61190c6020860182611954565b508091505092915050565b60006040830160008301518482036000860152611934828261168f565b91505060208301516119496020860182611954565b508091505092915050565b61195d8161206c565b82525050565b61196c8161206c565b82525050565b600061197f82848661166a565b91508190509392505050565b60006020820190506119a060008301846114fa565b92915050565b60006020820190506119bb60008301846115f2565b92915050565b60006020820190506119d66000830184611601565b92915050565b600060208201905081810360008301526119f681846116c8565b905092915050565b60006020820190508181036000830152611a1781611701565b9050919050565b60006020820190508181036000830152611a3781611724565b9050919050565b60006020820190508181036000830152611a5781611747565b9050919050565b60006020820190508181036000830152611a778161176a565b9050919050565b60006020820190508181036000830152611a978161178d565b9050919050565b60006020820190508181036000830152611ab7816117b0565b9050919050565b60006020820190508181036000830152611ad7816117d3565b9050919050565b60006020820190508181036000830152611af7816117f6565b9050919050565b60006020820190508181036000830152611b1781611819565b9050919050565b60006020820190508181036000830152611b38818461188b565b905092915050565b6000602082019050611b556000830184611963565b92915050565b6000604082019050611b706000830186611963565b8181036020830152611b8381848661163d565b9050949350505050565b6000604082019050611ba26000830185611963565b8181036020830152611bb4818461183c565b90509392505050565b60008083356001602003843603038112611bd657600080fd5b80840192508235915067ffffffffffffffff821115611bf457600080fd5b602083019250602082023603831315611c0c57600080fd5b509250929050565b60008083356001602003843603038112611c2d57600080fd5b80840192508235915067ffffffffffffffff821115611c4b57600080fd5b602083019250600182023603831315611c6357600080fd5b509250929050565b600082356001604003833603038112611c8357600080fd5b80830191505092915050565b6000611c99611caa565b9050611ca58282612402565b919050565b6000604051905090565b600067ffffffffffffffff821115611ccf57611cce612527565b5b611cd88261268a565b9050602081019050919050565b6000819050611cf5826002611fd4565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611e2857601f841160018114611df857611df186856123e6565b8355611e22565b611e0183611d2b565b611e166020601f880104820160018301612091565b611e2087856128f9565b505b50611e71565b611e3182611d2b565b6020601f8701048101601f87168015611e5257611e518160018403612556565b5b611e646020601f890104840183612091565b6001886002021785555050505b5050505050565b6020831060008114611ec3576020851060008114611ea157611e9a86856123e6565b8355611ebd565b8360ff1916935083611eb284611d2b565b556001866002020183555b50611ecd565b6001856002020182555b5050505050565b6000611ee36020840184611286565b905092915050565b60008083356001602003843603038112611f0457600080fd5b83810192508235915060208301925067ffffffffffffffff821115611f2857600080fd5b602082023603841315611f3a57600080fd5b509250929050565b60008083356001602003843603038112611f5b57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611f7f57600080fd5b600182023603841315611f9157600080fd5b509250929050565b600082356001604003833603038112611fb157600080fd5b82810191505092915050565b6000611fcc602084018461132a565b905092915050565b6000611fdf8261206c565b9150611fea8361206c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612023576120226124c9565b5b828202905092915050565b60006120398261204c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b61208e600082612635565b50565b5b818110156120b0576120a56000826126fe565b600181019050612092565b5050565b5b818110156120d3576120c86000826126e0565b6002810190506120b5565b5050565b818110156120f5576120ea6000826126fe565b6001810190506120d7565b5050565b61210660008083016126c2565b6121146000600183016126fe565b50565b60006121228261213b565b9050919050565b600061213482612076565b9050919050565b60006121468261214d565b9050919050565b60006121588261204c565b9050919050565b600061216a8261206c565b9050919050565b61217b8383611d40565b61218581836125d1565b61218e83611cfc565b61219783611d16565b6000805b848110156121d0576121ad8488611c6b565b6121b8818486612a58565b6020850194506002840193505060018101905061219b565b5050505050505050565b6121e48383611d61565b67ffffffffffffffff8111156121fd576121fc612527565b5b61220782546123b4565b600080601f8411601f841117156122245761222185611d2b565b90505b601f831115612257576020601f85010481016020851015612243578190505b6122556020601f860104830182612091565b505b601f8411600181146122845760008515612272578388013590505b61227c86826123e6565b8755506122dc565b601f1985168260005b828110156122b257858a0135825560018201915060208601955060208101905061228d565b878310156122cf57858a01356122cb601f8a168261247c565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b838110156123135780820151818401526020810190506122f8565b83811115612322576000848401525b50505050565b60008101600083018061233a816125a5565b905061234681846129e4565b505050600181016020830161235b8185611bbd565b612366818386612a07565b505050505050565b60008101600083016123808185611c14565b61238b818386612a17565b505050506001810160208301806123a1816125bb565b90506123ad8184612a35565b5050505050565b600060028204905060018216806123cc57607f821691505b602082108114156123e0576123df6124f8565b5b50919050565b60006123f2838361247c565b9150826002028217905092915050565b61240b8261268a565b810181811067ffffffffffffffff8211171561242a57612429612527565b5b80604052505050565b600061243e8261206c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612471576124706124c9565b5b600182019050919050565b600061248d600019846008026126b5565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026126b5565b815481168255505050565b6000819050919050565b6000819050919050565b600081356125b281612a9b565b80915050919050565b600081356125c881612ab2565b80915050919050565b680100000000000000008211156125eb576125ea612527565b5b6125f481611d56565b828255808310156126305761260881611ce5565b61261184611ce5565b61261a84611d16565b81810183820161262a81836120b4565b50505050505b505050565b6801000000000000000082111561264f5761264e612527565b5b805461265a816123b4565b8084111561266f5761266e84828486611e78565b5b808410156126845761268384828486611dcf565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146126d3576126d261249a565b5b6126dc81612083565b5050565b600082146126f1576126f061249a565b5b6126fa816120f9565b5050565b612706612ac9565b612711818484612a76565b505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b61290281611d2b565b61290d8382546123e6565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61293a8461269b565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61297c8461269b565b9350801983169250808416831791505092915050565b6000600883026129c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826126a8565b6129cc86836126a8565b95508019841693508086168417925050509392505050565b6129ed82612117565b612a006129f982612591565b835461291a565b8255505050565b612a12838383612171565b505050565b612a228383836121da565b505050565b612a318282612328565b5050565b612a3e8261215f565b612a51612a4a8261259b565b8354612950565b8255505050565b8115612a6757612a6661249a565b5b612a71838261236e565b505050565b612a7f8361215f565b612a93612a8b8261259b565b848454612992565b825550505050565b612aa48161202e565b8114612aaf57600080fd5b50565b612abb8161206c565b8114612ac657600080fd5b50565b60009056fea26469706673582212204ecb8996bb39773559c74839e823c3312f16000e008595f44afba65328f7cb2464736f6c63430008040033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c80638129fc1c116100a2578063a5ad8ac611610071578063a5ad8ac6146102bb578063afc26911146102d7578063b724de3a146102f5578063ded8896b14610325578063f2fde38b1461034157610116565b80638129fc1c1461025957806382b7b500146102635780638456cb59146102935780638da5cb5b1461029d57610116565b80635893253c116100e95780635893253c146101a15780635c975abb146101d1578063715018a6146101ef578063788243d5146101f9578063810a9afa1461022957610116565b8063144ae8551461011b5780633f4ba83a146101375780634f896d4f14610141578063587a8cbf14610171575b600080fd5b6101356004803603810190610130919061146f565b61035d565b005b61013f6103c5565b005b61015b600480360381019061015691906113ee565b6103df565b60405161016891906119dc565b60405180910390f35b61018b600480360381019061018691906113ad565b610484565b6040516101989190611b40565b60405180910390f35b6101bb60048036038101906101b691906113ee565b6104b2565b6040516101c891906119dc565b60405180910390f35b6101d9610552565b6040516101e691906119a6565b60405180910390f35b6101f7610569565b005b610213600480360381019061020e91906113ee565b61057d565b604051610220919061198b565b60405180910390f35b610243600480360381019061023e91906113ee565b6105bb565b6040516102509190611b1e565b60405180910390f35b610261610739565b005b61027d60048036038101906102789190611368565b610887565b60405161028a9190611b40565b60405180910390f35b61029b6108b2565b005b6102a56108cc565b6040516102b2919061198b565b60405180910390f35b6102d560048036038101906102d091906113ee565b6108f6565b005b6102df610910565b6040516102ec9190611b40565b60405180910390f35b61030f600480360381019061030a9190611368565b610916565b60405161031c9190611b40565b60405180910390f35b61033f600480360381019061033a9190611417565b610a33565b005b61035b6004803603810190610356919061133f565b610caa565b005b610365610d2e565b80609a600084815260200190815260200160002081816103859190612a27565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada82826040516103b9929190611b8d565b60405180910390a15050565b6103cd610d2e565b6103d5610dac565b6103dd610df5565b565b60606098600083815260200190815260200160002080546103ff906123b4565b80601f016020809104026020016040519081016040528092919081815260200182805461042b906123b4565b80156104785780601f1061044d57610100808354040283529160200191610478565b820191906000526020600020905b81548152906001019060200180831161045b57829003601f168201915b50505050509050919050565b6099818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b609860205280600052604060002060009150905080546104d1906123b4565b80601f01602080910402602001604051908101604052809291908181526020018280546104fd906123b4565b801561054a5780601f1061051f5761010080835404028352916020019161054a565b820191906000526020600020905b81548152906001019060200180831161052d57829003601f168201915b505050505081565b6000606560009054906101000a900460ff16905090565b610571610d2e565b61057b6000610e58565b565b609a6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105c3611175565b609a60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561072a578382906000526020600020906002020160405180604001604052908160008201805461068f906123b4565b80601f01602080910402602001604051908101604052809291908181526020018280546106bb906123b4565b80156107085780601f106106dd57610100808354040283529160200191610708565b820191906000526020600020905b8154815290600101906020018083116106eb57829003601f168201915b505050505081526020016001820154815250508152602001906001019061065c565b50505050815250509050919050565b60008060019054906101000a900460ff1615905080801561076a5750600160008054906101000a900460ff1660ff16105b80610797575061077930610f1e565b1580156107965750600160008054906101000a900460ff1660ff16145b5b6107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd90611a9e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610813576001600060016101000a81548160ff0219169083151502179055505b61081b610f41565b610823610f9a565b61082b610ff3565b80156108845760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161087b91906119c1565b60405180910390a15b50565b60006099838360405161089b929190611972565b908152602001604051809103902054905092915050565b6108ba610d2e565b6108c2611056565b6108ca610ff3565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108fe610d2e565b610906610dac565b8060978190555050565b60975481565b6000828260006099838360405161092e929190611972565b9081526020016040518091039020541461097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097490611a7e565b60405180910390fd5b610985611056565b6000609754905085856098600084815260200190815260200160002091906109ae9291906111a5565b5080609987876040516109c2929190611972565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d818787604051610a0793929190611b5b565b60405180910390a160976000815480929190610a2290612433565b919050555080935050505092915050565b8181600060998383604051610a49929190611972565b90815260200160405180910390205414610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90611a7e565b60405180910390fd5b610aa0611056565b6000609860008781526020019081526020016000208054610ac0906123b4565b90501480610b005750610ad16108cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690611a1e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16609a600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610be15750610bb26108cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790611afe565b60405180910390fd5b8383609860008881526020019081526020016000209190610c429291906111a5565b508460998585604051610c56929190611972565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610c9b93929190611b5b565b60405180910390a15050505050565b610cb2610d2e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990611a3e565b60405180910390fd5b610d2b81610e58565b50565b610d366110a0565b73ffffffffffffffffffffffffffffffffffffffff16610d546108cc565b73ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190611abe565b60405180910390fd5b565b610db4610552565b610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea906119fe565b60405180910390fd5b565b610dfd610dac565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e416110a0565b604051610e4e919061198b565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790611ade565b60405180910390fd5b610f986110a8565b565b600060019054906101000a900460ff16610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090611ade565b60405180910390fd5b610ff1611109565b565b610ffb611056565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861103f6110a0565b60405161104c919061198b565b60405180910390a1565b61105e610552565b1561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590611a5e565b60405180910390fd5b565b600033905090565b600060019054906101000a900460ff166110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90611ade565b60405180910390fd5b6111076111026110a0565b610e58565b565b600060019054906101000a900460ff16611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90611ade565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b8280546111b1906123b4565b90600052602060002090601f0160209004810192826111d3576000855561121a565b82601f106111ec57803560ff191683800117855561121a565b8280016001018555821561121a579182015b828111156112195782358255916020019190600101906111fe565b5b509050611227919061122b565b5090565b5b8082111561124457600081600090555060010161122c565b5090565b600061125b61125684611cb4565b611c8f565b90508281526020810184848401111561127357600080fd5b61127e8482856122e6565b509392505050565b60008135905061129581612a9b565b92915050565b60008083601f8401126112ad57600080fd5b8235905067ffffffffffffffff8111156112c657600080fd5b6020830191508360018202830111156112de57600080fd5b9250929050565b600082601f8301126112f657600080fd5b8135611306848260208601611248565b91505092915050565b60006040828403121561132157600080fd5b81905092915050565b60008135905061133981612ab2565b92915050565b60006020828403121561135157600080fd5b600061135f84828501611286565b91505092915050565b6000806020838503121561137b57600080fd5b600083013567ffffffffffffffff81111561139557600080fd5b6113a18582860161129b565b92509250509250929050565b6000602082840312156113bf57600080fd5b600082013567ffffffffffffffff8111156113d957600080fd5b6113e5848285016112e5565b91505092915050565b60006020828403121561140057600080fd5b600061140e8482850161132a565b91505092915050565b60008060006040848603121561142c57600080fd5b600061143a8682870161132a565b935050602084013567ffffffffffffffff81111561145757600080fd5b6114638682870161129b565b92509250509250925092565b6000806040838503121561148257600080fd5b60006114908582860161132a565b925050602083013567ffffffffffffffff8111156114ad57600080fd5b6114b98582860161130f565b9150509250929050565b60006114cf83836118c8565b905092915050565b60006114e38383611917565b905092915050565b6114f48161202e565b82525050565b6115038161202e565b82525050565b60006115158385611d91565b93508360208402850161152784611cfc565b8060005b8781101561156b5784840389526115428284611f99565b61154c85826114c3565b945061155783611d77565b925060208a0199505060018101905061152b565b50829750879450505050509392505050565b600061158882611d4b565b6115928185611d91565b9350836020820285016115a485611d06565b8060005b858110156115e057848403895281516115c185826114d7565b94506115cc83611d84565b925060208a019950506001810190506115a8565b50829750879550505050505092915050565b6115fb81612040565b82525050565b61160a81612129565b82525050565b600061161c8385611da2565b93506116298385846122e6565b6116328361268a565b840190509392505050565b60006116498385611db3565b93506116568385846122e6565b61165f8361268a565b840190509392505050565b60006116768385611dc4565b93506116838385846122e6565b82840190509392505050565b600061169a82611d6c565b6116a48185611da2565b93506116b48185602086016122f5565b6116bd8161268a565b840191505092915050565b60006116d382611d6c565b6116dd8185611db3565b93506116ed8185602086016122f5565b6116f68161268a565b840191505092915050565b600061170e601483611db3565b915061171982612716565b602082019050919050565b6000611731601583611db3565b915061173c8261273f565b602082019050919050565b6000611754602683611db3565b915061175f82612768565b604082019050919050565b6000611777601083611db3565b9150611782826127b7565b602082019050919050565b600061179a601983611db3565b91506117a5826127e0565b602082019050919050565b60006117bd602e83611db3565b91506117c882612809565b604082019050919050565b60006117e0602083611db3565b91506117eb82612858565b602082019050919050565b6000611803602b83611db3565b915061180e82612881565b604082019050919050565b6000611826601983611db3565b9150611831826128d0565b602082019050919050565b60006040830161184f6000840184611ed4565b61185c60008601826114eb565b5061186a6020840184611eeb565b858303602087015261187d838284611509565b925050508091505092915050565b60006040830160008301516118a360008601826114eb565b50602083015184820360208601526118bb828261157d565b9150508091505092915050565b6000604083016118db6000840184611f42565b85830360008701526118ee838284611610565b925050506118ff6020840184611fbd565b61190c6020860182611954565b508091505092915050565b60006040830160008301518482036000860152611934828261168f565b91505060208301516119496020860182611954565b508091505092915050565b61195d8161206c565b82525050565b61196c8161206c565b82525050565b600061197f82848661166a565b91508190509392505050565b60006020820190506119a060008301846114fa565b92915050565b60006020820190506119bb60008301846115f2565b92915050565b60006020820190506119d66000830184611601565b92915050565b600060208201905081810360008301526119f681846116c8565b905092915050565b60006020820190508181036000830152611a1781611701565b9050919050565b60006020820190508181036000830152611a3781611724565b9050919050565b60006020820190508181036000830152611a5781611747565b9050919050565b60006020820190508181036000830152611a778161176a565b9050919050565b60006020820190508181036000830152611a978161178d565b9050919050565b60006020820190508181036000830152611ab7816117b0565b9050919050565b60006020820190508181036000830152611ad7816117d3565b9050919050565b60006020820190508181036000830152611af7816117f6565b9050919050565b60006020820190508181036000830152611b1781611819565b9050919050565b60006020820190508181036000830152611b38818461188b565b905092915050565b6000602082019050611b556000830184611963565b92915050565b6000604082019050611b706000830186611963565b8181036020830152611b8381848661163d565b9050949350505050565b6000604082019050611ba26000830185611963565b8181036020830152611bb4818461183c565b90509392505050565b60008083356001602003843603038112611bd657600080fd5b80840192508235915067ffffffffffffffff821115611bf457600080fd5b602083019250602082023603831315611c0c57600080fd5b509250929050565b60008083356001602003843603038112611c2d57600080fd5b80840192508235915067ffffffffffffffff821115611c4b57600080fd5b602083019250600182023603831315611c6357600080fd5b509250929050565b600082356001604003833603038112611c8357600080fd5b80830191505092915050565b6000611c99611caa565b9050611ca58282612402565b919050565b6000604051905090565b600067ffffffffffffffff821115611ccf57611cce612527565b5b611cd88261268a565b9050602081019050919050565b6000819050611cf5826002611fd4565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611e2857601f841160018114611df857611df186856123e6565b8355611e22565b611e0183611d2b565b611e166020601f880104820160018301612091565b611e2087856128f9565b505b50611e71565b611e3182611d2b565b6020601f8701048101601f87168015611e5257611e518160018403612556565b5b611e646020601f890104840183612091565b6001886002021785555050505b5050505050565b6020831060008114611ec3576020851060008114611ea157611e9a86856123e6565b8355611ebd565b8360ff1916935083611eb284611d2b565b556001866002020183555b50611ecd565b6001856002020182555b5050505050565b6000611ee36020840184611286565b905092915050565b60008083356001602003843603038112611f0457600080fd5b83810192508235915060208301925067ffffffffffffffff821115611f2857600080fd5b602082023603841315611f3a57600080fd5b509250929050565b60008083356001602003843603038112611f5b57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611f7f57600080fd5b600182023603841315611f9157600080fd5b509250929050565b600082356001604003833603038112611fb157600080fd5b82810191505092915050565b6000611fcc602084018461132a565b905092915050565b6000611fdf8261206c565b9150611fea8361206c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612023576120226124c9565b5b828202905092915050565b60006120398261204c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b61208e600082612635565b50565b5b818110156120b0576120a56000826126fe565b600181019050612092565b5050565b5b818110156120d3576120c86000826126e0565b6002810190506120b5565b5050565b818110156120f5576120ea6000826126fe565b6001810190506120d7565b5050565b61210660008083016126c2565b6121146000600183016126fe565b50565b60006121228261213b565b9050919050565b600061213482612076565b9050919050565b60006121468261214d565b9050919050565b60006121588261204c565b9050919050565b600061216a8261206c565b9050919050565b61217b8383611d40565b61218581836125d1565b61218e83611cfc565b61219783611d16565b6000805b848110156121d0576121ad8488611c6b565b6121b8818486612a58565b6020850194506002840193505060018101905061219b565b5050505050505050565b6121e48383611d61565b67ffffffffffffffff8111156121fd576121fc612527565b5b61220782546123b4565b600080601f8411601f841117156122245761222185611d2b565b90505b601f831115612257576020601f85010481016020851015612243578190505b6122556020601f860104830182612091565b505b601f8411600181146122845760008515612272578388013590505b61227c86826123e6565b8755506122dc565b601f1985168260005b828110156122b257858a0135825560018201915060208601955060208101905061228d565b878310156122cf57858a01356122cb601f8a168261247c565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b838110156123135780820151818401526020810190506122f8565b83811115612322576000848401525b50505050565b60008101600083018061233a816125a5565b905061234681846129e4565b505050600181016020830161235b8185611bbd565b612366818386612a07565b505050505050565b60008101600083016123808185611c14565b61238b818386612a17565b505050506001810160208301806123a1816125bb565b90506123ad8184612a35565b5050505050565b600060028204905060018216806123cc57607f821691505b602082108114156123e0576123df6124f8565b5b50919050565b60006123f2838361247c565b9150826002028217905092915050565b61240b8261268a565b810181811067ffffffffffffffff8211171561242a57612429612527565b5b80604052505050565b600061243e8261206c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612471576124706124c9565b5b600182019050919050565b600061248d600019846008026126b5565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026126b5565b815481168255505050565b6000819050919050565b6000819050919050565b600081356125b281612a9b565b80915050919050565b600081356125c881612ab2565b80915050919050565b680100000000000000008211156125eb576125ea612527565b5b6125f481611d56565b828255808310156126305761260881611ce5565b61261184611ce5565b61261a84611d16565b81810183820161262a81836120b4565b50505050505b505050565b6801000000000000000082111561264f5761264e612527565b5b805461265a816123b4565b8084111561266f5761266e84828486611e78565b5b808410156126845761268384828486611dcf565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146126d3576126d261249a565b5b6126dc81612083565b5050565b600082146126f1576126f061249a565b5b6126fa816120f9565b5050565b612706612ac9565b612711818484612a76565b505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b61290281611d2b565b61290d8382546123e6565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61293a8461269b565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61297c8461269b565b9350801983169250808416831791505092915050565b6000600883026129c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826126a8565b6129cc86836126a8565b95508019841693508086168417925050509392505050565b6129ed82612117565b612a006129f982612591565b835461291a565b8255505050565b612a12838383612171565b505050565b612a228383836121da565b505050565b612a318282612328565b5050565b612a3e8261215f565b612a51612a4a8261259b565b8354612950565b8255505050565b8115612a6757612a6661249a565b5b612a71838261236e565b505050565b612a7f8361215f565b612a93612a8b8261259b565b848454612992565b825550505050565b612aa48161202e565b8114612aaf57600080fd5b50565b612abb8161206c565b8114612ac657600080fd5b50565b60009056fea26469706673582212204ecb8996bb39773559c74839e823c3312f16000e008595f44afba65328f7cb2464736f6c63430008040033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/desci-contracts/contracts/DpidAliasRegistry.sol b/desci-contracts/contracts/DpidAliasRegistry.sol new file mode 100644 index 000000000..bea07ed21 --- /dev/null +++ b/desci-contracts/contracts/DpidAliasRegistry.sol @@ -0,0 +1,253 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; + +contract DpidAliasRegistry is Initializable, OwnableUpgradeable, PausableUpgradeable { + // Incremented on each dPID mint + uint256 public nextDpid; + + // dpid => codex streamID (resolve dPID) + mapping(uint256 => string) public registry; + + // codex streamID => dpid (check for existing alias) + mapping(string => uint256) public reverseRegistry; + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + function initialize() public initializer { + OwnableUpgradeable.__Ownable_init(); + PausableUpgradeable.__Pausable_init(); + + // Pause to allow owner to set nextDpid before activating minting + _pause(); + } + + /** + * Resolve the codex stream ID of a given dPID + * @param dpid the alias to resolve + */ + function resolve(uint256 dpid) public view returns(string memory) { + return registry[dpid]; + } + + /** + * Find the dPID of a given codex stream ID, if it exists + * @param streamId the codex stream ID to search for + */ + function find(string calldata streamId) public view returns(uint256) { + return reverseRegistry[streamId]; + } + + /** + * Signal that a stream has been bound to a new dPID alias. + * + * @param dpid the new alias + * @param streamID the bound stream + */ + event DpidMinted ( + uint256 dpid, + string streamID + ); + + /** + * Ensure the streamId to alias is not already bound to a dPID. + * + * @param streamId the stream that is requesting a dPID + */ + modifier onlyUnaliasedStream(string calldata streamId) { + require(reverseRegistry[streamId] == 0, "stream already has a dPID"); + _; + } + + /** + * Claim the next free dPID by pointing it to a codex stream ID. + * This can only be done once, as a given steam can only have one dPID. + * + * @param streamId the codex stream ID to alias + */ + function mintDpid( + string calldata streamId + ) public onlyUnaliasedStream(streamId) whenNotPaused returns(uint256) { + uint256 thisDpid = nextDpid; + + // map this dPID to the passed stream ID + registry[thisDpid] = streamId; + + // map the passed stream ID to this dPID + reverseRegistry[streamId] = thisDpid; + + emit DpidMinted(thisDpid, streamId); + + // Move counter to a free dPID + nextDpid++; + return thisDpid; + } + + // ---------------------- // + // Backward compatibility // + // ---------------------- // + + /** + * Represents a single update in the history of a legacy dPID + */ + struct LegacyVersion { + string cid; + uint256 time; + } + + /** + * Represents the entire lineage of a legacy dPID, associated with it's owner. + * This owner information is what gates the upgrade of a dPID. + */ + struct LegacyDpidEntry { + address owner; + LegacyVersion[] versions; + } + + /** + * Maps legacy dPIDs to their complete history. + * This allows resolving every old state of a legacy dPID + * using only this contract. If the author wants to update + * this history, they need to call upgradeDpid. + * + * This mapping stays populated even after a dPID is upgraded, + * to allow finding the timestamps for previous versions if needed. + * Additionally, if the stream that claims the dPID as an alias + * does not represent the same history, this allows falling back + * to resolving the historical state regardless. + */ + mapping(uint256 => LegacyDpidEntry) public legacy; + + /** + * Lookup the state of an unmigrated, legacy dPID. + * Use this to resolve the history of a dPID that hasn't been updated + * since the protocol upgrade, or to check the timestamps of old versions. + * + * @param dpid the alias to lookup + */ + function legacyLookup(uint256 dpid) public view returns(LegacyDpidEntry memory) { + return legacy[dpid]; + } + + /** + * Signal that a legacy dPID has been upgraded and bound to a stream. + * + * @param dpid the dPID which has been upgraded + * @param streamId the bound stream + */ + event UpgradedDpid ( + uint256 dpid, + string streamId + ); + + /** + * The owner of a legacy dPID can call this function to claim the same dPID + * in this alias registry, by pointing it to a codex stream. + * + * This function can only be called with a stream that hasn't already + * minted an alias, as each stream only can have one dPID. + * + * This is an at-most-once operation, as the registry is immutable. + * The caller must make sure the stream represents the same history, + * and that it controls the stream. This cannot be formally guaranteed, + * which is why the legacy entires are kept to ensure continued deterministic + * resolution of versions as they were originally created. + * + * Contract owner can bypass these two limitations, allowing both mending of + * incorrect upgrades and automating upgrades for legacy dPID holders. + * Associated quirk: when re-upgrading a dPID, the overwritten streamID will + * still be present in the reverse mapping, preventing it to be assigned a dPID. + * This stream is assumed to regardlessly be incorrect, because a re-upgrade + * was chosen. + * + * + * @param dpid the dPID to upgrade + * @param streamId the stream representing that same dPID + */ + function upgradeDpid( + uint256 dpid, + string calldata streamId + ) public onlyUnaliasedStream(streamId) whenNotPaused { + // Assert that this dPID has not been set in the main registry. + // Allow contract owner bypass to fix broken upgrades. + require( + bytes(registry[dpid]).length == 0 || msg.sender == owner(), + "dpid already upgraded" + ); + + // Assert that the tx was made by the owner of the imported entry. + // Allow contract owner bypass to automate upgrades. + require( + legacy[dpid].owner == msg.sender || msg.sender == owner(), + "unauthorized dpid upgrade" + ); + + // Reclaim old dpid + registry[dpid] = streamId; + reverseRegistry[streamId] = dpid; + + emit UpgradedDpid(dpid, streamId); + } + + // ---------------------------- // + // Population of legacy mapping // + // ---------------------------- // + + /** + * Signal that a legacy dPID has been imported into the legacy registry. + * + * @param dpid the imported dPID + * @param entry the historical information to store + */ + event ImportedDpid ( + uint256 dpid, + LegacyDpidEntry entry + ); + + /** + * Import the history and ownership information about a legacy dPID into + * the registry. This allows overwriting to correct migration errors, + * but can be locked for further imports. + * + * Note: this can be called when the contract is paused + * + * @param dpid the dPID to import + * @param entry the historical and ownership information + */ + function importLegacyDpid( + uint256 dpid, + LegacyDpidEntry calldata entry + ) public onlyOwner { + legacy[dpid] = entry; + emit ImportedDpid(dpid, entry); + } + + /** + * When the contract is paused, the owner can correct the next dPID. + * This is useful for making a seamless switch between new and old + * contracts. + */ + function setNextDpid(uint256 _nextDpid) public onlyOwner whenPaused { + nextDpid = _nextDpid; + } + + /** + * Pause minting new dPID's + */ + function pause() public onlyOwner whenNotPaused { + _pause(); + } + + /** + * Resume minting of new dPID's + */ + function unpause() public onlyOwner whenPaused { + _unpause(); + } +} diff --git a/desci-contracts/hardhat.config.ts b/desci-contracts/hardhat.config.ts index 2659b66e2..f088d2ecd 100644 --- a/desci-contracts/hardhat.config.ts +++ b/desci-contracts/hardhat.config.ts @@ -35,14 +35,8 @@ module.exports = { coinmarketcap: process.env.COINMARKETCAP_API_KEY, }, networks: { - // NOTE: hardhat node has a bug with websockets: https://github.com/nomiclabs/hardhat/issues/588 - // alternative is to use ganache for more than running contract tests hardhat: { chainId: 1337, - }, - optimism: { - url: "http://127.0.0.1:8545", - chainId: 17, accounts: { mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, }, @@ -56,51 +50,52 @@ module.exports = { mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, }, }, - rinkeby: { - chainId: 4, + sepoliaDev: { + chainId: 11155111, + live: true, saveDeployments: true, - providerType: "WebSocketProvider", - url: "http://eth-rinkeby.alchemyapi.io/v2/X6CiiZczzALlTM2mAIm_cJnpnFWKTu0l", + url: "https://reverse-proxy-dev.desci.com/rpc_sepolia", accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : { mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, }, + gasPrice: "auto", }, - goerli: { - chainId: 5, + sepoliaProd: { + chainId: 11155111, live: true, saveDeployments: true, - url: "https://eth-goerli.g.alchemy.com/v2/ZeIzCAJyPpRnTtPNSmddHGF-q2yp-2Uy", + url: "https://reverse-proxy-dev.desci.com/rpc_sepolia", accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : { mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, }, - gasPrice: 35000000000, + gasPrice: "auto", }, - sepoliaDev: { - chainId: 11155111, + optimism: { + chainId: 10, live: true, saveDeployments: true, - url: "https://eth-sepolia.g.alchemy.com/v2/Dg4eT90opKOFZ7w-YCxVwX9O-sriKn0N", + url: "https://reverse-proxy-dev.desci.com/rpc_opt_mainnet", accounts: process.env.PRIVATE_KEY - ? [process.env.PRIVATE_KEY] - : { - mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, - }, + ? [ process.env.PRIVATE_KEY ] + : { + mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, + }, gasPrice: "auto", }, - sepoliaProd: { - chainId: 11155111, + optimismSepolia: { + chainId: 11155420, live: true, saveDeployments: true, - url: "https://eth-sepolia.g.alchemy.com/v2/Dg4eT90opKOFZ7w-YCxVwX9O-sriKn0N", + url: "https://reverse-proxy-dev.desci.com/rpc_opt_sepolia", accounts: process.env.PRIVATE_KEY - ? [process.env.PRIVATE_KEY] - : { - mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, - }, + ? [ process.env.PRIVATE_KEY ] + : { + mnemonic: process.env.MNEMONIC || DEFAULT_MNEMONIC, + }, gasPrice: "auto", }, }, diff --git a/desci-contracts/index.ts b/desci-contracts/index.ts index 3a0f4b785..7f3b7d8cc 100644 --- a/desci-contracts/index.ts +++ b/desci-contracts/index.ts @@ -5,6 +5,9 @@ import devRoInfo from "./.openzeppelin/sepoliaDev-research-object.json"; import devDpidInfo from "./.openzeppelin/sepoliaDev-dpid.json"; import prodRoInfo from "./.openzeppelin/sepoliaProd-research-object.json"; import prodDpidInfo from "./.openzeppelin/sepoliaProd-dpid.json"; +import localDpidAliasInfo from "./.openzeppelin/unknown-dpid-alias-registry.json"; +import devDpidAliasInfo from "./.openzeppelin/opSepoliaDev-dpid-alias-registry.json"; +import prodDpidAliasInfo from "./.openzeppelin/opSepoliaProd-dpid-alias-registry.json"; export const contracts = { localRoInfo, @@ -13,4 +16,7 @@ export const contracts = { devDpidInfo, prodRoInfo, prodDpidInfo, + localDpidAliasInfo, + devDpidAliasInfo, + prodDpidAliasInfo, }; diff --git a/desci-contracts/migration-data/aliasRegistrySync_dev_Mon,_24_Jun_2024_15:21:59_GMT.json b/desci-contracts/migration-data/aliasRegistrySync_dev_Mon,_24_Jun_2024_15:21:59_GMT.json new file mode 100644 index 000000000..fce792b1b --- /dev/null +++ b/desci-contracts/migration-data/aliasRegistrySync_dev_Mon,_24_Jun_2024_15:21:59_GMT.json @@ -0,0 +1,4979 @@ +[ + { + "dpid": "0", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie2idd2yuwibppujafgtfc6cczopht4q47y563q4paml2me2dsh6y", + "time": 1675737468 + }, + { + "cid": "bafkreie2idd2yuwibppujafgtfc6cczopht4q47y563q4paml2me2dsh6y", + "time": 1675737468 + } + ], + "validationError": false + }, + { + "dpid": "1", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigbp7bahnrxujbz5uu3j6hzmyimq7wijkucwyi4bc5tbvka5xw3wq", + "time": 1675781796 + }, + { + "cid": "bafkreigbp7bahnrxujbz5uu3j6hzmyimq7wijkucwyi4bc5tbvka5xw3wq", + "time": 1675781796 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818404 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818404 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818608 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818608 + } + ], + "validationError": false + }, + { + "dpid": "2", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihlsxjw3gzrikm2att6sd2yty4qx37z3fgmzokrm6fd3oony2qqby", + "time": 1676095440 + }, + { + "cid": "bafkreihlsxjw3gzrikm2att6sd2yty4qx37z3fgmzokrm6fd3oony2qqby", + "time": 1676095440 + }, + { + "cid": "bafkreigvalv7basyqxn57b5ittssieecsccy7qaypmy6s7egr2o5tcqnda", + "time": 1676096820 + }, + { + "cid": "bafkreigvalv7basyqxn57b5ittssieecsccy7qaypmy6s7egr2o5tcqnda", + "time": 1676096820 + } + ], + "validationError": false + }, + { + "dpid": "3", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiancsq3yywjzkoyevwhn4hxyzgcfbdb72jspegmwy6uacd2cztpra", + "time": 1676725008 + }, + { + "cid": "bafkreiancsq3yywjzkoyevwhn4hxyzgcfbdb72jspegmwy6uacd2cztpra", + "time": 1676725008 + } + ], + "validationError": false + }, + { + "dpid": "4", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreick32zk4ennjwwy7vqva7wpjo2w5d4fkwhg7hkrdjk63xq5r6gup4", + "time": 1676988612 + }, + { + "cid": "bafkreick32zk4ennjwwy7vqva7wpjo2w5d4fkwhg7hkrdjk63xq5r6gup4", + "time": 1676988612 + } + ], + "validationError": false + }, + { + "dpid": "5", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihra4e2ejsm7yqra4wmo2ww43j4ndvylfsrv5obobkl2k666baram", + "time": 1676996292 + }, + { + "cid": "bafkreihra4e2ejsm7yqra4wmo2ww43j4ndvylfsrv5obobkl2k666baram", + "time": 1676996292 + } + ], + "validationError": false + }, + { + "dpid": "6", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiee7atuqdvq7dtxf2msslelz2ubst2g64oigetxunn352ryqvuoti", + "time": 1677066240 + }, + { + "cid": "bafkreiee7atuqdvq7dtxf2msslelz2ubst2g64oigetxunn352ryqvuoti", + "time": 1677066240 + } + ], + "validationError": false + }, + { + "dpid": "7", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidi2idvbbbg5y6iuf3bnbdo7gkyzgoz3hik2hghr3rl3gd7nplnwe", + "time": 1677080820 + }, + { + "cid": "bafkreidi2idvbbbg5y6iuf3bnbdo7gkyzgoz3hik2hghr3rl3gd7nplnwe", + "time": 1677080820 + }, + { + "cid": "bafkreicyvzgk632l2zn55dkbscjrwrlrxlckrxjhpxn6kiv4roegwzprpi", + "time": 1677081012 + }, + { + "cid": "bafkreicyvzgk632l2zn55dkbscjrwrlrxlckrxjhpxn6kiv4roegwzprpi", + "time": 1677081012 + } + ], + "validationError": false + }, + { + "dpid": "8", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibnhuq4tliestyutqxrfco4wwr3gxyrp7dlydxvgkddo6euet5yyu", + "time": 1677144720 + }, + { + "cid": "bafkreibnhuq4tliestyutqxrfco4wwr3gxyrp7dlydxvgkddo6euet5yyu", + "time": 1677144720 + } + ], + "validationError": false + }, + { + "dpid": "9", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigjjlyedw3l7yfunjhaooe226hemiqz7pkeqb3arfmwvujknaa7pe", + "time": 1677230328 + }, + { + "cid": "bafkreigjjlyedw3l7yfunjhaooe226hemiqz7pkeqb3arfmwvujknaa7pe", + "time": 1677230328 + } + ], + "validationError": false + }, + { + "dpid": "10", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihbcdgctujsajvlhbbcghfkg766pprlgatvujzkw6utteryn737wi", + "time": 1677510672 + }, + { + "cid": "bafkreihbcdgctujsajvlhbbcghfkg766pprlgatvujzkw6utteryn737wi", + "time": 1677510672 + }, + { + "cid": "bafkreif6omh6d2nosj7exr4gybupz3i6owb7ig7mfha23bebzbbzgtj3ty", + "time": 1677511224 + }, + { + "cid": "bafkreif6omh6d2nosj7exr4gybupz3i6owb7ig7mfha23bebzbbzgtj3ty", + "time": 1677511224 + } + ], + "validationError": false + }, + { + "dpid": "11", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig75cxpsu2zhnkej7nwqszduw6l32luo3opikzsqa5wpfchnl7sua", + "time": 1678309056 + }, + { + "cid": "bafkreig75cxpsu2zhnkej7nwqszduw6l32luo3opikzsqa5wpfchnl7sua", + "time": 1678309056 + } + ], + "validationError": false + }, + { + "dpid": "12", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigvec6jtxth3eessemov7x62wjhtfpfihdleanekwx5l47rkxclcu", + "time": 1678771692 + }, + { + "cid": "bafkreigvec6jtxth3eessemov7x62wjhtfpfihdleanekwx5l47rkxclcu", + "time": 1678771692 + } + ], + "validationError": false + }, + { + "dpid": "13", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreienztazc23yp5ejvwymgekqf2kmx6foasxul7yzt6w5crjwceqsea", + "time": 1678814328 + }, + { + "cid": "bafkreienztazc23yp5ejvwymgekqf2kmx6foasxul7yzt6w5crjwceqsea", + "time": 1678814328 + }, + { + "cid": "bafkreid4yx77dkhlbmx2gqwwki6y2rjmuybnqkxqmxnoyjtx7uhgdkdeu4", + "time": 1680117252 + }, + { + "cid": "bafkreid4yx77dkhlbmx2gqwwki6y2rjmuybnqkxqmxnoyjtx7uhgdkdeu4", + "time": 1680117252 + } + ], + "validationError": false + }, + { + "dpid": "14", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiasx7tcckutok7a7yk7ej2pv6bolo5naihlk2gny6tpykcfvzxqm4", + "time": 1679014104 + }, + { + "cid": "bafkreiasx7tcckutok7a7yk7ej2pv6bolo5naihlk2gny6tpykcfvzxqm4", + "time": 1679014104 + } + ], + "validationError": false + }, + { + "dpid": "15", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifjuqlmsnnr2vlhwxrjsgu5zczwgodqjuzmo4kzgpzzu5zn42ivby", + "time": 1679219244 + }, + { + "cid": "bafkreifjuqlmsnnr2vlhwxrjsgu5zczwgodqjuzmo4kzgpzzu5zn42ivby", + "time": 1679219244 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219328 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219328 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219484 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219484 + } + ], + "validationError": false + }, + { + "dpid": "16", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig27rnst73rqnqgtesyo32xhrhaqtdxbvtdohwnjdzua7cyapghbu", + "time": 1679343324 + }, + { + "cid": "bafkreig27rnst73rqnqgtesyo32xhrhaqtdxbvtdohwnjdzua7cyapghbu", + "time": 1679343324 + } + ], + "validationError": false + }, + { + "dpid": "17", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigggibyev5x4w3tcydslfl3j5g2fl2sabfcxvdzqeajzfg3tqignq", + "time": 1679409324 + }, + { + "cid": "bafkreigggibyev5x4w3tcydslfl3j5g2fl2sabfcxvdzqeajzfg3tqignq", + "time": 1679409324 + } + ], + "validationError": false + }, + { + "dpid": "18", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigghoctitgbpsjl6elgjkdlpu26t6zon7gqfx7cuhprsyykcjgvee", + "time": 1679409744 + }, + { + "cid": "bafkreigghoctitgbpsjl6elgjkdlpu26t6zon7gqfx7cuhprsyykcjgvee", + "time": 1679409744 + } + ], + "validationError": false + }, + { + "dpid": "19", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicvdmmzw7tyaa7dkaikb7dcowjjbu3cv76rhvxqdbzm7gcg4inrfq", + "time": 1679539764 + }, + { + "cid": "bafkreicvdmmzw7tyaa7dkaikb7dcowjjbu3cv76rhvxqdbzm7gcg4inrfq", + "time": 1679539764 + } + ], + "validationError": false + }, + { + "dpid": "20", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie6bxf7u3z45sn2amk7ocsjihloiecfncmwsgvqoamqjnczfwnexy", + "time": 1679540424 + }, + { + "cid": "bafkreie6bxf7u3z45sn2amk7ocsjihloiecfncmwsgvqoamqjnczfwnexy", + "time": 1679540424 + }, + { + "cid": "bafkreibnxznsx2xwdasyhjr2epkypjohuvz5qy35iu2elyoygjnfbk7im4", + "time": 1680554796 + }, + { + "cid": "bafkreibnxznsx2xwdasyhjr2epkypjohuvz5qy35iu2elyoygjnfbk7im4", + "time": 1680554796 + } + ], + "validationError": false + }, + { + "dpid": "21", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiecholb67ldemsvyr7js2x6dewjnsylvpk47ejyhrokkbnqbl4i4y", + "time": 1679637204 + }, + { + "cid": "bafkreiecholb67ldemsvyr7js2x6dewjnsylvpk47ejyhrokkbnqbl4i4y", + "time": 1679637204 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637252 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637252 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637288 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637288 + } + ], + "validationError": false + }, + { + "dpid": "22", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreid4d4543faobctzfxh53tfa7u2q7jwqll7g3o52b6ko2vxbq6gya4", + "time": 1679658768 + }, + { + "cid": "bafkreid4d4543faobctzfxh53tfa7u2q7jwqll7g3o52b6ko2vxbq6gya4", + "time": 1679658768 + } + ], + "validationError": false + }, + { + "dpid": "23", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifzp4vuudwvek33rcft2rd2szjrimey7yezcsbm2awkx2tjsunwwi", + "time": 1680567024 + }, + { + "cid": "bafkreifzp4vuudwvek33rcft2rd2szjrimey7yezcsbm2awkx2tjsunwwi", + "time": 1680567024 + } + ], + "validationError": false + }, + { + "dpid": "24", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicqcgfswelv7jvt3o5mirsrwbegst354jzl5znfhsysfi5kwa5oem", + "time": 1681191960 + }, + { + "cid": "bafkreicqcgfswelv7jvt3o5mirsrwbegst354jzl5znfhsysfi5kwa5oem", + "time": 1681191960 + } + ], + "validationError": false + }, + { + "dpid": "25", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiai7ekqchod7c7na6bsc5aeicugtqr2ai4jhdyjal4ukzzjdoxdoi", + "time": 1681495752 + }, + { + "cid": "bafkreiai7ekqchod7c7na6bsc5aeicugtqr2ai4jhdyjal4ukzzjdoxdoi", + "time": 1681495752 + } + ], + "validationError": false + }, + { + "dpid": "26", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiasg744hrz2h6tkkw4a2z55orh33v5rs2j62mx3arsuqxa5dppyzq", + "time": 1681497684 + }, + { + "cid": "bafkreiasg744hrz2h6tkkw4a2z55orh33v5rs2j62mx3arsuqxa5dppyzq", + "time": 1681497684 + }, + { + "cid": "bafkreicbh5ytfk7ohfa7tw44q5nmjkzmqseiesoskwcjntwc6apx7ifyyi", + "time": 1681497900 + }, + { + "cid": "bafkreicbh5ytfk7ohfa7tw44q5nmjkzmqseiesoskwcjntwc6apx7ifyyi", + "time": 1681497900 + } + ], + "validationError": false + }, + { + "dpid": "27", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiehj4xqrpk5m6sdemt5nv6ktb5uxp6ihmg3apdwiu6xhkjzlcmuka", + "time": 1681505184 + }, + { + "cid": "bafkreiehj4xqrpk5m6sdemt5nv6ktb5uxp6ihmg3apdwiu6xhkjzlcmuka", + "time": 1681505184 + } + ], + "validationError": false + }, + { + "dpid": "28", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihmuuks36pyt5quuvjbxkhyu6lhdf3sfbqvfii6j2gemwpu2uc67q", + "time": 1681506588 + }, + { + "cid": "bafkreihmuuks36pyt5quuvjbxkhyu6lhdf3sfbqvfii6j2gemwpu2uc67q", + "time": 1681506588 + } + ], + "validationError": false + }, + { + "dpid": "29", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigifwmh35byvn2yzg2vojm6r6qpjyoce6dfdsacmch336adgqmyee", + "time": 1681736556 + }, + { + "cid": "bafkreigifwmh35byvn2yzg2vojm6r6qpjyoce6dfdsacmch336adgqmyee", + "time": 1681736556 + }, + { + "cid": "bafkreicxifdkouaya7pzrj2upqft2c637t6awklqjsbd76dfog42hxvlqu", + "time": 1681736628 + }, + { + "cid": "bafkreicxifdkouaya7pzrj2upqft2c637t6awklqjsbd76dfog42hxvlqu", + "time": 1681736628 + } + ], + "validationError": false + }, + { + "dpid": "30", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidtjqvqyoq7ehafmy7vvhjlewgtxkxaqr7anwtwtgkzvlogmfwaey", + "time": 1681761420 + }, + { + "cid": "bafkreidtjqvqyoq7ehafmy7vvhjlewgtxkxaqr7anwtwtgkzvlogmfwaey", + "time": 1681761420 + }, + { + "cid": "bafkreif6imae7ikphst6f2opahy2bn4qnm3srzj4rmnpdhrqtykwr6c4yu", + "time": 1681762272 + }, + { + "cid": "bafkreif6imae7ikphst6f2opahy2bn4qnm3srzj4rmnpdhrqtykwr6c4yu", + "time": 1681762272 + } + ], + "validationError": false + }, + { + "dpid": "31", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiahcqh7zzoz27gzh2chwto2u5kabmf2vmca3xbmzrlmgoqucrmfky", + "time": 1681805808 + }, + { + "cid": "bafkreiahcqh7zzoz27gzh2chwto2u5kabmf2vmca3xbmzrlmgoqucrmfky", + "time": 1681805808 + } + ], + "validationError": false + }, + { + "dpid": "32", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaakpmpc5jr4bp3puzzpdjv5nh3maunzbaug2p335ngmdfsfekkxe", + "time": 1681830960 + }, + { + "cid": "bafkreiaakpmpc5jr4bp3puzzpdjv5nh3maunzbaug2p335ngmdfsfekkxe", + "time": 1681830960 + } + ], + "validationError": false + }, + { + "dpid": "33", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreic2zkjdknqf5kfelzzstfovdwuc2dolbaej7eduedn6md7rpfo27y", + "time": 1682014560 + }, + { + "cid": "bafkreic2zkjdknqf5kfelzzstfovdwuc2dolbaej7eduedn6md7rpfo27y", + "time": 1682014560 + } + ], + "validationError": false + }, + { + "dpid": "34", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibkbhhedb3yazc6rze6772ouoymv3yy5vqmilmwi6eq7yuw3n6tue", + "time": 1682144088 + }, + { + "cid": "bafkreibkbhhedb3yazc6rze6772ouoymv3yy5vqmilmwi6eq7yuw3n6tue", + "time": 1682144088 + } + ], + "validationError": false + }, + { + "dpid": "35", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreih4kylr5z5oppj6wprw2luiyngsn3xq324kfbiku4ehi42dess4oi", + "time": 1682534976 + }, + { + "cid": "bafkreih4kylr5z5oppj6wprw2luiyngsn3xq324kfbiku4ehi42dess4oi", + "time": 1682534976 + }, + { + "cid": "bafkreidasu577tdw76nprafzy7oa42nlr6gcyk45agx3tawrw3zyxu7mva", + "time": 1682746284 + }, + { + "cid": "bafkreidasu577tdw76nprafzy7oa42nlr6gcyk45agx3tawrw3zyxu7mva", + "time": 1682746284 + }, + { + "cid": "bafkreieaozkgywz6vonai3kmhr6cct5jjpeau3lhy2zrb2ft3dsnudaxym", + "time": 1682813004 + }, + { + "cid": "bafkreieaozkgywz6vonai3kmhr6cct5jjpeau3lhy2zrb2ft3dsnudaxym", + "time": 1682813004 + } + ], + "validationError": false + }, + { + "dpid": "36", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifc4so5xny7vpkj62oejlxlnh2zp6w76idbvx3mi2t5nkhxpbenbe", + "time": 1682670864 + }, + { + "cid": "bafkreifc4so5xny7vpkj62oejlxlnh2zp6w76idbvx3mi2t5nkhxpbenbe", + "time": 1682670864 + } + ], + "validationError": false + }, + { + "dpid": "37", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiadoa3b3hvlzpfliappjvhzoacqst2tnu5x7cjvhwcdjhplqakmmy", + "time": 1682793228 + }, + { + "cid": "bafkreiadoa3b3hvlzpfliappjvhzoacqst2tnu5x7cjvhwcdjhplqakmmy", + "time": 1682793228 + }, + { + "cid": "bafkreiad7vwyvhxpgy5i6azrynsnu5g2x5ef7iwjafbnnvukkbc7dvygru", + "time": 1682793408 + }, + { + "cid": "bafkreiad7vwyvhxpgy5i6azrynsnu5g2x5ef7iwjafbnnvukkbc7dvygru", + "time": 1682793408 + } + ], + "validationError": false + }, + { + "dpid": "38", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiagyoholq6ypx4pdby56vfzq7a44q3sn6esvho7wcf6m4eghpcjoa", + "time": 1682813880 + }, + { + "cid": "bafkreiagyoholq6ypx4pdby56vfzq7a44q3sn6esvho7wcf6m4eghpcjoa", + "time": 1682813880 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682814000 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682814000 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682822136 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682822136 + } + ], + "validationError": false + }, + { + "dpid": "39", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtewpmyizn2rvgbd7yqzirfcunu264zqwjc6qmf32wwtocp57eta", + "time": 1682820372 + }, + { + "cid": "bafkreibtewpmyizn2rvgbd7yqzirfcunu264zqwjc6qmf32wwtocp57eta", + "time": 1682820372 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682820648 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682820648 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682821080 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682821080 + }, + { + "cid": "bafkreiero2ggetbv2g5voe4yg7lr53cl7aocrcdbn5ndz754ani2c4xwye", + "time": 1682849124 + }, + { + "cid": "bafkreiero2ggetbv2g5voe4yg7lr53cl7aocrcdbn5ndz754ani2c4xwye", + "time": 1682849124 + } + ], + "validationError": false + }, + { + "dpid": "40", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821224 + }, + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821224 + }, + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821884 + }, + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821884 + } + ], + "validationError": false + }, + { + "dpid": "41", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihesv24wbwkhgjeplqi7lu2rm5d75o6es3krxbj4rfmhk3bcxavhe", + "time": 1682854224 + }, + { + "cid": "bafkreihesv24wbwkhgjeplqi7lu2rm5d75o6es3krxbj4rfmhk3bcxavhe", + "time": 1682854224 + }, + { + "cid": "bafkreifmd5ucm3ypfkph7klhghsgyvfinkrwxw6uuiwpdjoarmxotflwaa", + "time": 1682854344 + }, + { + "cid": "bafkreifmd5ucm3ypfkph7klhghsgyvfinkrwxw6uuiwpdjoarmxotflwaa", + "time": 1682854344 + } + ], + "validationError": false + }, + { + "dpid": "42", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie46ed23xpsfgxasdbhzq4zrni5v4dv3lbohasnqkgmohq4g6bjam", + "time": 1682856480 + }, + { + "cid": "bafkreie46ed23xpsfgxasdbhzq4zrni5v4dv3lbohasnqkgmohq4g6bjam", + "time": 1682856480 + } + ], + "validationError": false + }, + { + "dpid": "43", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigumcdo4dafutywplrgg7xgo6swf2qygljyzwktsafuhvednvpmhy", + "time": 1682951112 + }, + { + "cid": "bafkreigumcdo4dafutywplrgg7xgo6swf2qygljyzwktsafuhvednvpmhy", + "time": 1682951112 + } + ], + "validationError": false + }, + { + "dpid": "44", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihqpbdqrgnp6mebwfcqqt3izgreiw4zgiw42zmkezipmktv777itu", + "time": 1682962248 + }, + { + "cid": "bafkreihqpbdqrgnp6mebwfcqqt3izgreiw4zgiw42zmkezipmktv777itu", + "time": 1682962248 + } + ], + "validationError": false + }, + { + "dpid": "45", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihfrfianmcigzvnnetxkzwlcgza75dsah7ab5anx43phu3mke3uky", + "time": 1682993892 + }, + { + "cid": "bafkreihfrfianmcigzvnnetxkzwlcgza75dsah7ab5anx43phu3mke3uky", + "time": 1682993892 + } + ], + "validationError": false + }, + { + "dpid": "46", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia2nvcwknooiu6t6ywob4dhd6exb3aamogse4n7kkydybjaugdr6u", + "time": 1683053508 + }, + { + "cid": "bafkreia2nvcwknooiu6t6ywob4dhd6exb3aamogse4n7kkydybjaugdr6u", + "time": 1683053508 + }, + { + "cid": "bafkreih5koqw5nvxucidlihwfslknj674oeuroclit74rkaqpe4mq6xuka", + "time": 1683222132 + }, + { + "cid": "bafkreih5koqw5nvxucidlihwfslknj674oeuroclit74rkaqpe4mq6xuka", + "time": 1683222132 + }, + { + "cid": "bafkreif3d644utirvwvkmukcrhg64palp3r4xociwsn6b6o2hxmkdxalby", + "time": 1683227616 + }, + { + "cid": "bafkreif3d644utirvwvkmukcrhg64palp3r4xociwsn6b6o2hxmkdxalby", + "time": 1683227616 + }, + { + "cid": "bafkreibn3jhdlsdsonv25t7i2bwtrbkl3jzwjbnnwylpeih3jmmzdhsfmi", + "time": 1683298680 + }, + { + "cid": "bafkreibn3jhdlsdsonv25t7i2bwtrbkl3jzwjbnnwylpeih3jmmzdhsfmi", + "time": 1683298680 + }, + { + "cid": "bafkreiepot62powegf7tt73gyiz24facsdloywggattt2asz5y4eaqhkyi", + "time": 1683299940 + }, + { + "cid": "bafkreiepot62powegf7tt73gyiz24facsdloywggattt2asz5y4eaqhkyi", + "time": 1683299940 + }, + { + "cid": "bafkreihge5qw7sc3mqc4wkf4cgpv6udtvrgipfxwyph7dhlyu6bkkt7tfq", + "time": 1705420740 + }, + { + "cid": "bafkreihge5qw7sc3mqc4wkf4cgpv6udtvrgipfxwyph7dhlyu6bkkt7tfq", + "time": 1705420740 + } + ], + "validationError": false + }, + { + "dpid": "47", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia7orsrr4pwxe5m2gnklknpc25kjs7gnzemofki3aeh6ydh4hkfju", + "time": 1683222948 + }, + { + "cid": "bafkreia7orsrr4pwxe5m2gnklknpc25kjs7gnzemofki3aeh6ydh4hkfju", + "time": 1683222948 + } + ], + "validationError": false + }, + { + "dpid": "48", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieahbi5tzb2od7nb2j5up4ooiglvh2lty2bgcrwjc3km7fnsplaxu", + "time": 1683232692 + }, + { + "cid": "bafkreieahbi5tzb2od7nb2j5up4ooiglvh2lty2bgcrwjc3km7fnsplaxu", + "time": 1683232692 + } + ], + "validationError": false + }, + { + "dpid": "49", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiet6onaozwmqyflpbjsa7f6f5jkhou5n3vxxkxmkgalhnr54bzftu", + "time": 1683236460 + }, + { + "cid": "bafkreiet6onaozwmqyflpbjsa7f6f5jkhou5n3vxxkxmkgalhnr54bzftu", + "time": 1683236460 + }, + { + "cid": "bafkreibp3hplo3b2hfetbrargv2gv2dkx3kfqfsqbxhkuved2k2nebxcpa", + "time": 1683236760 + }, + { + "cid": "bafkreibp3hplo3b2hfetbrargv2gv2dkx3kfqfsqbxhkuved2k2nebxcpa", + "time": 1683236760 + }, + { + "cid": "bafkreigym3lzf2ruzd3r23mflxjzafqfxoi5bncru3t4ky35vfaubbke34", + "time": 1683236760 + }, + { + "cid": "bafkreigym3lzf2ruzd3r23mflxjzafqfxoi5bncru3t4ky35vfaubbke34", + "time": 1683236760 + }, + { + "cid": "bafkreife4uk2mkecur54sq774ybtrka5l4gd5777j5cjjscfmx4vcqnfbm", + "time": 1683237288 + }, + { + "cid": "bafkreife4uk2mkecur54sq774ybtrka5l4gd5777j5cjjscfmx4vcqnfbm", + "time": 1683237288 + } + ], + "validationError": false + }, + { + "dpid": "50", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibroag6m5tps4srrtdxbfq74sskvpfu4sbhadhkh3vfonjrlmsvda", + "time": 1683886968 + }, + { + "cid": "bafkreibroag6m5tps4srrtdxbfq74sskvpfu4sbhadhkh3vfonjrlmsvda", + "time": 1683886968 + } + ], + "validationError": false + }, + { + "dpid": "51", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiheezwrynuxo6gnjd2pmahkcw3wstooxs6fvaflpjouewmh4qi3aa", + "time": 1683930000 + }, + { + "cid": "bafkreiheezwrynuxo6gnjd2pmahkcw3wstooxs6fvaflpjouewmh4qi3aa", + "time": 1683930000 + }, + { + "cid": "bafkreiasjo5wzkkk2s56tvdkmbe56vj4j7gyq345vnqpwvnvwozzhtkxfq", + "time": 1683931428 + }, + { + "cid": "bafkreiasjo5wzkkk2s56tvdkmbe56vj4j7gyq345vnqpwvnvwozzhtkxfq", + "time": 1683931428 + } + ], + "validationError": false + }, + { + "dpid": "52", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicxw5tzwajvwa757ihut3hvlgnfbpu7fa4oxfvvlssu4rikfrtmv4", + "time": 1684412244 + }, + { + "cid": "bafkreicxw5tzwajvwa757ihut3hvlgnfbpu7fa4oxfvvlssu4rikfrtmv4", + "time": 1684412244 + } + ], + "validationError": false + }, + { + "dpid": "53", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia7yjdhq6tdxjtwyr4ajfhxypq3jxbo5augryzzeos7cqrbyy6jmi", + "time": 1684862784 + }, + { + "cid": "bafkreia7yjdhq6tdxjtwyr4ajfhxypq3jxbo5augryzzeos7cqrbyy6jmi", + "time": 1684862784 + }, + { + "cid": "bafkreifutouvscu3pbsaabgxdxqfd6zaphkcuei6i3fibdeefmrh4oujby", + "time": 1686612108 + }, + { + "cid": "bafkreifutouvscu3pbsaabgxdxqfd6zaphkcuei6i3fibdeefmrh4oujby", + "time": 1686612108 + } + ], + "validationError": false + }, + { + "dpid": "54", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigtfrsogce5ixgj4dvjgvj2qgjsujs5g4sa64svziiyz6j2bajise", + "time": 1685098464 + }, + { + "cid": "bafkreigtfrsogce5ixgj4dvjgvj2qgjsujs5g4sa64svziiyz6j2bajise", + "time": 1685098464 + }, + { + "cid": "bafkreihocw2lexz7nz4sfwmy576guhbecxnzq4wfltnx5twqn2clng3ewu", + "time": 1685098776 + }, + { + "cid": "bafkreihocw2lexz7nz4sfwmy576guhbecxnzq4wfltnx5twqn2clng3ewu", + "time": 1685098776 + } + ], + "validationError": false + }, + { + "dpid": "55", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicup2qewrwovkkgk5bun4vpws7cbq3qnv2rbt7truyw54owvtwovm", + "time": 1685442360 + }, + { + "cid": "bafkreicup2qewrwovkkgk5bun4vpws7cbq3qnv2rbt7truyw54owvtwovm", + "time": 1685442360 + } + ], + "validationError": false + }, + { + "dpid": "56", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieis5ac2evezkciy26fvswybmyyarfnrlvyh7p5acvbhcsceayorq", + "time": 1685444172 + }, + { + "cid": "bafkreieis5ac2evezkciy26fvswybmyyarfnrlvyh7p5acvbhcsceayorq", + "time": 1685444172 + }, + { + "cid": "bafkreid6ibvbiblu6vviuc3l6ivmpmpdbj2rzt625capmi4igns2r7k4ue", + "time": 1685448060 + }, + { + "cid": "bafkreid6ibvbiblu6vviuc3l6ivmpmpdbj2rzt625capmi4igns2r7k4ue", + "time": 1685448060 + } + ], + "validationError": false + }, + { + "dpid": "57", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaulqrzufg3qnw55rwzqtn5h2cvsawdunrfwt4j32ywt6oswi5bfm", + "time": 1685525952 + }, + { + "cid": "bafkreiaulqrzufg3qnw55rwzqtn5h2cvsawdunrfwt4j32ywt6oswi5bfm", + "time": 1685525952 + } + ], + "validationError": false + }, + { + "dpid": "58", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidlxqbem5m3kgtntq6243vujhuyvt2s72ry2k5uy4f6hmjwbezdje", + "time": 1685526132 + }, + { + "cid": "bafkreidlxqbem5m3kgtntq6243vujhuyvt2s72ry2k5uy4f6hmjwbezdje", + "time": 1685526132 + }, + { + "cid": "bafkreib2gln7ztcpt6z7q7yo6isznl6lam4zv74hwslwhplh6g55re26lm", + "time": 1685536224 + }, + { + "cid": "bafkreib2gln7ztcpt6z7q7yo6isznl6lam4zv74hwslwhplh6g55re26lm", + "time": 1685536224 + } + ], + "validationError": false + }, + { + "dpid": "59", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigj2svt7njv2nxznzm42pisbjgpfjzhoorlcsryjlx5coa2klssku", + "time": 1685613060 + }, + { + "cid": "bafkreigvuao6ogwtnr2oknvxl3a5mtulhats7dqsiuturbxnnablevorai", + "time": 1685613240 + }, + { + "cid": "bafkreigvuao6ogwtnr2oknvxl3a5mtulhats7dqsiuturbxnnablevorai", + "time": 1685613240 + } + ], + "validationError": false + }, + { + "dpid": "60", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiefsjhlwr6bcq4nscdoz2q2tkca5i7ocxgtn5nxggkf2lr5a2z2lq", + "time": 1685613216 + }, + { + "cid": "bafkreifmohd57nd6xbcjrc3b6dxgpycgijleopks7hrmza4t23dvqxd2au", + "time": 1685613708 + } + ], + "validationError": false + }, + { + "dpid": "61", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreid5vwbe6ri74rgtdevbjznreexoedsocftjqgpopx3bih656jwzni", + "time": 1685614104 + }, + { + "cid": "bafkreid5vwbe6ri74rgtdevbjznreexoedsocftjqgpopx3bih656jwzni", + "time": 1685614104 + } + ], + "validationError": false + }, + { + "dpid": "62", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiapjbbsrowag6txt3wuilla2vp6dhhijkylklmvdzc4es3qb27buq", + "time": 1685615388 + }, + { + "cid": "bafkreiapjbbsrowag6txt3wuilla2vp6dhhijkylklmvdzc4es3qb27buq", + "time": 1685615388 + } + ], + "validationError": false + }, + { + "dpid": "63", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicjmhgi5sbjvo2i3nzwfkwfmahgipbyq6iasekibgqpl75cdiqdsi", + "time": 1685615724 + } + ], + "validationError": false + }, + { + "dpid": "64", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib2rkswbatx7qqcnymxcajqrgrywfzlsiischsrfowhbd5vjfskfi", + "time": 1685719428 + } + ], + "validationError": false + }, + { + "dpid": "65", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifdylfaiep4lc4544mow5aiq4vg37buebiybfx5wyznfi4pov6qri", + "time": 1686220584 + } + ], + "validationError": false + }, + { + "dpid": "66", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibelil5fgqul2o3chxv7g7xmdqkv2krqkv6r6mdbiw72vcqp4wxky", + "time": 1687805292 + }, + { + "cid": "bafkreiefvtk6gcvlxq3hw3lkxcjjy5aqkaxyu4swucs2wd3imjhi2yfdpm", + "time": 1687805484 + } + ], + "validationError": false + }, + { + "dpid": "67", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiazlufpwemnsbzscuycou7gi5m7t2p4yxbxvozkvxex47uczuokba", + "time": 1687807524 + }, + { + "cid": "bafkreiazlufpwemnsbzscuycou7gi5m7t2p4yxbxvozkvxex47uczuokba", + "time": 1687807524 + }, + { + "cid": "bafkreidupix2c3fizisuv2z6tluypvssf6solprgnmev6ul6vp6dprwop4", + "time": 1687808232 + }, + { + "cid": "bafkreidupix2c3fizisuv2z6tluypvssf6solprgnmev6ul6vp6dprwop4", + "time": 1687808232 + } + ], + "validationError": false + }, + { + "dpid": "68", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihakt3w53hwvneg2o3e4xysgegwk5j5rs6mug6ywlwb2bmprm4wzy", + "time": 1687812132 + }, + { + "cid": "bafkreihakt3w53hwvneg2o3e4xysgegwk5j5rs6mug6ywlwb2bmprm4wzy", + "time": 1687812132 + } + ], + "validationError": false + }, + { + "dpid": "69", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigfelcudmytsq2s2j4wcy3j7tsyatpnffpcthf6zz7q5wa4snafdm", + "time": 1687812804 + }, + { + "cid": "bafkreigfelcudmytsq2s2j4wcy3j7tsyatpnffpcthf6zz7q5wa4snafdm", + "time": 1687812804 + } + ], + "validationError": false + }, + { + "dpid": "70", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicandi5eh3gwuxwlq6k6fpeuurnbpbx33q3ijndg44go2p5ekni3y", + "time": 1687817568 + }, + { + "cid": "bafkreicandi5eh3gwuxwlq6k6fpeuurnbpbx33q3ijndg44go2p5ekni3y", + "time": 1687817568 + } + ], + "validationError": false + }, + { + "dpid": "71", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibb5g5ujmxeve56ktnuolb7rrncmbgedtrjemeshn6rxbrhn4uepe", + "time": 1688024628 + }, + { + "cid": "bafkreibb5g5ujmxeve56ktnuolb7rrncmbgedtrjemeshn6rxbrhn4uepe", + "time": 1688024628 + }, + { + "cid": "bafkreiddtartrk6isrs3j5ltx6nkcv437jsu62vc6ew3cwvxk3msebzg5e", + "time": 1688024676 + }, + { + "cid": "bafkreiddtartrk6isrs3j5ltx6nkcv437jsu62vc6ew3cwvxk3msebzg5e", + "time": 1688024676 + } + ], + "validationError": false + }, + { + "dpid": "72", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicj4c44gghcoy2ztvwe32fmbv7cuvty2hv2y4ndrnd6ghrl3ciaea", + "time": 1688552688 + }, + { + "cid": "bafkreicj4c44gghcoy2ztvwe32fmbv7cuvty2hv2y4ndrnd6ghrl3ciaea", + "time": 1688552688 + } + ], + "validationError": false + }, + { + "dpid": "73", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1688720808 + }, + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1688720808 + }, + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1689009768 + }, + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1689009768 + } + ], + "validationError": false + }, + { + "dpid": "74", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifqxkjzypbtz7snjp3ghjrv56bd5umihchpwfppnoz67tcmhuq7wi", + "time": 1689041640 + }, + { + "cid": "bafkreifqxkjzypbtz7snjp3ghjrv56bd5umihchpwfppnoz67tcmhuq7wi", + "time": 1689041640 + } + ], + "validationError": false + }, + { + "dpid": "75", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtsll3aq2bynvlxnqh6nxafzdm4cpiovr3bcncbkzjcy32xalp7i", + "time": 1689294216 + }, + { + "cid": "bafkreibtsll3aq2bynvlxnqh6nxafzdm4cpiovr3bcncbkzjcy32xalp7i", + "time": 1689294216 + } + ], + "validationError": false + }, + { + "dpid": "76", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiatjdpouudloenzdzb7d3e5pogruvwbhurcnm2g5h64jmkpk2uebe", + "time": 1689518988 + }, + { + "cid": "bafkreiatjdpouudloenzdzb7d3e5pogruvwbhurcnm2g5h64jmkpk2uebe", + "time": 1689518988 + }, + { + "cid": "bafkreigg3xk6ojueylnninvwsrw62nqpt7pyjnz6thaipbydb5ltclctly", + "time": 1692182952 + }, + { + "cid": "bafkreigg3xk6ojueylnninvwsrw62nqpt7pyjnz6thaipbydb5ltclctly", + "time": 1692182952 + }, + { + "cid": "bafkreicrggm7jpxgaj2vgydvefuravrs2bh4emlt6eadx3zsbubtpulmcq", + "time": 1692330000 + }, + { + "cid": "bafkreicrggm7jpxgaj2vgydvefuravrs2bh4emlt6eadx3zsbubtpulmcq", + "time": 1692330000 + }, + { + "cid": "bafkreifgfzjltrvcz3qixyjkiubgms2r3figm37euwxzbi6pvej2me6tje", + "time": 1701997248 + }, + { + "cid": "bafkreifgfzjltrvcz3qixyjkiubgms2r3figm37euwxzbi6pvej2me6tje", + "time": 1701997248 + }, + { + "cid": "bafkreic4wiuatha4wclfbwft4vaeeqifrbb2f3tqm4eoajommogudbvswu", + "time": 1702000140 + }, + { + "cid": "bafkreic4wiuatha4wclfbwft4vaeeqifrbb2f3tqm4eoajommogudbvswu", + "time": 1702000140 + }, + { + "cid": "bafkreicraffpobz3k5rzdmigl5tzklihwuim4kwe7xl5uulmfrkr4uvm2u", + "time": 1702045680 + }, + { + "cid": "bafkreicraffpobz3k5rzdmigl5tzklihwuim4kwe7xl5uulmfrkr4uvm2u", + "time": 1702045680 + }, + { + "cid": "bafkreidtkraxowlx26oz5g6qyfuawhx5nroil4a4mo6ywa7knfel7ft2dq", + "time": 1702045944 + }, + { + "cid": "bafkreidtkraxowlx26oz5g6qyfuawhx5nroil4a4mo6ywa7knfel7ft2dq", + "time": 1702045944 + } + ], + "validationError": false + }, + { + "dpid": "77", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaqxrcrai2j2lpk2moare5abq4vtyhxk6m5jxo5fbqkrsy24kdm7q", + "time": 1691492520 + }, + { + "cid": "bafkreiaqxrcrai2j2lpk2moare5abq4vtyhxk6m5jxo5fbqkrsy24kdm7q", + "time": 1691492520 + }, + { + "cid": "bafkreihjozked2lgpgtdcuvzejanhnm65sccwglgblxfdg3cwi72vlrtvq", + "time": 1691493636 + }, + { + "cid": "bafkreihjozked2lgpgtdcuvzejanhnm65sccwglgblxfdg3cwi72vlrtvq", + "time": 1691493636 + }, + { + "cid": "bafkreieodz3e4kzbnlg4nka5pwrgafwuuemfuejxqa5dpdaqlgt6bjs7fm", + "time": 1691496348 + }, + { + "cid": "bafkreieodz3e4kzbnlg4nka5pwrgafwuuemfuejxqa5dpdaqlgt6bjs7fm", + "time": 1691496348 + } + ], + "validationError": false + }, + { + "dpid": "78", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifixmk6tierh6qompfouk63r6clg5jbeuvwherrxacq4uoedk4o5q", + "time": 1691501736 + }, + { + "cid": "bafkreifixmk6tierh6qompfouk63r6clg5jbeuvwherrxacq4uoedk4o5q", + "time": 1691501736 + } + ], + "validationError": false + }, + { + "dpid": "79", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtuuiejhyxu4zr2od34biucedhlmqdmqem6v2ruqu6ov2kgsfnfa", + "time": 1692472464 + }, + { + "cid": "bafkreibtuuiejhyxu4zr2od34biucedhlmqdmqem6v2ruqu6ov2kgsfnfa", + "time": 1692472464 + } + ], + "validationError": false + }, + { + "dpid": "80", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiawwe6os5lxye3hojdmwgcdt4nrs7xwfqy3p3vuv7xolhbnc2nqaq", + "time": 1693245804 + }, + { + "cid": "bafkreiawwe6os5lxye3hojdmwgcdt4nrs7xwfqy3p3vuv7xolhbnc2nqaq", + "time": 1693245804 + }, + { + "cid": "bafkreichlzplxpphzyoo3mnjg6tm2e4uplpm4d2q667a6dbz6xhctvktai", + "time": 1693246872 + }, + { + "cid": "bafkreichlzplxpphzyoo3mnjg6tm2e4uplpm4d2q667a6dbz6xhctvktai", + "time": 1693246872 + } + ], + "validationError": false + }, + { + "dpid": "81", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieefydw5dajtfgz5xqecgyyqxt7kzzyibihy4dvnrtwakaahkn34y", + "time": 1693246440 + }, + { + "cid": "bafkreieefydw5dajtfgz5xqecgyyqxt7kzzyibihy4dvnrtwakaahkn34y", + "time": 1693246440 + }, + { + "cid": "bafkreicpdjfhoxg3gyc2xn63ppbxf7a7wvehkl4h34dapqeqekfetwunme", + "time": 1700147784 + }, + { + "cid": "bafkreicpdjfhoxg3gyc2xn63ppbxf7a7wvehkl4h34dapqeqekfetwunme", + "time": 1700147784 + } + ], + "validationError": false + }, + { + "dpid": "82", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicmvrritjqe4eatfkix3k6kgxz7oxlxengyfhg7rkubpagmxymiqa", + "time": 1693247148 + }, + { + "cid": "bafkreicmvrritjqe4eatfkix3k6kgxz7oxlxengyfhg7rkubpagmxymiqa", + "time": 1693247148 + } + ], + "validationError": false + }, + { + "dpid": "83", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia6ccnzt76b23xkq7slvzxgebltmlkmvcbvr77nzfyca7wpq6qkru", + "time": 1693247616 + }, + { + "cid": "bafkreia6ccnzt76b23xkq7slvzxgebltmlkmvcbvr77nzfyca7wpq6qkru", + "time": 1693247616 + }, + { + "cid": "bafkreidrb3cry4mh6fcik54rotatfnz2mapg3olcsxqpodgdbecrh5iu54", + "time": 1700147268 + }, + { + "cid": "bafkreidrb3cry4mh6fcik54rotatfnz2mapg3olcsxqpodgdbecrh5iu54", + "time": 1700147268 + } + ], + "validationError": false + }, + { + "dpid": "84", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibgfpmyizfiu6mpmdcn6aqvqrli72za72ccrxsim24nhtfv3cqb7m", + "time": 1693248192 + }, + { + "cid": "bafkreibgfpmyizfiu6mpmdcn6aqvqrli72za72ccrxsim24nhtfv3cqb7m", + "time": 1693248192 + }, + { + "cid": "bafkreidfksyvtp5vjzoczjupn6h6h72dcr2p2rm63l7l5qwn6sq6d2nyjy", + "time": 1700146980 + }, + { + "cid": "bafkreidfksyvtp5vjzoczjupn6h6h72dcr2p2rm63l7l5qwn6sq6d2nyjy", + "time": 1700146980 + } + ], + "validationError": false + }, + { + "dpid": "85", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreichgcyenem343rn3cgpyymyicdgoe7vgkev7z7bccskncaux7rxt4", + "time": 1693248672 + }, + { + "cid": "bafkreichgcyenem343rn3cgpyymyicdgoe7vgkev7z7bccskncaux7rxt4", + "time": 1693248672 + }, + { + "cid": "bafkreiejwrzg3vtvrvxm75dzgmk3736v4wrhl6uin64hzq76oekbkqi2ci", + "time": 1700146392 + }, + { + "cid": "bafkreiejwrzg3vtvrvxm75dzgmk3736v4wrhl6uin64hzq76oekbkqi2ci", + "time": 1700146392 + } + ], + "validationError": false + }, + { + "dpid": "86", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihxqrtbvhxg3w2nu3ahpcu2it6qvnmca4xb72vq4w27er3v4rsjgi", + "time": 1693249560 + }, + { + "cid": "bafkreihxqrtbvhxg3w2nu3ahpcu2it6qvnmca4xb72vq4w27er3v4rsjgi", + "time": 1693249560 + }, + { + "cid": "bafkreidlqc6jfns3ftpxoopx7etmfqp75xwoptd6es36xir2fl4nkvmx6i", + "time": 1700145552 + }, + { + "cid": "bafkreidlqc6jfns3ftpxoopx7etmfqp75xwoptd6es36xir2fl4nkvmx6i", + "time": 1700145552 + } + ], + "validationError": false + }, + { + "dpid": "87", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidlb227q7gvv622itmewvsdli726msbjgtsoufaepsaajrc66d27u", + "time": 1693249908 + }, + { + "cid": "bafkreidlb227q7gvv622itmewvsdli726msbjgtsoufaepsaajrc66d27u", + "time": 1693249908 + }, + { + "cid": "bafkreibaiviks6ed4yuwaidz4zzerlhmlkbdcxucky74ah4nu37cm443lm", + "time": 1700146176 + }, + { + "cid": "bafkreibaiviks6ed4yuwaidz4zzerlhmlkbdcxucky74ah4nu37cm443lm", + "time": 1700146176 + } + ], + "validationError": false + }, + { + "dpid": "88", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibdpyr6vlsifgi3cebv7ip26ynplllfzpekxz4zfj7xna7uolpjgy", + "time": 1693250244 + }, + { + "cid": "bafkreibdpyr6vlsifgi3cebv7ip26ynplllfzpekxz4zfj7xna7uolpjgy", + "time": 1693250244 + }, + { + "cid": "bafkreif7e3nkqyrpa6pkhlnv7sdrwkgyct7fhgzqsteo457kpa46wuflhe", + "time": 1700146776 + }, + { + "cid": "bafkreif7e3nkqyrpa6pkhlnv7sdrwkgyct7fhgzqsteo457kpa46wuflhe", + "time": 1700146776 + } + ], + "validationError": false + }, + { + "dpid": "89", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidp3ed42l6cizgero5c7zfmxpmwp5hkc4tx6uz7mgioxsep4wb6rm", + "time": 1693251900 + }, + { + "cid": "bafkreidp3ed42l6cizgero5c7zfmxpmwp5hkc4tx6uz7mgioxsep4wb6rm", + "time": 1693251900 + } + ], + "validationError": false + }, + { + "dpid": "90", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaw34rnu36p2ccawj3gopyxgl64qj3dc3ip3pzvfh5anzrvmu4z5u", + "time": 1694114940 + }, + { + "cid": "bafkreiaw34rnu36p2ccawj3gopyxgl64qj3dc3ip3pzvfh5anzrvmu4z5u", + "time": 1694114940 + }, + { + "cid": "bafkreidk7ihar3swjjf46wtttjl52govxa256725urm5upcefu4wfvnxpm", + "time": 1694187648 + }, + { + "cid": "bafkreidk7ihar3swjjf46wtttjl52govxa256725urm5upcefu4wfvnxpm", + "time": 1694187648 + }, + { + "cid": "bafkreic6n2x6jlvss4iepnkkb4o4wre4nezbbff7kw46mz2egtzxast5xe", + "time": 1695653376 + }, + { + "cid": "bafkreic6n2x6jlvss4iepnkkb4o4wre4nezbbff7kw46mz2egtzxast5xe", + "time": 1695653376 + } + ], + "validationError": false + }, + { + "dpid": "91", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigpcnierfxljhffgj4d6oyuwec4pcbkbjys6goaggw75rcobd6vnu", + "time": 1694197140 + }, + { + "cid": "bafkreigpcnierfxljhffgj4d6oyuwec4pcbkbjys6goaggw75rcobd6vnu", + "time": 1694197140 + }, + { + "cid": "bafkreidtiuwpwyewgjp3r5a7shvzgir7pvbeguxlv6zebpdbxrraialhxu", + "time": 1695653220 + }, + { + "cid": "bafkreidtiuwpwyewgjp3r5a7shvzgir7pvbeguxlv6zebpdbxrraialhxu", + "time": 1695653220 + } + ], + "validationError": false + }, + { + "dpid": "92", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicqezpklsjtuszjnsekc2dcyadgtbcfouhlc57vclrwco45gzbul4", + "time": 1695218412 + }, + { + "cid": "bafkreicqezpklsjtuszjnsekc2dcyadgtbcfouhlc57vclrwco45gzbul4", + "time": 1695218412 + } + ], + "validationError": false + }, + { + "dpid": "93", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie2p56t2d3i762v3bow3jweile6fmryt2qlcjq3cmkz7kpqtaic2a", + "time": 1695246144 + }, + { + "cid": "bafkreie2p56t2d3i762v3bow3jweile6fmryt2qlcjq3cmkz7kpqtaic2a", + "time": 1695246144 + } + ], + "validationError": false + }, + { + "dpid": "94", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaqnt5raa6b4ujpkgd4veg73rtp5csn6fwxrckbhq4mkrl7ws63dy", + "time": 1695246324 + }, + { + "cid": "bafkreiaqnt5raa6b4ujpkgd4veg73rtp5csn6fwxrckbhq4mkrl7ws63dy", + "time": 1695246324 + } + ], + "validationError": false + }, + { + "dpid": "95", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreied6xbi65zwpzqiiaqnhq3cdq42c7yqrx6sd32ncv6avkovcb6f6y", + "time": 1695324696 + }, + { + "cid": "bafkreied6xbi65zwpzqiiaqnhq3cdq42c7yqrx6sd32ncv6avkovcb6f6y", + "time": 1695324696 + } + ], + "validationError": false + }, + { + "dpid": "96", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigurq54verb4sihjuonnx2pbo77lbjlviol2jfjxxgyzzko7o42ka", + "time": 1695816576 + }, + { + "cid": "bafkreigurq54verb4sihjuonnx2pbo77lbjlviol2jfjxxgyzzko7o42ka", + "time": 1695816576 + } + ], + "validationError": false + }, + { + "dpid": "97", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696295376 + }, + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696295376 + }, + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696296012 + }, + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696296012 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299000 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299000 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299600 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299600 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299876 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299876 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299912 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299912 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299996 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299996 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440036 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440036 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440996 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440996 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459560 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459560 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459584 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459584 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466724 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466724 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466820 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466820 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466964 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466964 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696468416 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696468416 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696479552 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696479552 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480608 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480608 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480764 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480764 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480884 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480884 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696481172 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696481172 + }, + { + "cid": "bafkreiciddswj3e6ho5of7x7a7liaqehnwqeg35w3cp3l5knv6k2tdlswa", + "time": 1696594740 + }, + { + "cid": "bafkreiciddswj3e6ho5of7x7a7liaqehnwqeg35w3cp3l5knv6k2tdlswa", + "time": 1696594740 + } + ], + "validationError": false + }, + { + "dpid": "98", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicsn4qia64pf7eim7sjggvmnggqadmfmrrcm5gecbpfdzxwzlk7i4", + "time": 1696303560 + }, + { + "cid": "bafkreicsn4qia64pf7eim7sjggvmnggqadmfmrrcm5gecbpfdzxwzlk7i4", + "time": 1696303944 + }, + { + "cid": "bafkreicsn4qia64pf7eim7sjggvmnggqadmfmrrcm5gecbpfdzxwzlk7i4", + "time": 1696303944 + } + ], + "validationError": false + }, + { + "dpid": "99", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696336296 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696336296 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696469268 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696469268 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536756 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536756 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536804 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536828 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536888 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536912 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536912 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536936 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536936 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536972 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536972 + } + ], + "validationError": false + }, + { + "dpid": "100", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib2fs7g7yawpqeyjzatsv3bip5p6xr27pnblzjase3zyr4ixtbu6a", + "time": 1696506528 + }, + { + "cid": "bafkreib2fs7g7yawpqeyjzatsv3bip5p6xr27pnblzjase3zyr4ixtbu6a", + "time": 1696506528 + }, + { + "cid": "bafkreihirj6fsasmvqmzngnyqitl6fpt3ljapgwx7dpfelgvruqsu7smw4", + "time": 1696507296 + }, + { + "cid": "bafkreihirj6fsasmvqmzngnyqitl6fpt3ljapgwx7dpfelgvruqsu7smw4", + "time": 1696507296 + }, + { + "cid": "bafkreid5osij2amlc67sm7uzqp22j7y3dn6lseyuy72oh64z5rqoh5qity", + "time": 1696840824 + }, + { + "cid": "bafkreid5osij2amlc67sm7uzqp22j7y3dn6lseyuy72oh64z5rqoh5qity", + "time": 1696840824 + } + ], + "validationError": false + }, + { + "dpid": "101", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaoby2dmz4sljyhxsizjj2yd2jvbzz2vsywii3vp6xqi4rjefxl4q", + "time": 1696589760 + }, + { + "cid": "bafkreiaoby2dmz4sljyhxsizjj2yd2jvbzz2vsywii3vp6xqi4rjefxl4q", + "time": 1696589760 + } + ], + "validationError": false + }, + { + "dpid": "102", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiceiefmvnwozgtpvvwv5exwsdxm36yl5ovunmcnjx5kjtcqvm6lwe", + "time": 1696605300 + }, + { + "cid": "bafkreiceiefmvnwozgtpvvwv5exwsdxm36yl5ovunmcnjx5kjtcqvm6lwe", + "time": 1696605300 + } + ], + "validationError": false + }, + { + "dpid": "103", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif6p22atw6ekbaxkrnfmetfdqtnhldaqw6qtqiqc7lqbus6aizru4", + "time": 1696841976 + }, + { + "cid": "bafkreif6p22atw6ekbaxkrnfmetfdqtnhldaqw6qtqiqc7lqbus6aizru4", + "time": 1696841976 + } + ], + "validationError": false + }, + { + "dpid": "104", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiautwruptenrd4xbq5actpbmirrxprmnnxyxf37ixblmcynebjaqq", + "time": 1696842144 + }, + { + "cid": "bafkreiautwruptenrd4xbq5actpbmirrxprmnnxyxf37ixblmcynebjaqq", + "time": 1696842144 + }, + { + "cid": "bafkreie37zoipwpgqrupcmxfnhqfqpztumhcurzb27rfasa5ipao32w3ia", + "time": 1697792352 + }, + { + "cid": "bafkreie37zoipwpgqrupcmxfnhqfqpztumhcurzb27rfasa5ipao32w3ia", + "time": 1697792352 + }, + { + "cid": "bafkreiebcm7batu7zyp4aw6pzisbkldtlqsghh5jhczhkh63lxgjxp5wte", + "time": 1698779592 + }, + { + "cid": "bafkreiebcm7batu7zyp4aw6pzisbkldtlqsghh5jhczhkh63lxgjxp5wte", + "time": 1698779592 + } + ], + "validationError": false + }, + { + "dpid": "105", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1696842444 + }, + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1696842444 + }, + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1698911760 + }, + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1698911760 + } + ], + "validationError": false + }, + { + "dpid": "106", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibbbm7623bsdoftewbedqd3peny6zhqpt6tjgx67ouf6hhvbv2idi", + "time": 1696941732 + }, + { + "cid": "bafkreibbbm7623bsdoftewbedqd3peny6zhqpt6tjgx67ouf6hhvbv2idi", + "time": 1696941732 + }, + { + "cid": "bafkreihemsbpld4yuzrn4ckrlriyq5ortlkycxx74ayfugnoce7oetsmam", + "time": 1696942104 + }, + { + "cid": "bafkreihemsbpld4yuzrn4ckrlriyq5ortlkycxx74ayfugnoce7oetsmam", + "time": 1696942104 + }, + { + "cid": "bafkreic4gpc3k5mrttk57w6k5fvtgvubvh6xfwgmubecx53b55xsxoavxe", + "time": 1696944228 + }, + { + "cid": "bafkreic4gpc3k5mrttk57w6k5fvtgvubvh6xfwgmubecx53b55xsxoavxe", + "time": 1696944228 + }, + { + "cid": "bafkreickteh2tt3oy43o42ikwei6tppghmtbkockk22a3niovi57ugor7q", + "time": 1696961232 + }, + { + "cid": "bafkreickteh2tt3oy43o42ikwei6tppghmtbkockk22a3niovi57ugor7q", + "time": 1696961232 + } + ], + "validationError": false + }, + { + "dpid": "107", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicgst5gqckb4bzduzxqhn2v5an2xjnmhv6qwscwtn3gjhuplpv3jm", + "time": 1697040396 + }, + { + "cid": "bafkreicgst5gqckb4bzduzxqhn2v5an2xjnmhv6qwscwtn3gjhuplpv3jm", + "time": 1697040396 + } + ], + "validationError": false + }, + { + "dpid": "108", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifzh36eve7dsmbebnvxhpalxdgcjcur7anxllzyfwnmetlsvq2f54", + "time": 1697792640 + }, + { + "cid": "bafkreifzh36eve7dsmbebnvxhpalxdgcjcur7anxllzyfwnmetlsvq2f54", + "time": 1697792640 + } + ], + "validationError": false + }, + { + "dpid": "109", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibiziudxe62de7g443yl453tpnky25ujrcdhuaudtwq7hxrrr6q3m", + "time": 1698054684 + }, + { + "cid": "bafkreibiziudxe62de7g443yl453tpnky25ujrcdhuaudtwq7hxrrr6q3m", + "time": 1698054684 + } + ], + "validationError": false + }, + { + "dpid": "110", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698079308 + }, + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698079308 + }, + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698323460 + }, + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698323460 + } + ], + "validationError": false + }, + { + "dpid": "111", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiejskdyqkcsnvcl6njkivjvptts656x3qvr64nsjdnx6pcn6bdht4", + "time": 1698177444 + }, + { + "cid": "bafkreiejskdyqkcsnvcl6njkivjvptts656x3qvr64nsjdnx6pcn6bdht4", + "time": 1698177444 + }, + { + "cid": "bafkreialaclllbtsaxzdhbbut4mk57xh4r7bsj56cb44fockdxokcznbk4", + "time": 1698178344 + }, + { + "cid": "bafkreialaclllbtsaxzdhbbut4mk57xh4r7bsj56cb44fockdxokcznbk4", + "time": 1698178344 + } + ], + "validationError": false + }, + { + "dpid": "112", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreictzmcsbe3bkmb7vyludvy7q37brvsw6q7xayblyn45r23n7ru224", + "time": 1698747720 + }, + { + "cid": "bafkreictzmcsbe3bkmb7vyludvy7q37brvsw6q7xayblyn45r23n7ru224", + "time": 1698747720 + }, + { + "cid": "bafkreifpbperacf57typaumiauqsf3kcmljgm7ehu2vjmlflwepddpeth4", + "time": 1698747864 + }, + { + "cid": "bafkreifpbperacf57typaumiauqsf3kcmljgm7ehu2vjmlflwepddpeth4", + "time": 1698747864 + } + ], + "validationError": false + }, + { + "dpid": "113", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig2nlksggv4ghb24xw7ng23klrttx3kiu3tdlnsa2gcn2zacpmxa4", + "time": 1698782484 + }, + { + "cid": "bafkreig2nlksggv4ghb24xw7ng23klrttx3kiu3tdlnsa2gcn2zacpmxa4", + "time": 1698782484 + } + ], + "validationError": false + }, + { + "dpid": "114", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibsaosbasq6er4o2mkovemlp6tgppyeudue6lsx6dbznba56omd6e", + "time": 1698782652 + }, + { + "cid": "bafkreibsaosbasq6er4o2mkovemlp6tgppyeudue6lsx6dbznba56omd6e", + "time": 1698782652 + } + ], + "validationError": false + }, + { + "dpid": "115", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaqt4amqtdha2affz4caq6qrl3uzk4zutwfnzcc6ba5ziw6itc2ty", + "time": 1699355412 + }, + { + "cid": "bafkreiaqt4amqtdha2affz4caq6qrl3uzk4zutwfnzcc6ba5ziw6itc2ty", + "time": 1699355412 + }, + { + "cid": "bafkreichmxylugiwhtrhomfjc7njdmp6isfivmdsflhmuzenzxnyl76m5i", + "time": 1699355784 + }, + { + "cid": "bafkreichmxylugiwhtrhomfjc7njdmp6isfivmdsflhmuzenzxnyl76m5i", + "time": 1699355784 + } + ], + "validationError": false + }, + { + "dpid": "116", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreid4spqoyg2mk2r7bcju6vkxsgtcx2fl27tyivtvrvnwlqgn26udn4", + "time": 1699608000 + }, + { + "cid": "bafkreid4spqoyg2mk2r7bcju6vkxsgtcx2fl27tyivtvrvnwlqgn26udn4", + "time": 1699608000 + }, + { + "cid": "bafkreiejv6ymnxxum5c67qpkvp2eevgy7rgksq7vhzgyfxg5riwl33lzqe", + "time": 1699887960 + }, + { + "cid": "bafkreiejv6ymnxxum5c67qpkvp2eevgy7rgksq7vhzgyfxg5riwl33lzqe", + "time": 1699887960 + }, + { + "cid": "bafkreibechybrdrnwlsg3unh2pgxg2jgekg653h37e4xzc3wazyzcjzegq", + "time": 1699954776 + }, + { + "cid": "bafkreibechybrdrnwlsg3unh2pgxg2jgekg653h37e4xzc3wazyzcjzegq", + "time": 1699954776 + } + ], + "validationError": false + }, + { + "dpid": "117", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiepbbtkhudgspd6dr4rnckaqwdenedehsvppkyakute6z36bplgpy", + "time": 1699954800 + }, + { + "cid": "bafkreiepbbtkhudgspd6dr4rnckaqwdenedehsvppkyakute6z36bplgpy", + "time": 1699954800 + }, + { + "cid": "bafkreids7cf6gagvaxbmammx6ekl4e3xwhcyw33vkqmy5ml2m4epvpjwua", + "time": 1700053860 + }, + { + "cid": "bafkreids7cf6gagvaxbmammx6ekl4e3xwhcyw33vkqmy5ml2m4epvpjwua", + "time": 1700053860 + } + ], + "validationError": false + }, + { + "dpid": "118", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihv7uzjstazrksvrdwrt6j3oqiw73oqi2krvwlzojbo5yhrfrpcu4", + "time": 1699979532 + }, + { + "cid": "bafkreihv7uzjstazrksvrdwrt6j3oqiw73oqi2krvwlzojbo5yhrfrpcu4", + "time": 1699979532 + }, + { + "cid": "bafkreifwnjaykar4vdhcpyimr73hklty7nqnm77u37rzmdyhldtlleycfy", + "time": 1702053972 + }, + { + "cid": "bafkreifwnjaykar4vdhcpyimr73hklty7nqnm77u37rzmdyhldtlleycfy", + "time": 1702053972 + } + ], + "validationError": false + }, + { + "dpid": "119", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifisxmqzztc3zgleheiakn4xn5w7ze6ap5iynom46djxue54nvk5i", + "time": 1699983900 + }, + { + "cid": "bafkreifisxmqzztc3zgleheiakn4xn5w7ze6ap5iynom46djxue54nvk5i", + "time": 1699983900 + }, + { + "cid": "bafkreihhg6k56gey42vldxac36u3ueleq4nzrm2zw5fxfcdmwcdrfyjpci", + "time": 1699984152 + }, + { + "cid": "bafkreihhg6k56gey42vldxac36u3ueleq4nzrm2zw5fxfcdmwcdrfyjpci", + "time": 1699984152 + } + ], + "validationError": false + }, + { + "dpid": "120", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifonv6z5enzbl44kwvh3i3m5stmagckblhfp4skmilmt72ff3dthe", + "time": 1699984440 + }, + { + "cid": "bafkreifonv6z5enzbl44kwvh3i3m5stmagckblhfp4skmilmt72ff3dthe", + "time": 1699984440 + } + ], + "validationError": false + }, + { + "dpid": "121", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig7g2zbirxw3spdxicv6igvu4t2frzdbipzh4q2lp7a7vzsnktdym", + "time": 1699984896 + }, + { + "cid": "bafkreig7g2zbirxw3spdxicv6igvu4t2frzdbipzh4q2lp7a7vzsnktdym", + "time": 1699984896 + } + ], + "validationError": false + }, + { + "dpid": "122", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidhtfpm7qcv36eklavzuhq7dxbfq7a2o3ovv6q55qubyr7xnvpnm4", + "time": 1700005716 + }, + { + "cid": "bafkreidhtfpm7qcv36eklavzuhq7dxbfq7a2o3ovv6q55qubyr7xnvpnm4", + "time": 1700005716 + } + ], + "validationError": false + }, + { + "dpid": "123", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifuyc6nxavordwnewceq6tdzbzs4u5u7eiohs2lflwabdmhrrcxtm", + "time": 1700006352 + }, + { + "cid": "bafkreifuyc6nxavordwnewceq6tdzbzs4u5u7eiohs2lflwabdmhrrcxtm", + "time": 1700006352 + } + ], + "validationError": false + }, + { + "dpid": "124", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiccwsruwcne5ctm4bdarr6772xgxqdcy3jg66rthmd5iaq2hnexgi", + "time": 1700046408 + }, + { + "cid": "bafkreiccwsruwcne5ctm4bdarr6772xgxqdcy3jg66rthmd5iaq2hnexgi", + "time": 1700046408 + }, + { + "cid": "bafkreihi36k65e6jlytud7hcvtxru2xbkphtxbdu3xx2pkm53qwb5mjzge", + "time": 1700046432 + }, + { + "cid": "bafkreihi36k65e6jlytud7hcvtxru2xbkphtxbdu3xx2pkm53qwb5mjzge", + "time": 1700046432 + }, + { + "cid": "bafkreiezsp3ibhch3wf4arb4ies65exfex2isowpfsrrlq6pyvatiexr5q", + "time": 1700046552 + }, + { + "cid": "bafkreiezsp3ibhch3wf4arb4ies65exfex2isowpfsrrlq6pyvatiexr5q", + "time": 1700046552 + } + ], + "validationError": false + }, + { + "dpid": "125", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidsdl7s6pqakmfhfvcauof7ovylegxa5nwp2dxuxd5rbb27vsk4d4", + "time": 1700057772 + }, + { + "cid": "bafkreidsdl7s6pqakmfhfvcauof7ovylegxa5nwp2dxuxd5rbb27vsk4d4", + "time": 1700057772 + }, + { + "cid": "bafkreidjcemwjx3ljeuja3lety52fksvk2ojukxkxudbnwu7kgse2zz3tm", + "time": 1700058384 + }, + { + "cid": "bafkreidjcemwjx3ljeuja3lety52fksvk2ojukxkxudbnwu7kgse2zz3tm", + "time": 1700058384 + } + ], + "validationError": false + }, + { + "dpid": "126", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib6z6ysfnyw6k6ly7cpdp7qjcjbbvjoffn4ppiarimmk33sbxuoy4", + "time": 1700059584 + }, + { + "cid": "bafkreib6z6ysfnyw6k6ly7cpdp7qjcjbbvjoffn4ppiarimmk33sbxuoy4", + "time": 1700059584 + } + ], + "validationError": false + }, + { + "dpid": "127", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibqnmfw4jhrjk4ggz63kqtti7rzxroutotrrey2j37a3ad2wfuojm", + "time": 1700063400 + }, + { + "cid": "bafkreibqnmfw4jhrjk4ggz63kqtti7rzxroutotrrey2j37a3ad2wfuojm", + "time": 1700063400 + }, + { + "cid": "bafkreifgaoapp6ku2zt3awb3svh3ol75stczvu2bon373bit4whaneb2lm", + "time": 1700063832 + }, + { + "cid": "bafkreifgaoapp6ku2zt3awb3svh3ol75stczvu2bon373bit4whaneb2lm", + "time": 1700063832 + }, + { + "cid": "bafkreibbb2gkxihablys2fjtrecr2tvfbujyulblivfqn4jsl6hyx5dghy", + "time": 1708492476 + }, + { + "cid": "bafkreibbb2gkxihablys2fjtrecr2tvfbujyulblivfqn4jsl6hyx5dghy", + "time": 1708492476 + } + ], + "validationError": false + }, + { + "dpid": "128", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihjgheci62x27bgduapkcmwbxldpwyk5af5kqvbpq2nmfmtfxdmmm", + "time": 1700063832 + }, + { + "cid": "bafkreihjgheci62x27bgduapkcmwbxldpwyk5af5kqvbpq2nmfmtfxdmmm", + "time": 1700063832 + } + ], + "validationError": false + }, + { + "dpid": "129", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigtnznzipcb6j4ufpnmde3e66pzl53n7etkxjj4waorkc2vfzban4", + "time": 1700754096 + }, + { + "cid": "bafkreigtnznzipcb6j4ufpnmde3e66pzl53n7etkxjj4waorkc2vfzban4", + "time": 1700754096 + } + ], + "validationError": false + }, + { + "dpid": "130", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaiwepaj5h3ueggcvsp7rs6zsu5emvcbxg4aantq43mjrvkb46t5i", + "time": 1701434724 + }, + { + "cid": "bafkreiaiwepaj5h3ueggcvsp7rs6zsu5emvcbxg4aantq43mjrvkb46t5i", + "time": 1701434724 + } + ], + "validationError": false + }, + { + "dpid": "131", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidw5k6li7ex6goxdky37t6obgd3472rbgygmvu5rnf6iiptrqkmiy", + "time": 1701702708 + }, + { + "cid": "bafkreidw5k6li7ex6goxdky37t6obgd3472rbgygmvu5rnf6iiptrqkmiy", + "time": 1701702708 + }, + { + "cid": "bafkreiaa4eh2bmuwlutgnvnbbd64npfqdlzxzc75li5pzhlmdkrvj5qjrq", + "time": 1701703056 + }, + { + "cid": "bafkreiaa4eh2bmuwlutgnvnbbd64npfqdlzxzc75li5pzhlmdkrvj5qjrq", + "time": 1701703056 + } + ], + "validationError": false + }, + { + "dpid": "132", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifqxy2ie6a5gwqwjdrjzpuer3d5dwb4sauljj6coojnzprlvfes2e", + "time": 1701788316 + }, + { + "cid": "bafkreifqxy2ie6a5gwqwjdrjzpuer3d5dwb4sauljj6coojnzprlvfes2e", + "time": 1701788316 + } + ], + "validationError": false + }, + { + "dpid": "133", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifyxvaek2nsdtke62wviupn7qqtgzeucrpe5c66lrycvtvestkkau", + "time": 1701795900 + }, + { + "cid": "bafkreifyxvaek2nsdtke62wviupn7qqtgzeucrpe5c66lrycvtvestkkau", + "time": 1701795900 + } + ], + "validationError": false + }, + { + "dpid": "134", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigu4xxysvqtf6cicat3iheugi6g45vsgnptbrht6p6om3txvsttye", + "time": 1701872976 + }, + { + "cid": "bafkreigu4xxysvqtf6cicat3iheugi6g45vsgnptbrht6p6om3txvsttye", + "time": 1701872976 + } + ], + "validationError": false + }, + { + "dpid": "135", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihf45jsg5rnkpv2mz2wwpf5w3u6ixu765a5hckam3j3fbl5i2tgbq", + "time": 1701875664 + }, + { + "cid": "bafkreihf45jsg5rnkpv2mz2wwpf5w3u6ixu765a5hckam3j3fbl5i2tgbq", + "time": 1701875664 + } + ], + "validationError": false + }, + { + "dpid": "136", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreih5g3pbinh264nuwgvsuerueucgpacv5ytill4sbxt7zsexgfntqi", + "time": 1702142316 + }, + { + "cid": "bafkreih5g3pbinh264nuwgvsuerueucgpacv5ytill4sbxt7zsexgfntqi", + "time": 1702142316 + }, + { + "cid": "bafkreiaitokvbuwllmihafculxuniwiydtl2cuuuhqbmkuvpk62uuhmu4e", + "time": 1702145736 + }, + { + "cid": "bafkreiaitokvbuwllmihafculxuniwiydtl2cuuuhqbmkuvpk62uuhmu4e", + "time": 1702145736 + }, + { + "cid": "bafkreifyo3tzgp3bp7a7zwxym6lskt567rdvjn4t334dczglkvgbpglla4", + "time": 1702202688 + }, + { + "cid": "bafkreifyo3tzgp3bp7a7zwxym6lskt567rdvjn4t334dczglkvgbpglla4", + "time": 1702202688 + }, + { + "cid": "bafkreif4yaj5za2adpy3wmklbstwpaciobl3j4uwcwrwcri7bbkcvwik6q", + "time": 1708382904 + }, + { + "cid": "bafkreif4yaj5za2adpy3wmklbstwpaciobl3j4uwcwrwcri7bbkcvwik6q", + "time": 1708382904 + } + ], + "validationError": false + }, + { + "dpid": "137", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiebtockthsjrwsikbjshzdikjsa3j35avolyabw2zl5nxd4np2qa4", + "time": 1702430448 + }, + { + "cid": "bafkreiebtockthsjrwsikbjshzdikjsa3j35avolyabw2zl5nxd4np2qa4", + "time": 1702430448 + }, + { + "cid": "bafkreig5muvzq5a5whji264zbzpkd452kqiswo4on3b3waibrwcte6n2jq", + "time": 1702439796 + }, + { + "cid": "bafkreig5muvzq5a5whji264zbzpkd452kqiswo4on3b3waibrwcte6n2jq", + "time": 1702439796 + } + ], + "validationError": false + }, + { + "dpid": "138", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiezlcl57kasksq7hwdqxsffpqloek4jbr4vrvausbg6ozsrnwnkfq", + "time": 1702512600 + }, + { + "cid": "bafkreiezlcl57kasksq7hwdqxsffpqloek4jbr4vrvausbg6ozsrnwnkfq", + "time": 1702512600 + }, + { + "cid": "bafkreifxevx7yu5noaquu4bojmyl6pubqotkp4wsbjpd6vbz3neuk7nlxu", + "time": 1707153744 + }, + { + "cid": "bafkreifxevx7yu5noaquu4bojmyl6pubqotkp4wsbjpd6vbz3neuk7nlxu", + "time": 1707153744 + } + ], + "validationError": false + }, + { + "dpid": "139", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreictkrrk3arfcy4rstvjjtpwrw3yf7wdgxepf5z2cmjuiv2igkdlnm", + "time": 1702512876 + }, + { + "cid": "bafkreictkrrk3arfcy4rstvjjtpwrw3yf7wdgxepf5z2cmjuiv2igkdlnm", + "time": 1702512876 + } + ], + "validationError": false + }, + { + "dpid": "140", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibz4nvkwdmqxmtxefklebrqrhbbhias3bvt7moko5jgw6hopkhwga", + "time": 1702513068 + }, + { + "cid": "bafkreibz4nvkwdmqxmtxefklebrqrhbbhias3bvt7moko5jgw6hopkhwga", + "time": 1702513068 + }, + { + "cid": "bafkreifbhbxfm6s6djz5taz5buthqlpy2cruaysfnixojzubwgkprsbq4i", + "time": 1708801020 + }, + { + "cid": "bafkreifbhbxfm6s6djz5taz5buthqlpy2cruaysfnixojzubwgkprsbq4i", + "time": 1708801020 + } + ], + "validationError": false + }, + { + "dpid": "141", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifkjw3mjt4ib4dhjjpn2sbv3oqf4c5mcf5n7zlggynvvqlwksdxay", + "time": 1702513164 + }, + { + "cid": "bafkreifkjw3mjt4ib4dhjjpn2sbv3oqf4c5mcf5n7zlggynvvqlwksdxay", + "time": 1702513164 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + } + ], + "validationError": false + }, + { + "dpid": "142", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidll4iaylvaplqqqotp3e7bolx3qgqnjkzliplbhdz7v7dcrdn65q", + "time": 1702513344 + }, + { + "cid": "bafkreidll4iaylvaplqqqotp3e7bolx3qgqnjkzliplbhdz7v7dcrdn65q", + "time": 1702513344 + }, + { + "cid": "bafkreieszmyc5ph43ft77gk4pj5emhuy53if6vjbeejzxbrtusxb3ouq54", + "time": 1708802160 + }, + { + "cid": "bafkreieszmyc5ph43ft77gk4pj5emhuy53if6vjbeejzxbrtusxb3ouq54", + "time": 1708802160 + } + ], + "validationError": false + }, + { + "dpid": "143", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidjonu3vhm5vd5fogs3zrjzq3qcajjkpvwwj43gdqn2swiops5glm", + "time": 1702513392 + }, + { + "cid": "bafkreidjonu3vhm5vd5fogs3zrjzq3qcajjkpvwwj43gdqn2swiops5glm", + "time": 1702513392 + }, + { + "cid": "bafkreih25vwbntxxybpsxctpg5eqi6f7ewcwzqzpklifbfqffcrbs65k64", + "time": 1708802052 + }, + { + "cid": "bafkreih25vwbntxxybpsxctpg5eqi6f7ewcwzqzpklifbfqffcrbs65k64", + "time": 1708802052 + } + ], + "validationError": false + }, + { + "dpid": "144", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieogvypbmg7vgut2f76b33kql6cw4vstzm4f7asoenfzh2rudpekm", + "time": 1702513452 + }, + { + "cid": "bafkreieogvypbmg7vgut2f76b33kql6cw4vstzm4f7asoenfzh2rudpekm", + "time": 1702513452 + }, + { + "cid": "bafkreib3b6ztd5tyebhjtxsj4dpl2nw3bipejak5n3zz7u7ta3et2ghyoq", + "time": 1708801908 + }, + { + "cid": "bafkreib3b6ztd5tyebhjtxsj4dpl2nw3bipejak5n3zz7u7ta3et2ghyoq", + "time": 1708801908 + } + ], + "validationError": false + }, + { + "dpid": "145", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibbu3bk7ucli5yaikmcwdduigaien2dqb2bzq4af6ufzrmu6vswty", + "time": 1702513524 + }, + { + "cid": "bafkreibbu3bk7ucli5yaikmcwdduigaien2dqb2bzq4af6ufzrmu6vswty", + "time": 1702513524 + }, + { + "cid": "bafkreig2mtcbf6eu2vraqmy5ftukn4i6fgeiwfou2znswwss5sarsotmcm", + "time": 1708801680 + }, + { + "cid": "bafkreig2mtcbf6eu2vraqmy5ftukn4i6fgeiwfou2znswwss5sarsotmcm", + "time": 1708801680 + } + ], + "validationError": false + }, + { + "dpid": "146", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreied3q6xs3itsgvjgeybu5cnmuuds2puklksrhfvy4ofjddo3nkyle", + "time": 1702513584 + }, + { + "cid": "bafkreied3q6xs3itsgvjgeybu5cnmuuds2puklksrhfvy4ofjddo3nkyle", + "time": 1702513584 + } + ], + "validationError": false + }, + { + "dpid": "147", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiapkcqpkavfwqc4id5mb7e46n3f5nr5uig4ik7bwaxk7a5tox2ztq", + "time": 1702513620 + }, + { + "cid": "bafkreiapkcqpkavfwqc4id5mb7e46n3f5nr5uig4ik7bwaxk7a5tox2ztq", + "time": 1702513620 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801212 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801212 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801236 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801236 + } + ], + "validationError": false + }, + { + "dpid": "148", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibgprhlr22zfwgrm7y3kx4jxslpozqp4pmofsrj5tbqpkaxi5glpe", + "time": 1702559448 + }, + { + "cid": "bafkreibgprhlr22zfwgrm7y3kx4jxslpozqp4pmofsrj5tbqpkaxi5glpe", + "time": 1702559448 + }, + { + "cid": "bafkreieqjqllffddjuraswoq4pm5d5cd5eu2knqe6yie7rj6aufujtct4e", + "time": 1702907160 + }, + { + "cid": "bafkreieqjqllffddjuraswoq4pm5d5cd5eu2knqe6yie7rj6aufujtct4e", + "time": 1702907160 + } + ], + "validationError": false + }, + { + "dpid": "149", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigcc2l7aay34i5zeot5wjvpspdpwp6ipfzffs3cnnpbpt7c2gqu6i", + "time": 1703003448 + }, + { + "cid": "bafkreigcc2l7aay34i5zeot5wjvpspdpwp6ipfzffs3cnnpbpt7c2gqu6i", + "time": 1703003448 + }, + { + "cid": "bafkreig6lp6265u42llqh6hkzxc54hmyfea7ax7gewg7tdyvthieotmwpy", + "time": 1703003868 + }, + { + "cid": "bafkreig6lp6265u42llqh6hkzxc54hmyfea7ax7gewg7tdyvthieotmwpy", + "time": 1703003868 + }, + { + "cid": "bafkreici3wzz7njqigyo7ebzwn3kibxgwjr43ihowwebl4exmfy75tkpjm", + "time": 1703072388 + }, + { + "cid": "bafkreici3wzz7njqigyo7ebzwn3kibxgwjr43ihowwebl4exmfy75tkpjm", + "time": 1703072388 + }, + { + "cid": "bafkreicgxdcypaq5tmmrrva3tl7k2un47pfolg3mox72j5k65zitsukfii", + "time": 1707406116 + }, + { + "cid": "bafkreicgxdcypaq5tmmrrva3tl7k2un47pfolg3mox72j5k65zitsukfii", + "time": 1707406116 + }, + { + "cid": "bafkreie7j6ji7ynh5d5yoldoxfevak55nkmcx5h7v3c6h4xy7le25sbgke", + "time": 1709143824 + }, + { + "cid": "bafkreie7j6ji7ynh5d5yoldoxfevak55nkmcx5h7v3c6h4xy7le25sbgke", + "time": 1709143824 + } + ], + "validationError": false + }, + { + "dpid": "150", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif3aoauxavq7sxibkysi4kemqdwbcez4cjtmzoou46bj44r2rc3sa", + "time": 1703205816 + }, + { + "cid": "bafkreif3aoauxavq7sxibkysi4kemqdwbcez4cjtmzoou46bj44r2rc3sa", + "time": 1703205816 + } + ], + "validationError": false + }, + { + "dpid": "151", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicqe2blgjarm3bg6jon5sjvmu773bnuajfnkmlnvo5hd5uj2yr234", + "time": 1703212224 + }, + { + "cid": "bafkreicqe2blgjarm3bg6jon5sjvmu773bnuajfnkmlnvo5hd5uj2yr234", + "time": 1703212224 + } + ], + "validationError": false + }, + { + "dpid": "152", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifiy2ipxllse5z6kspsspgt247eadivoij736j3yehwe6cy5rn6ny", + "time": 1705091376 + }, + { + "cid": "bafkreifiy2ipxllse5z6kspsspgt247eadivoij736j3yehwe6cy5rn6ny", + "time": 1705091376 + }, + { + "cid": "bafkreihvutuhtiehsoyc66u7a7bncnqfhoosynejagkykkfwa7gkr2rsta", + "time": 1705091496 + }, + { + "cid": "bafkreihvutuhtiehsoyc66u7a7bncnqfhoosynejagkykkfwa7gkr2rsta", + "time": 1705091496 + }, + { + "cid": "bafkreiekobyktiisailjk2sauqxembzyqe26z7i7mxkl6xidhhlb62wnyi", + "time": 1706832732 + }, + { + "cid": "bafkreiekobyktiisailjk2sauqxembzyqe26z7i7mxkl6xidhhlb62wnyi", + "time": 1706832732 + } + ], + "validationError": false + }, + { + "dpid": "153", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigr54hmercrddm2nnyo46yfn3w466zeoawph7k23swzr5v6lobcjm", + "time": 1705491780 + }, + { + "cid": "bafkreigr54hmercrddm2nnyo46yfn3w466zeoawph7k23swzr5v6lobcjm", + "time": 1705491780 + } + ], + "validationError": false + }, + { + "dpid": "154", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidzawjc7uaskxy2a55gfd3pjqssl5v6nfqj4ghziglbdfuk3arfri", + "time": 1705579488 + }, + { + "cid": "bafkreidzawjc7uaskxy2a55gfd3pjqssl5v6nfqj4ghziglbdfuk3arfri", + "time": 1705579488 + } + ], + "validationError": false + }, + { + "dpid": "155", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieqqvt2bx34g44zombuj254dzqng5l4bjc33vnuduiaklfjf7jrza", + "time": 1706550924 + }, + { + "cid": "bafkreieqqvt2bx34g44zombuj254dzqng5l4bjc33vnuduiaklfjf7jrza", + "time": 1706550924 + } + ], + "validationError": false + }, + { + "dpid": "156", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibhuuogniwgsozq6zqgpfg622ktaz4e4xtspvxv6be7zoaknlp7oi", + "time": 1706735148 + }, + { + "cid": "bafkreibhuuogniwgsozq6zqgpfg622ktaz4e4xtspvxv6be7zoaknlp7oi", + "time": 1706735148 + }, + { + "cid": "bafkreicmyxjhueivvlucnysc5sgmdnxgsmn5wryaodmdwl7xhku5o4dwki", + "time": 1706737632 + }, + { + "cid": "bafkreicmyxjhueivvlucnysc5sgmdnxgsmn5wryaodmdwl7xhku5o4dwki", + "time": 1706737632 + } + ], + "validationError": false + }, + { + "dpid": "157", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreificypwhqbtu4acdrxgbzdrpbw5dncxrcwtskrebhv53trsk23ive", + "time": 1706738172 + }, + { + "cid": "bafkreificypwhqbtu4acdrxgbzdrpbw5dncxrcwtskrebhv53trsk23ive", + "time": 1706738172 + } + ], + "validationError": false + }, + { + "dpid": "158", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigmgjpsfxzshdvozllx3m6s5ubiulcx7yumhe7armganzdiu42feu", + "time": 1706834520 + }, + { + "cid": "bafkreigmgjpsfxzshdvozllx3m6s5ubiulcx7yumhe7armganzdiu42feu", + "time": 1706834520 + } + ], + "validationError": false + }, + { + "dpid": "159", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifl7hhai6p5podahrcse5ocklgf2qdayw33raeaugk4cjgugroupq", + "time": 1707473772 + }, + { + "cid": "bafkreifl7hhai6p5podahrcse5ocklgf2qdayw33raeaugk4cjgugroupq", + "time": 1707473772 + } + ], + "validationError": false + }, + { + "dpid": "160", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifjtpqkpatgmy4jpmhsepfvpv2gmiofgyh6qpinfnstyrsufickua", + "time": 1707644916 + }, + { + "cid": "bafkreifjtpqkpatgmy4jpmhsepfvpv2gmiofgyh6qpinfnstyrsufickua", + "time": 1707644916 + }, + { + "cid": "bafkreif2hl47drgqwb6qay5dbdmmm4ivbcfus3wromwaho2wxine6niudm", + "time": 1707645552 + }, + { + "cid": "bafkreif2hl47drgqwb6qay5dbdmmm4ivbcfus3wromwaho2wxine6niudm", + "time": 1707645552 + }, + { + "cid": "bafkreihopqbkiidgwszltgcx3cp3n5m3vkfcyqf5tktaf7zpikdwqkpkmu", + "time": 1707646572 + }, + { + "cid": "bafkreihopqbkiidgwszltgcx3cp3n5m3vkfcyqf5tktaf7zpikdwqkpkmu", + "time": 1707646572 + } + ], + "validationError": false + }, + { + "dpid": "161", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreialnzhaztvhuvwkzpqlst7w3yttviws5tcpdnwvggdmxnx2ydzere", + "time": 1707848244 + }, + { + "cid": "bafkreialnzhaztvhuvwkzpqlst7w3yttviws5tcpdnwvggdmxnx2ydzere", + "time": 1707848244 + } + ], + "validationError": false + }, + { + "dpid": "162", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieowcw35rvuvocaupds5fsremm4h6j3cris5sscfjun4o2e4bccla", + "time": 1707967356 + }, + { + "cid": "bafkreieowcw35rvuvocaupds5fsremm4h6j3cris5sscfjun4o2e4bccla", + "time": 1707967356 + } + ], + "validationError": false + }, + { + "dpid": "163", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif4554qs4ppds7364pfeqla623ebon5nlvs5m53ecw4jhdkmtnfre", + "time": 1707967740 + }, + { + "cid": "bafkreif4554qs4ppds7364pfeqla623ebon5nlvs5m53ecw4jhdkmtnfre", + "time": 1707967740 + } + ], + "validationError": false + }, + { + "dpid": "164", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidn5fdrmh62nc4r3g5paqija32flksc23evsc5akqoqftkwfeqm2i", + "time": 1708094712 + }, + { + "cid": "bafkreidn5fdrmh62nc4r3g5paqija32flksc23evsc5akqoqftkwfeqm2i", + "time": 1708094712 + }, + { + "cid": "bafkreibpaflwrfhygpheciwlemvahtkkwdgg35dnevu25rid46iae2ws6i", + "time": 1708453920 + }, + { + "cid": "bafkreibpaflwrfhygpheciwlemvahtkkwdgg35dnevu25rid46iae2ws6i", + "time": 1708453920 + }, + { + "cid": "bafkreif7javbr3hrnuwmoggv7dtprs7axcsdldsqpwmpfcdizy5bk2tfxa", + "time": 1708514124 + }, + { + "cid": "bafkreif7javbr3hrnuwmoggv7dtprs7axcsdldsqpwmpfcdizy5bk2tfxa", + "time": 1708514124 + } + ], + "validationError": false + }, + { + "dpid": "165", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicv2zf35h43m656h2734du5ynp2zctedwxkgwtbhubg34oenhhexa", + "time": 1708109700 + }, + { + "cid": "bafkreicv2zf35h43m656h2734du5ynp2zctedwxkgwtbhubg34oenhhexa", + "time": 1708109700 + } + ], + "validationError": false + }, + { + "dpid": "166", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibfvwqckon265lpmjuinzlg6ebzo4s6dtgh7invz2prf766bvuodm", + "time": 1708372176 + }, + { + "cid": "bafkreibfvwqckon265lpmjuinzlg6ebzo4s6dtgh7invz2prf766bvuodm", + "time": 1708372176 + } + ], + "validationError": false + }, + { + "dpid": "167", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreige2oxxkk4rboadjcxlvwbvlun3e4xmrxp4qtqvdmjdfzhptuyf5a", + "time": 1708458984 + }, + { + "cid": "bafkreige2oxxkk4rboadjcxlvwbvlun3e4xmrxp4qtqvdmjdfzhptuyf5a", + "time": 1708458984 + } + ], + "validationError": false + }, + { + "dpid": "168", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiftjc6urzlqlcffupjwnezhfash4tlvgy2qnstu2vpp6tdk4zpmma", + "time": 1708493796 + }, + { + "cid": "bafkreiftjc6urzlqlcffupjwnezhfash4tlvgy2qnstu2vpp6tdk4zpmma", + "time": 1708493796 + }, + { + "cid": "bafkreic4hj66auaehgtgoz6zzks2w2r7lsxhrisjuh7dbfipvgmkhfpace", + "time": 1708690584 + }, + { + "cid": "bafkreic4hj66auaehgtgoz6zzks2w2r7lsxhrisjuh7dbfipvgmkhfpace", + "time": 1708690584 + } + ], + "validationError": false + }, + { + "dpid": "169", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidguz57tkqtmta44oov6jkgxxeg635asddp2belouydyxjndukspi", + "time": 1708495980 + }, + { + "cid": "bafkreidguz57tkqtmta44oov6jkgxxeg635asddp2belouydyxjndukspi", + "time": 1708495980 + } + ], + "validationError": false + }, + { + "dpid": "170", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidyakyvrrmovwk4ddfw2fxtgkl3f4coef75pybncmoa55jnlxx6tm", + "time": 1708501884 + }, + { + "cid": "bafkreidyakyvrrmovwk4ddfw2fxtgkl3f4coef75pybncmoa55jnlxx6tm", + "time": 1708501884 + }, + { + "cid": "bafkreiddvndkkcaqwdmetqxfl2vhfag45c4cug6aubsnlrl7uk66y3pzrq", + "time": 1710843672 + }, + { + "cid": "bafkreibsbid5gceknfrbun76wrdq73vzglgxq25yy2pg7fnpflfuucem6e", + "time": 1710844824 + }, + { + "cid": "bafkreibsbid5gceknfrbun76wrdq73vzglgxq25yy2pg7fnpflfuucem6e", + "time": 1710845520 + }, + { + "cid": "bafkreiav726womo5gxdii7ootir2uuhdn34fzej3f6ala7xynge6ag543a", + "time": 1710846540 + } + ], + "validationError": false + }, + { + "dpid": "171", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtajzmf7ty7hhyclz4aj5f74mktbj4liyhobvs3qr7nebqprl2yi", + "time": 1708516896 + }, + { + "cid": "bafkreibtajzmf7ty7hhyclz4aj5f74mktbj4liyhobvs3qr7nebqprl2yi", + "time": 1708516896 + } + ], + "validationError": false + }, + { + "dpid": "172", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicenejlzy2ygk6vflo4xhr7hjqe22nz5f354afoo5pc65d6qf2ojq", + "time": 1708523184 + }, + { + "cid": "bafkreicenejlzy2ygk6vflo4xhr7hjqe22nz5f354afoo5pc65d6qf2ojq", + "time": 1708523184 + }, + { + "cid": "bafkreibhvfaxoampgahsqavwoc3r5qwsmb23cg5lavkgoak77x4htgjism", + "time": 1712669388 + }, + { + "cid": "bafkreiab7zb4iwbnd6atuukrzkjcph7hbc763rqxnhrl3xtk7c73c3ofsi", + "time": 1712679120 + }, + { + "cid": "bafkreifxjj6yjggeno26fceojxb3ibuoaszeettsqwumuw337owiu2goaq", + "time": 1712758368 + }, + { + "cid": "bafkreic5tnpaovahue6zvswongz52o2kog7ngwiawcmwcq63xskxfwltdm", + "time": 1712854176 + }, + { + "cid": "bafkreic5tnpaovahue6zvswongz52o2kog7ngwiawcmwcq63xskxfwltdm", + "time": 1712859180 + }, + { + "cid": "bafkreignqmhx4yaaaqytcf2q7hhvbhyz5nrsqq4sv23jbenzs65luutaqu", + "time": 1713200220 + }, + { + "cid": "bafkreihv4owtfk4yfhljptkfrcsnt6nnaobbgsfl4h2ivxgi3kbtvzspc4", + "time": 1713212124 + } + ], + "validationError": false + }, + { + "dpid": "173", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531344 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531344 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531620 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531620 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531992 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531992 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708532064 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708532064 + } + ], + "validationError": false + }, + { + "dpid": "174", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidobtwdrk7dulyc6dghfr6zylbfisjwbs6l6ahd6qfkfdavs76dpa", + "time": 1708602732 + }, + { + "cid": "bafkreidobtwdrk7dulyc6dghfr6zylbfisjwbs6l6ahd6qfkfdavs76dpa", + "time": 1708602732 + } + ], + "validationError": false + }, + { + "dpid": "175", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreignopdmerljfo6nzpq2hj5zr5g7h3wajjxthpuikxjpsdbco4tavm", + "time": 1708619376 + }, + { + "cid": "bafkreignopdmerljfo6nzpq2hj5zr5g7h3wajjxthpuikxjpsdbco4tavm", + "time": 1708619376 + }, + { + "cid": "bafkreiae65pw54dt5vx75oenehagushpi2sh42c3zqld7der3ircmfyqam", + "time": 1708653516 + }, + { + "cid": "bafkreiae65pw54dt5vx75oenehagushpi2sh42c3zqld7der3ircmfyqam", + "time": 1708653516 + }, + { + "cid": "bafkreihm7iuibrdzlr5uyrhhkyijboyheeujettcihcgmegrna43mmvs6a", + "time": 1708672332 + }, + { + "cid": "bafkreihm7iuibrdzlr5uyrhhkyijboyheeujettcihcgmegrna43mmvs6a", + "time": 1708672332 + }, + { + "cid": "bafkreicjzr7d4odl6dzvx3acnng3cwq5sptcjn5wbqeep4juymadohagfi", + "time": 1708674912 + }, + { + "cid": "bafkreicjzr7d4odl6dzvx3acnng3cwq5sptcjn5wbqeep4juymadohagfi", + "time": 1708674912 + }, + { + "cid": "bafkreihdgbp3rrimo3sfayouabpfy5awspr6lues5rj5pjld2mcwi5ftsm", + "time": 1708729500 + }, + { + "cid": "bafkreihdgbp3rrimo3sfayouabpfy5awspr6lues5rj5pjld2mcwi5ftsm", + "time": 1708729500 + }, + { + "cid": "bafkreidpouvko3ht6dkhplrx44r4cbycx4irvw6mnunven3x2mll5kgaie", + "time": 1708890600 + }, + { + "cid": "bafkreidpouvko3ht6dkhplrx44r4cbycx4irvw6mnunven3x2mll5kgaie", + "time": 1708890600 + } + ], + "validationError": false + }, + { + "dpid": "176", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidwx6vv43n4vyd2gvnc7a7hoalg3nj6ncuxtzete7bay6lgkdjrji", + "time": 1708695348 + }, + { + "cid": "bafkreidwx6vv43n4vyd2gvnc7a7hoalg3nj6ncuxtzete7bay6lgkdjrji", + "time": 1708695348 + }, + { + "cid": "bafkreibjcr22ex3uibpoxf3fpzriafscmbivizzkqrjx7iqh5qbkg4oizq", + "time": 1708695612 + }, + { + "cid": "bafkreibjcr22ex3uibpoxf3fpzriafscmbivizzkqrjx7iqh5qbkg4oizq", + "time": 1708695612 + } + ], + "validationError": false + }, + { + "dpid": "177", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihnul5baol6hg5vsq6sokqwbm5txyb5honlphs3rpjklc4d7pj4qi", + "time": 1708882260 + }, + { + "cid": "bafkreihnul5baol6hg5vsq6sokqwbm5txyb5honlphs3rpjklc4d7pj4qi", + "time": 1708882260 + }, + { + "cid": "bafkreidp7tepg63xchd2sxngslv6douzhg53j7ndnf4bwbxgwthvjxgmhq", + "time": 1715951676 + } + ], + "validationError": false + }, + { + "dpid": "178", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibnvu2kmntm4p2ttebfqukas5hdzzthyahkkgxizihb4f3fwvszoy", + "time": 1708900272 + }, + { + "cid": "bafkreibnvu2kmntm4p2ttebfqukas5hdzzthyahkkgxizihb4f3fwvszoy", + "time": 1708900272 + }, + { + "cid": "bafkreibax2nwfvcmewzi4muxbtywulni6zvvihnipob3hvweohuu3lmawu", + "time": 1708900680 + }, + { + "cid": "bafkreibax2nwfvcmewzi4muxbtywulni6zvvihnipob3hvweohuu3lmawu", + "time": 1708900680 + }, + { + "cid": "bafkreiaicia5j7xdpo5gr3nukomg7kylxpnyfiguflr7ff5z6v45rbg3om", + "time": 1708909188 + }, + { + "cid": "bafkreiaicia5j7xdpo5gr3nukomg7kylxpnyfiguflr7ff5z6v45rbg3om", + "time": 1708909188 + } + ], + "validationError": false + }, + { + "dpid": "179", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiekmumtbr6fg6ksitwx3744knbituhthjis3mnd5facdbqc6526fy", + "time": 1708930572 + }, + { + "cid": "bafkreiekmumtbr6fg6ksitwx3744knbituhthjis3mnd5facdbqc6526fy", + "time": 1708930572 + } + ], + "validationError": false + }, + { + "dpid": "180", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihyn2pm7mqzcjabytkoszcetquu4q6zouwaeqhp6bavvlmijqvj2m", + "time": 1708965960 + }, + { + "cid": "bafkreihyn2pm7mqzcjabytkoszcetquu4q6zouwaeqhp6bavvlmijqvj2m", + "time": 1708965960 + }, + { + "cid": "bafkreigksvcw5f67h2kzbxnndwf47ch74nb4vbniepacjt6y5nm74ote4m", + "time": 1708966848 + }, + { + "cid": "bafkreigksvcw5f67h2kzbxnndwf47ch74nb4vbniepacjt6y5nm74ote4m", + "time": 1708966848 + }, + { + "cid": "bafkreifhzq76yqo66hcvcj2e7554odbcppblavfrobmyuxynaj2wv2ydlm", + "time": 1708974048 + }, + { + "cid": "bafkreifhzq76yqo66hcvcj2e7554odbcppblavfrobmyuxynaj2wv2ydlm", + "time": 1708974048 + } + ], + "validationError": false + }, + { + "dpid": "181", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieqzlofquf3yakkfcqwzzg77ea6qrirnbli6iedpeo5zk2hktedfe", + "time": 1709032560 + }, + { + "cid": "bafkreieqzlofquf3yakkfcqwzzg77ea6qrirnbli6iedpeo5zk2hktedfe", + "time": 1709032560 + } + ], + "validationError": false + }, + { + "dpid": "182", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070444 + }, + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070444 + }, + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070600 + }, + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070600 + } + ], + "validationError": false + }, + { + "dpid": "183", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihfy4ibvcrdxlq3n6y6ahskxglvyhskwugy7xwi4amk4dcek7hvvi", + "time": 1709074644 + }, + { + "cid": "bafkreihfy4ibvcrdxlq3n6y6ahskxglvyhskwugy7xwi4amk4dcek7hvvi", + "time": 1709074644 + } + ], + "validationError": false + }, + { + "dpid": "184", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif4pg7ph3qxuj4yoapw4tez3jxt52m5fhp7nkd3q2ai4xrwva46oq", + "time": 1709709132 + }, + { + "cid": "bafkreif4pg7ph3qxuj4yoapw4tez3jxt52m5fhp7nkd3q2ai4xrwva46oq", + "time": 1709709132 + } + ], + "validationError": false + }, + { + "dpid": "185", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibbt24dc64gwzwhcjtyha5qsdvmj4ztlkbhg7p7s74hjpdlrveo5a", + "time": 1709710296 + }, + { + "cid": "bafkreibbt24dc64gwzwhcjtyha5qsdvmj4ztlkbhg7p7s74hjpdlrveo5a", + "time": 1709710296 + } + ], + "validationError": false + }, + { + "dpid": "186", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiezmycqcs3426uhlpamwfidxlt72njmc22cuma47fxx5e3oi7zrpq", + "time": 1709713596 + }, + { + "cid": "bafkreiezmycqcs3426uhlpamwfidxlt72njmc22cuma47fxx5e3oi7zrpq", + "time": 1709713596 + } + ], + "validationError": false + }, + { + "dpid": "187", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiemcbfxzi5v3sjiztw4zqs7ngbbirmbcza2sxag4ur4gx3jc57weu", + "time": 1709713968 + }, + { + "cid": "bafkreiemcbfxzi5v3sjiztw4zqs7ngbbirmbcza2sxag4ur4gx3jc57weu", + "time": 1709713968 + } + ], + "validationError": false + }, + { + "dpid": "188", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifc7blw4sfdrqqyinooyk2zajg4kvobazfpxmmyxhky67xyrtg2bi", + "time": 1709717856 + }, + { + "cid": "bafkreifc7blw4sfdrqqyinooyk2zajg4kvobazfpxmmyxhky67xyrtg2bi", + "time": 1709717856 + } + ], + "validationError": false + }, + { + "dpid": "189", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib5w5wqatnhuuekzdmqe33ci4jmczwtcw235mdugsk6sbjkewhycq", + "time": 1709718156 + }, + { + "cid": "bafkreib5w5wqatnhuuekzdmqe33ci4jmczwtcw235mdugsk6sbjkewhycq", + "time": 1709718156 + } + ], + "validationError": false + }, + { + "dpid": "190", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidlwnin6u3lbb5me7gsaomtrz3xfxruteb3oqvng2isup6dq2md2u", + "time": 1710044316 + }, + { + "cid": "bafkreidlwnin6u3lbb5me7gsaomtrz3xfxruteb3oqvng2isup6dq2md2u", + "time": 1710044316 + } + ], + "validationError": false + }, + { + "dpid": "191", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreif7hsizhhb3pe5onhq7lnteu65c4wjdlhlh2yhokzsssnjiqhbizy", + "time": 1710848280 + }, + { + "cid": "bafkreif7hsizhhb3pe5onhq7lnteu65c4wjdlhlh2yhokzsssnjiqhbizy", + "time": 1710848496 + } + ], + "validationError": false + }, + { + "dpid": "192", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreifup6tri42y77u4cyu5dtceve4hbesvkfhwod6cnlwnworm5kg5jy", + "time": 1710934908 + } + ], + "validationError": false + }, + { + "dpid": "193", + "owner": "0xec29aCa1a8740B8C5e2e06EBB52290700B9a2c40", + "versions": [ + { + "cid": "bafkreibs5jouyrflaifdy5h46qcao4ifl6k2uxkkdbjjhztowrzrdi7uey", + "time": 1711110348 + } + ], + "validationError": false + }, + { + "dpid": "194", + "owner": "0xec29aCa1a8740B8C5e2e06EBB52290700B9a2c40", + "versions": [ + { + "cid": "bafkreie4ql2xrlaaa3gydydecs62q6llw6ph3nql4wtv4vrvk7qlry5mii", + "time": 1711112832 + }, + { + "cid": "bafkreie4ql2xrlaaa3gydydecs62q6llw6ph3nql4wtv4vrvk7qlry5mii", + "time": 1711112916 + }, + { + "cid": "bafkreie4ql2xrlaaa3gydydecs62q6llw6ph3nql4wtv4vrvk7qlry5mii", + "time": 1711112964 + }, + { + "cid": "bafkreie4ql2xrlaaa3gydydecs62q6llw6ph3nql4wtv4vrvk7qlry5mii", + "time": 1711113060 + } + ], + "validationError": false + }, + { + "dpid": "195", + "owner": "0x4d0EC1B776aE7d57AFa42294cd6F5fa8Ab659819", + "versions": [ + { + "cid": "bafkreigl33hhuzyxtipdx26wsu4u775m47ceu7aryim3dbkquzxdzxw2cm", + "time": 1711250184 + } + ], + "validationError": false + }, + { + "dpid": "196", + "owner": "0x4d0EC1B776aE7d57AFa42294cd6F5fa8Ab659819", + "versions": [ + { + "cid": "bafkreicrbew4z2xa5msag2xqluych2cqvu4q37if7c4myrlgrso7clyr5m", + "time": 1711283700 + } + ], + "validationError": false + }, + { + "dpid": "197", + "owner": "0x711E9b9e8aD75CBD3AC024a8e4Aeeff59AfBae6c", + "versions": [ + { + "cid": "bafkreihzdyg7sncus6iiyywrmq3ieg6jpanwhopp3nermvdbj6twldqz4a", + "time": 1711484460 + } + ], + "validationError": false + }, + { + "dpid": "198", + "owner": "0xDAF8752DDcCE8a6B709aa271e7Efc60F75CDDF64", + "versions": [ + { + "cid": "bafkreifnbtsbubgr4igy3d2bdfm3t7wglonaefcpb6hltgx5ddemoirxbq", + "time": 1711485360 + } + ], + "validationError": false + }, + { + "dpid": "199", + "owner": "0xE713c665AC962155Ce2230b67034FBbc68Aa001E", + "versions": [ + { + "cid": "bafkreidrgw7m3dqhrhtkv3oof2tbuyaspmo3j7mfbyt4mcoiwsfzrelntm", + "time": 1712586828 + }, + { + "cid": "bafkreie6idsoipa3agkyg3widjx2qkqhyqesw7a4inbtf3v5bjwqmgvbu4", + "time": 1712746296 + }, + { + "cid": "bafkreifxbvttafs77huxssiyh7cia2aeds44qn7u3i6mo37rv5ok4n3yx4", + "time": 1712849196 + } + ], + "validationError": false + }, + { + "dpid": "200", + "owner": "0xb7633a1C95CDeFf14Fe90A18C61eA2EeA56ADd6F", + "versions": [ + { + "cid": "bafkreibr74kptq3taaq6vkk5ncliqjlaxfudeteoapwfj5dbk7lvabpa7a", + "time": 1712589912 + }, + { + "cid": "bafkreiehg2co367mlvhwga322q27m6k6ed3cll3jfhbeotrjr5uji4vuvy", + "time": 1712590308 + } + ], + "validationError": false + }, + { + "dpid": "201", + "owner": "0xbC4f75a4579c55B3b347C316159e03Ad9A233346", + "versions": [ + { + "cid": "bafkreigaex4kn6t5jtwjvfg6fhvu5ernugv4c2oyijj5c6sitlp7feyz4i", + "time": 1712699136 + }, + { + "cid": "bafkreibbutjlx6mftck5cdrghtnec7pupin5tmocw3jjnltk5b6ymepreu", + "time": 1712758008 + }, + { + "cid": "bafkreiasprpssrqrmt6csyxvp6h2hosczpnuhy5yet3ebdmp44nwqmnnxa", + "time": 1712910312 + }, + { + "cid": "bafkreiaml7ltpqcdawuri4pgze6lwst74dlwkkrxvu7ycxwcmucm54pzw4", + "time": 1712924748 + }, + { + "cid": "bafkreie44bdq6au5k544axgyh3t5u557sgojmk77jo6iebd2nuxdoboale", + "time": 1713181740 + }, + { + "cid": "bafkreifz6sboaziz6ozlws755w4xfa3agxerpcqfz2x3tyzpardhte57lu", + "time": 1713202788 + }, + { + "cid": "bafkreieebhdtnluia3gdhpi7cm3gskmnytq2vfmgi6mc7hkv3kqakcjqku", + "time": 1713210492 + }, + { + "cid": "bafkreicazrs2upqf67gb5z57oyoqd5p2ffsn3w4m4mpib5ttk4skwsoha4", + "time": 1713820044 + }, + { + "cid": "bafkreif33f5fja4xlt5hfng7au7u56pqxmhq7cwbsqqbo74kvh4dfmzt3a", + "time": 1713876336 + }, + { + "cid": "bafkreiffrskcqxf6sxlgi4vyfc6i7ppvsqd6fak5fr5azzxwurobetsvtm", + "time": 1713910788 + }, + { + "cid": "bafkreiffrskcqxf6sxlgi4vyfc6i7ppvsqd6fak5fr5azzxwurobetsvtm", + "time": 1713912876 + }, + { + "cid": "bafkreidymyibcfrjg6gjfdwdrsfxt2veregxrbxeilcqwawz5jstr2wgje", + "time": 1713966252 + }, + { + "cid": "bafkreiczragradkmshlydspr2hbkuj2ze5jptfrvh3ahygx2fvwxmx3eia", + "time": 1714743048 + }, + { + "cid": "bafkreicwl624bosttcswwvtkyisg2uqs2c5n65rsakaxa4c56xlxqwbnc4", + "time": 1715089932 + }, + { + "cid": "bafkreibomeyu2ha74ghyeargxgmne3zccrq3laf2hl5moilp62u5imaktq", + "time": 1715093316 + } + ], + "validationError": false + }, + { + "dpid": "202", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreiblksmeh2h2rukdd3yyw2qpm2fspl233fccd3dmnjycukacslxtlu", + "time": 1712828544 + } + ], + "validationError": false + }, + { + "dpid": "203", + "owner": "0xbC4f75a4579c55B3b347C316159e03Ad9A233346", + "versions": [ + { + "cid": "bafkreieyuphulyypkgqyrenp5bsa4fmhdyjm6sxupuazdzdjr7bck3b6t4", + "time": 1712905908 + } + ], + "validationError": false + }, + { + "dpid": "204", + "owner": "0x29E9454e1Ee1bAf582403E1Dd3352134b044d6c6", + "versions": [ + { + "cid": "bafkreia3hv332uc5hjtjufiaptgqccnirp6glgqlp3kkmqqxzckk2wtque", + "time": 1714895436 + }, + { + "cid": "bafkreia3hv332uc5hjtjufiaptgqccnirp6glgqlp3kkmqqxzckk2wtque", + "time": 1714899456 + }, + { + "cid": "bafkreicedcwhhshszz4yorw4dsc67juu4eywrkfr2viacv3awmcvt7xroi", + "time": 1714902324 + } + ], + "validationError": false + }, + { + "dpid": "205", + "owner": "0x5249a44B2abEa543b2C441AC4964A08deB3Ed3CB", + "versions": [ + { + "cid": "bafkreihjkupfxvnrf5rgtwrrwacpatea6p6rfkpptk7tbyqug2yey56vmm", + "time": 1714902900 + }, + { + "cid": "bafkreifj7ps2uj2ovgbdx73j2rjrdgbsv5v52vsqbku73jk57mfo36e4ea", + "time": 1715097528 + } + ], + "validationError": false + }, + { + "dpid": "206", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreibwzk6k24vak2utess6b4g3ymvoduf2wmmjq5ckp74zffetkvtp7y", + "time": 1715105532 + } + ], + "validationError": false + }, + { + "dpid": "207", + "owner": "0x29E9454e1Ee1bAf582403E1Dd3352134b044d6c6", + "versions": [ + { + "cid": "bafkreifsokpngt7o5nnf3svrjwq52a4jfmpsbo5dxrtfu7gxutn5b35zdq", + "time": 1715324136 + }, + { + "cid": "bafkreief5hvxfazsnkfzeuebbbyrqgrncfvzs62ixodku5bd2es7dxafmy", + "time": 1717411476 + } + ], + "validationError": false + }, + { + "dpid": "208", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreiecniqyzhz3ydgr6qalq2v64cptmc75ziriagcqumrg5mmldqs6ui", + "time": 1715706588 + } + ], + "validationError": false + }, + { + "dpid": "209", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreibcnzl5mhvil6ossyaldtmhvci3pgrop34rodde6nsqo4seymk35u", + "time": 1715754924 + } + ], + "validationError": false + }, + { + "dpid": "210", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreice6ojx5rphjrv3ghcwpmyceb4ftvogpjgueis7oysx4iwofux7tq", + "time": 1715756148 + } + ], + "validationError": false + }, + { + "dpid": "211", + "owner": "0xE713c665AC962155Ce2230b67034FBbc68Aa001E", + "versions": [ + { + "cid": "bafkreifxkw7fxmqs73xjkvpqib25ogct6sh7j5ult7ouemn27eyus6vteq", + "time": 1715758284 + } + ], + "validationError": false + }, + { + "dpid": "212", + "owner": "0xE713c665AC962155Ce2230b67034FBbc68Aa001E", + "versions": [ + { + "cid": "bafkreibd6z4ez67iorgtngwjgyzunrfafqp6ckd4rzxqcdkldsynzircbq", + "time": 1715758332 + } + ], + "validationError": false + }, + { + "dpid": "213", + "owner": "0xE713c665AC962155Ce2230b67034FBbc68Aa001E", + "versions": [ + { + "cid": "bafkreiftabtiwceukykjj7djbll6o7vj2b5nqljq2ayqos7a4q5bfj26qe", + "time": 1715759052 + } + ], + "validationError": false + }, + { + "dpid": "214", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreib4lne5chotkvctuooguqtknxwcu62tcg2f3czrhekq55yopr326y", + "time": 1715759664 + } + ], + "validationError": false + }, + { + "dpid": "215", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreidlca6x7or4cu26j42ujpauito7lu36sgrnkzikwtbblhxxj7ou5q", + "time": 1715783532 + } + ], + "validationError": false + }, + { + "dpid": "216", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreidxpaqx4emlzuyny7nwptse7v43fnldv6scxwerzf52ifwtj2zpmq", + "time": 1715846040 + }, + { + "cid": "bafkreidxpaqx4emlzuyny7nwptse7v43fnldv6scxwerzf52ifwtj2zpmq", + "time": 1715846232 + } + ], + "validationError": false + }, + { + "dpid": "217", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreielmjyyh4huzlvdfq5zpkq4yfynqkir7nzyw2hraph34z6pk6vpta", + "time": 1715852172 + } + ], + "validationError": false + }, + { + "dpid": "218", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreial2hxxfcpzkm474ommsvbywgkoz7giyai5y2vnzt2yuswt3qwvhe", + "time": 1715852724 + } + ], + "validationError": false + }, + { + "dpid": "219", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreih5rxnqa74dgehy5vlzf2c3bjpdd4d37wjsmd6umklvtpravrymii", + "time": 1715852904 + }, + { + "cid": "bafkreif7bdndzubravkpbgllcz2uejzxvuagbrxw4kg3afvzqcz5u2epji", + "time": 1715853012 + } + ], + "validationError": false + }, + { + "dpid": "220", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreihdis2gtow2vyjw3lfrrk75nwhimvr3mol5tw2yg5m6yb4qkfzusm", + "time": 1715853288 + } + ], + "validationError": false + }, + { + "dpid": "221", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreieykztli6himlvsp66y4eq5e6olhmd57mq3ff7q5lpkl3h57gdzhy", + "time": 1715854884 + } + ], + "validationError": false + }, + { + "dpid": "222", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreigduiq7h6qo3eszrpbgfaxllcboxxa7isr35ajf3qkax2522stlhu", + "time": 1715857896 + } + ], + "validationError": false + }, + { + "dpid": "223", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreifz5uvrar2vdxtcmd2sh3xhibyansyg2joqmnclce6spwopswo7qm", + "time": 1715858892 + } + ], + "validationError": false + }, + { + "dpid": "224", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreihjdwdspwjdptweikwbzpzthv2b3vkaablm6yrgzg2syf34ay5zo4", + "time": 1715858988 + } + ], + "validationError": false + }, + { + "dpid": "225", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreibd4v3nmp6n652mrgmuha6q65cul6pq625gzirsrka4wiftdrbxkm", + "time": 1715859360 + } + ], + "validationError": false + }, + { + "dpid": "226", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreicikabkude4odfkc3h55d7tbma527qzcbq5f7urusu2f65jy2qdr4", + "time": 1715862000 + } + ], + "validationError": false + }, + { + "dpid": "227", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreickxvmqpwkg3hoiqaibcsz5mxgcquhoivflzgqloupgfvgxiahgmm", + "time": 1715862264 + } + ], + "validationError": false + }, + { + "dpid": "228", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreigpxc4535atofw53qhlwy5ljmku7cgvi64yzohjaqllh63e75iigm", + "time": 1715862396 + } + ], + "validationError": false + }, + { + "dpid": "229", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreibyqg4efuc4je3szq6augfzrlknk4kyo56jvmtlv6v3u34olfjw5q", + "time": 1715862828 + } + ], + "validationError": false + }, + { + "dpid": "230", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreice2sc42ahkjmt2fdkgrdgbpr2jbb462swclyamdykpc6guyigg3e", + "time": 1715863632 + } + ], + "validationError": false + }, + { + "dpid": "231", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreihdynlkgw62oeknjc6cpbibmk6hmql46haes3sw77twqxzxj4p7dy", + "time": 1715863932 + } + ], + "validationError": false + }, + { + "dpid": "232", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreidbb6rj2zcaufmhdqf2ioqa4ub573fsjwve3xsqtihz4t2mu7mfvm", + "time": 1715864112 + } + ], + "validationError": false + }, + { + "dpid": "233", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreih3wosdxfpkdajepb6fr6mpnbzotvx3757aapwh5jc4uj5ki4nsb4", + "time": 1715864796 + } + ], + "validationError": false + }, + { + "dpid": "234", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreieaqwjyk5oueqxkhoqbmh4priqdl2d5htgyp7euofym22t2vup2n4", + "time": 1715864856 + } + ], + "validationError": false + }, + { + "dpid": "235", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreicegqhkh77pjlaffif4jptccfjcug4x2v6uzkuhgzk7mvkp3h3pje", + "time": 1715864988 + } + ], + "validationError": false + }, + { + "dpid": "236", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreiaovnmdbwprrbe2ol5wmsiohpepr74eobdzp7mnhmolazca6rmk3u", + "time": 1715945640 + } + ], + "validationError": false + }, + { + "dpid": "237", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreia5h5rgnj3tckolwznad5ufivrdkrfcwwb7ybvhauqy3tpvsanxbe", + "time": 1715966676 + } + ], + "validationError": false + }, + { + "dpid": "238", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreihna43pr26bwxltihgzpby4pfamdojeyuusiikodzsfx2cx4nizwi", + "time": 1716044616 + }, + { + "cid": "bafkreiawwiamv3sm7ujwtusakl33ncwprbmvgqygsugcjc63e57o4qedrm", + "time": 1716195456 + }, + { + "cid": "bafkreifsn65szz2c7oigkpaj7zf5vveme2bdvyimhikvcthzpfamx4amqa", + "time": 1716195624 + }, + { + "cid": "bafkreiffpqp5eqhtb5twcggyfdwxd6zciqqrm43356m5g64tkozw6ox2um", + "time": 1716196968 + }, + { + "cid": "bafkreibhvf342535vnaxqpjvapnfvuh563g6fqq26ifmmks3edyig2bqje", + "time": 1716197688 + } + ], + "validationError": false + }, + { + "dpid": "239", + "owner": "0xbC4f75a4579c55B3b347C316159e03Ad9A233346", + "versions": [ + { + "cid": "bafkreida4e3jtx44nqujveh7qstktsiwvmgvqvdrxfp6oxwtgtj3yt7rtq", + "time": 1716299616 + } + ], + "validationError": false + }, + { + "dpid": "240", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreicc35sby7tw62yixogr7cdyb74ogud2oks7ucxoqm2dxl2ns7iqxe", + "time": 1716455376 + }, + { + "cid": "bafkreih4fwgcdcuanlvqrfe23gtssi2ry5qn5aiartyyxnrgwie47vogjq", + "time": 1716456924 + }, + { + "cid": "bafkreibmiu4or57a3zt2oqwpyo55sxilbohbekoio7ar6xctre4rplmctm", + "time": 1716457200 + }, + { + "cid": "bafkreig2frbnikhvo7ybhocvvtcxemjqjkzausxmea75mj4yes4vrh3ly4", + "time": 1716457332 + }, + { + "cid": "bafkreibrhymhxsjll5amkbh4xqpi3ndr5bp5lbs6vs5x43aqzdynbzrlxa", + "time": 1716559284 + }, + { + "cid": "bafkreidwe7ueatapvutqf34m6sdvqt2deyhmzgnkme45filbvjxcqhnhya", + "time": 1717161096 + }, + { + "cid": "bafkreiaipcdk567t72ftbuvqeuyec64zw57ed4ttaftjazoy3how25y254", + "time": 1717161504 + }, + { + "cid": "bafkreiglntmzkq4nhkaqjkukhdyngilz33lmqmlclyeich6kbx6h5cayau", + "time": 1717393608 + }, + { + "cid": "bafkreiefx4s7oqovph4lyzx53gwki53jgb3dikvp43ccdiraviw5wks7aq", + "time": 1718458956 + }, + { + "cid": "bafkreiablucsqmv2wvztfpvfnkk5fm5ep5m4ebzwkfl23yjhsndb7u3gau", + "time": 1718461368 + } + ], + "validationError": false + }, + { + "dpid": "241", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreici76b6bx7smkkihhzjpv7hj26q4uowye5vnmia36gn6lkaa65f6a", + "time": 1716458616 + } + ], + "validationError": false + }, + { + "dpid": "242", + "owner": "0x29E9454e1Ee1bAf582403E1Dd3352134b044d6c6", + "versions": [ + { + "cid": "bafkreibzcu3iwi7buqwy2ibujh2sbe4gmbyhycil7w4xeuvldsa2mrbypy", + "time": 1716464784 + } + ], + "validationError": false + }, + { + "dpid": "243", + "owner": "0x008292E57A2d9B34525d82876068652e639e61D8", + "versions": [ + { + "cid": "bafkreiaxbwjw2cp7mvfaul4xlxkguafmfkxxhym7ik5bty7dfehxff3tgu", + "time": 1716551616 + } + ], + "validationError": false + }, + { + "dpid": "244", + "owner": "0xb4096E016F162d10EfC8C20F8Db22a54D80935c8", + "versions": [ + { + "cid": "bafkreiflayannh3vsjxn2khne5gjtupt3mtso4rd6x4dnmfh3rhxzkvhfm", + "time": 1717158900 + } + ], + "validationError": false + }, + { + "dpid": "245", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreic56m4scp5t7fdb2zajue3tupjevoxlwaly2skqbdbncy5zbydike", + "time": 1717159332 + } + ], + "validationError": false + }, + { + "dpid": "246", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreib23oradn74sxmdji6ofw4iffliheytyq7kq3ge3bnz2tooz764cu", + "time": 1717160400 + } + ], + "validationError": false + }, + { + "dpid": "247", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreiakdqljwmvvzkmwjrgkto4meyyghrl3tigocnoapejdquuiigy2si", + "time": 1718012544 + }, + { + "cid": "bafkreiehku747l4loyvugbfby55tig4qjgyj66ujbcpuohucktx6dg72k4", + "time": 1718015760 + } + ], + "validationError": false + }, + { + "dpid": "248", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreic65zfq5ryxtmxtei3264qafrmcdyysxnmxl2krldoaitrjymogta", + "time": 1718017368 + } + ], + "validationError": false + }, + { + "dpid": "249", + "owner": "0x29E9454e1Ee1bAf582403E1Dd3352134b044d6c6", + "versions": [ + { + "cid": "bafkreihriifz5cqqdfrw2ujetfvcqdpgtpggjoqnp6tbj5y5lmveyz3bbm", + "time": 1718720688 + }, + { + "cid": "bafkreihriifz5cqqdfrw2ujetfvcqdpgtpggjoqnp6tbj5y5lmveyz3bbm", + "time": 1718720964 + } + ], + "validationError": false + }, + { + "dpid": "250", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreibibwtxsjbc7yy55uzezyt47b6hr3tkkpawchcckm5xwv2pdbxfxe", + "time": 1718864520 + } + ], + "validationError": false + }, + { + "dpid": "251", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreielbfrhhntmclgpnlamnx3rxnmmnqape5cshvdh5midwpdvkwodui", + "time": 1718883600 + } + ], + "validationError": false + }, + { + "dpid": "252", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreicfnp7rt3uez2ououz26l7y5ydhfqwsttvx4nlbcjtlytvjzmerka", + "time": 1718886312 + } + ], + "validationError": false + }, + { + "dpid": "253", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreieb3nnzilijzawo4uyzxwrqhhgwxw34xgtyvdxgjedmdz36jhi2aq", + "time": 1718973660 + } + ], + "validationError": false + }, + { + "dpid": "254", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreicurjfzvv7ab5bivgo5kkqpnx4xvtsozkaamjbnrasfbxcncrr73e", + "time": 1718973792 + } + ], + "validationError": false + } +] \ No newline at end of file diff --git a/desci-contracts/migration-data/aliasRegistry_dev_Wed,_12_Jun_2024_13:23:15_GMT.json b/desci-contracts/migration-data/aliasRegistry_dev_Wed,_12_Jun_2024_13:23:15_GMT.json new file mode 100644 index 000000000..33a9c0d27 --- /dev/null +++ b/desci-contracts/migration-data/aliasRegistry_dev_Wed,_12_Jun_2024_13:23:15_GMT.json @@ -0,0 +1,4904 @@ +{ + "address": "0x2Ea4Ee2Af79495e045EBe925aC67d755520877e7", + "dpids": [ + { + "dpid": "0", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie2idd2yuwibppujafgtfc6cczopht4q47y563q4paml2me2dsh6y", + "time": 1675737468 + }, + { + "cid": "bafkreie2idd2yuwibppujafgtfc6cczopht4q47y563q4paml2me2dsh6y", + "time": 1675737468 + } + ], + "validationError": false + }, + { + "dpid": "1", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigbp7bahnrxujbz5uu3j6hzmyimq7wijkucwyi4bc5tbvka5xw3wq", + "time": 1675781796 + }, + { + "cid": "bafkreigbp7bahnrxujbz5uu3j6hzmyimq7wijkucwyi4bc5tbvka5xw3wq", + "time": 1675781796 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818404 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818404 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818608 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818608 + } + ], + "validationError": false + }, + { + "dpid": "2", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihlsxjw3gzrikm2att6sd2yty4qx37z3fgmzokrm6fd3oony2qqby", + "time": 1676095440 + }, + { + "cid": "bafkreihlsxjw3gzrikm2att6sd2yty4qx37z3fgmzokrm6fd3oony2qqby", + "time": 1676095440 + }, + { + "cid": "bafkreigvalv7basyqxn57b5ittssieecsccy7qaypmy6s7egr2o5tcqnda", + "time": 1676096820 + }, + { + "cid": "bafkreigvalv7basyqxn57b5ittssieecsccy7qaypmy6s7egr2o5tcqnda", + "time": 1676096820 + } + ], + "validationError": false + }, + { + "dpid": "3", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiancsq3yywjzkoyevwhn4hxyzgcfbdb72jspegmwy6uacd2cztpra", + "time": 1676725008 + }, + { + "cid": "bafkreiancsq3yywjzkoyevwhn4hxyzgcfbdb72jspegmwy6uacd2cztpra", + "time": 1676725008 + } + ], + "validationError": false + }, + { + "dpid": "4", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreick32zk4ennjwwy7vqva7wpjo2w5d4fkwhg7hkrdjk63xq5r6gup4", + "time": 1676988612 + }, + { + "cid": "bafkreick32zk4ennjwwy7vqva7wpjo2w5d4fkwhg7hkrdjk63xq5r6gup4", + "time": 1676988612 + } + ], + "validationError": false + }, + { + "dpid": "5", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihra4e2ejsm7yqra4wmo2ww43j4ndvylfsrv5obobkl2k666baram", + "time": 1676996292 + }, + { + "cid": "bafkreihra4e2ejsm7yqra4wmo2ww43j4ndvylfsrv5obobkl2k666baram", + "time": 1676996292 + } + ], + "validationError": false + }, + { + "dpid": "6", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiee7atuqdvq7dtxf2msslelz2ubst2g64oigetxunn352ryqvuoti", + "time": 1677066240 + }, + { + "cid": "bafkreiee7atuqdvq7dtxf2msslelz2ubst2g64oigetxunn352ryqvuoti", + "time": 1677066240 + } + ], + "validationError": false + }, + { + "dpid": "7", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidi2idvbbbg5y6iuf3bnbdo7gkyzgoz3hik2hghr3rl3gd7nplnwe", + "time": 1677080820 + }, + { + "cid": "bafkreidi2idvbbbg5y6iuf3bnbdo7gkyzgoz3hik2hghr3rl3gd7nplnwe", + "time": 1677080820 + }, + { + "cid": "bafkreicyvzgk632l2zn55dkbscjrwrlrxlckrxjhpxn6kiv4roegwzprpi", + "time": 1677081012 + }, + { + "cid": "bafkreicyvzgk632l2zn55dkbscjrwrlrxlckrxjhpxn6kiv4roegwzprpi", + "time": 1677081012 + } + ], + "validationError": false + }, + { + "dpid": "8", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibnhuq4tliestyutqxrfco4wwr3gxyrp7dlydxvgkddo6euet5yyu", + "time": 1677144720 + }, + { + "cid": "bafkreibnhuq4tliestyutqxrfco4wwr3gxyrp7dlydxvgkddo6euet5yyu", + "time": 1677144720 + } + ], + "validationError": false + }, + { + "dpid": "9", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigjjlyedw3l7yfunjhaooe226hemiqz7pkeqb3arfmwvujknaa7pe", + "time": 1677230328 + }, + { + "cid": "bafkreigjjlyedw3l7yfunjhaooe226hemiqz7pkeqb3arfmwvujknaa7pe", + "time": 1677230328 + } + ], + "validationError": false + }, + { + "dpid": "10", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihbcdgctujsajvlhbbcghfkg766pprlgatvujzkw6utteryn737wi", + "time": 1677510672 + }, + { + "cid": "bafkreihbcdgctujsajvlhbbcghfkg766pprlgatvujzkw6utteryn737wi", + "time": 1677510672 + }, + { + "cid": "bafkreif6omh6d2nosj7exr4gybupz3i6owb7ig7mfha23bebzbbzgtj3ty", + "time": 1677511224 + }, + { + "cid": "bafkreif6omh6d2nosj7exr4gybupz3i6owb7ig7mfha23bebzbbzgtj3ty", + "time": 1677511224 + } + ], + "validationError": false + }, + { + "dpid": "11", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig75cxpsu2zhnkej7nwqszduw6l32luo3opikzsqa5wpfchnl7sua", + "time": 1678309056 + }, + { + "cid": "bafkreig75cxpsu2zhnkej7nwqszduw6l32luo3opikzsqa5wpfchnl7sua", + "time": 1678309056 + } + ], + "validationError": false + }, + { + "dpid": "12", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigvec6jtxth3eessemov7x62wjhtfpfihdleanekwx5l47rkxclcu", + "time": 1678771692 + }, + { + "cid": "bafkreigvec6jtxth3eessemov7x62wjhtfpfihdleanekwx5l47rkxclcu", + "time": 1678771692 + } + ], + "validationError": false + }, + { + "dpid": "13", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreienztazc23yp5ejvwymgekqf2kmx6foasxul7yzt6w5crjwceqsea", + "time": 1678814328 + }, + { + "cid": "bafkreienztazc23yp5ejvwymgekqf2kmx6foasxul7yzt6w5crjwceqsea", + "time": 1678814328 + }, + { + "cid": "bafkreid4yx77dkhlbmx2gqwwki6y2rjmuybnqkxqmxnoyjtx7uhgdkdeu4", + "time": 1680117252 + }, + { + "cid": "bafkreid4yx77dkhlbmx2gqwwki6y2rjmuybnqkxqmxnoyjtx7uhgdkdeu4", + "time": 1680117252 + } + ], + "validationError": false + }, + { + "dpid": "14", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiasx7tcckutok7a7yk7ej2pv6bolo5naihlk2gny6tpykcfvzxqm4", + "time": 1679014104 + }, + { + "cid": "bafkreiasx7tcckutok7a7yk7ej2pv6bolo5naihlk2gny6tpykcfvzxqm4", + "time": 1679014104 + } + ], + "validationError": false + }, + { + "dpid": "15", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifjuqlmsnnr2vlhwxrjsgu5zczwgodqjuzmo4kzgpzzu5zn42ivby", + "time": 1679219244 + }, + { + "cid": "bafkreifjuqlmsnnr2vlhwxrjsgu5zczwgodqjuzmo4kzgpzzu5zn42ivby", + "time": 1679219244 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219328 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219328 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219484 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219484 + } + ], + "validationError": false + }, + { + "dpid": "16", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig27rnst73rqnqgtesyo32xhrhaqtdxbvtdohwnjdzua7cyapghbu", + "time": 1679343324 + }, + { + "cid": "bafkreig27rnst73rqnqgtesyo32xhrhaqtdxbvtdohwnjdzua7cyapghbu", + "time": 1679343324 + } + ], + "validationError": false + }, + { + "dpid": "17", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigggibyev5x4w3tcydslfl3j5g2fl2sabfcxvdzqeajzfg3tqignq", + "time": 1679409324 + }, + { + "cid": "bafkreigggibyev5x4w3tcydslfl3j5g2fl2sabfcxvdzqeajzfg3tqignq", + "time": 1679409324 + } + ], + "validationError": false + }, + { + "dpid": "18", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigghoctitgbpsjl6elgjkdlpu26t6zon7gqfx7cuhprsyykcjgvee", + "time": 1679409744 + }, + { + "cid": "bafkreigghoctitgbpsjl6elgjkdlpu26t6zon7gqfx7cuhprsyykcjgvee", + "time": 1679409744 + } + ], + "validationError": false + }, + { + "dpid": "19", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicvdmmzw7tyaa7dkaikb7dcowjjbu3cv76rhvxqdbzm7gcg4inrfq", + "time": 1679539764 + }, + { + "cid": "bafkreicvdmmzw7tyaa7dkaikb7dcowjjbu3cv76rhvxqdbzm7gcg4inrfq", + "time": 1679539764 + } + ], + "validationError": false + }, + { + "dpid": "20", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie6bxf7u3z45sn2amk7ocsjihloiecfncmwsgvqoamqjnczfwnexy", + "time": 1679540424 + }, + { + "cid": "bafkreie6bxf7u3z45sn2amk7ocsjihloiecfncmwsgvqoamqjnczfwnexy", + "time": 1679540424 + }, + { + "cid": "bafkreibnxznsx2xwdasyhjr2epkypjohuvz5qy35iu2elyoygjnfbk7im4", + "time": 1680554796 + }, + { + "cid": "bafkreibnxznsx2xwdasyhjr2epkypjohuvz5qy35iu2elyoygjnfbk7im4", + "time": 1680554796 + } + ], + "validationError": false + }, + { + "dpid": "21", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiecholb67ldemsvyr7js2x6dewjnsylvpk47ejyhrokkbnqbl4i4y", + "time": 1679637204 + }, + { + "cid": "bafkreiecholb67ldemsvyr7js2x6dewjnsylvpk47ejyhrokkbnqbl4i4y", + "time": 1679637204 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637252 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637252 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637288 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637288 + } + ], + "validationError": false + }, + { + "dpid": "22", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreid4d4543faobctzfxh53tfa7u2q7jwqll7g3o52b6ko2vxbq6gya4", + "time": 1679658768 + }, + { + "cid": "bafkreid4d4543faobctzfxh53tfa7u2q7jwqll7g3o52b6ko2vxbq6gya4", + "time": 1679658768 + } + ], + "validationError": false + }, + { + "dpid": "23", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifzp4vuudwvek33rcft2rd2szjrimey7yezcsbm2awkx2tjsunwwi", + "time": 1680567024 + }, + { + "cid": "bafkreifzp4vuudwvek33rcft2rd2szjrimey7yezcsbm2awkx2tjsunwwi", + "time": 1680567024 + } + ], + "validationError": false + }, + { + "dpid": "24", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicqcgfswelv7jvt3o5mirsrwbegst354jzl5znfhsysfi5kwa5oem", + "time": 1681191960 + }, + { + "cid": "bafkreicqcgfswelv7jvt3o5mirsrwbegst354jzl5znfhsysfi5kwa5oem", + "time": 1681191960 + } + ], + "validationError": false + }, + { + "dpid": "25", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiai7ekqchod7c7na6bsc5aeicugtqr2ai4jhdyjal4ukzzjdoxdoi", + "time": 1681495752 + }, + { + "cid": "bafkreiai7ekqchod7c7na6bsc5aeicugtqr2ai4jhdyjal4ukzzjdoxdoi", + "time": 1681495752 + } + ], + "validationError": false + }, + { + "dpid": "26", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiasg744hrz2h6tkkw4a2z55orh33v5rs2j62mx3arsuqxa5dppyzq", + "time": 1681497684 + }, + { + "cid": "bafkreiasg744hrz2h6tkkw4a2z55orh33v5rs2j62mx3arsuqxa5dppyzq", + "time": 1681497684 + }, + { + "cid": "bafkreicbh5ytfk7ohfa7tw44q5nmjkzmqseiesoskwcjntwc6apx7ifyyi", + "time": 1681497900 + }, + { + "cid": "bafkreicbh5ytfk7ohfa7tw44q5nmjkzmqseiesoskwcjntwc6apx7ifyyi", + "time": 1681497900 + } + ], + "validationError": false + }, + { + "dpid": "27", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiehj4xqrpk5m6sdemt5nv6ktb5uxp6ihmg3apdwiu6xhkjzlcmuka", + "time": 1681505184 + }, + { + "cid": "bafkreiehj4xqrpk5m6sdemt5nv6ktb5uxp6ihmg3apdwiu6xhkjzlcmuka", + "time": 1681505184 + } + ], + "validationError": false + }, + { + "dpid": "28", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihmuuks36pyt5quuvjbxkhyu6lhdf3sfbqvfii6j2gemwpu2uc67q", + "time": 1681506588 + }, + { + "cid": "bafkreihmuuks36pyt5quuvjbxkhyu6lhdf3sfbqvfii6j2gemwpu2uc67q", + "time": 1681506588 + } + ], + "validationError": false + }, + { + "dpid": "29", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigifwmh35byvn2yzg2vojm6r6qpjyoce6dfdsacmch336adgqmyee", + "time": 1681736556 + }, + { + "cid": "bafkreigifwmh35byvn2yzg2vojm6r6qpjyoce6dfdsacmch336adgqmyee", + "time": 1681736556 + }, + { + "cid": "bafkreicxifdkouaya7pzrj2upqft2c637t6awklqjsbd76dfog42hxvlqu", + "time": 1681736628 + }, + { + "cid": "bafkreicxifdkouaya7pzrj2upqft2c637t6awklqjsbd76dfog42hxvlqu", + "time": 1681736628 + } + ], + "validationError": false + }, + { + "dpid": "30", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidtjqvqyoq7ehafmy7vvhjlewgtxkxaqr7anwtwtgkzvlogmfwaey", + "time": 1681761420 + }, + { + "cid": "bafkreidtjqvqyoq7ehafmy7vvhjlewgtxkxaqr7anwtwtgkzvlogmfwaey", + "time": 1681761420 + }, + { + "cid": "bafkreif6imae7ikphst6f2opahy2bn4qnm3srzj4rmnpdhrqtykwr6c4yu", + "time": 1681762272 + }, + { + "cid": "bafkreif6imae7ikphst6f2opahy2bn4qnm3srzj4rmnpdhrqtykwr6c4yu", + "time": 1681762272 + } + ], + "validationError": false + }, + { + "dpid": "31", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiahcqh7zzoz27gzh2chwto2u5kabmf2vmca3xbmzrlmgoqucrmfky", + "time": 1681805808 + }, + { + "cid": "bafkreiahcqh7zzoz27gzh2chwto2u5kabmf2vmca3xbmzrlmgoqucrmfky", + "time": 1681805808 + } + ], + "validationError": false + }, + { + "dpid": "32", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaakpmpc5jr4bp3puzzpdjv5nh3maunzbaug2p335ngmdfsfekkxe", + "time": 1681830960 + }, + { + "cid": "bafkreiaakpmpc5jr4bp3puzzpdjv5nh3maunzbaug2p335ngmdfsfekkxe", + "time": 1681830960 + } + ], + "validationError": false + }, + { + "dpid": "33", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreic2zkjdknqf5kfelzzstfovdwuc2dolbaej7eduedn6md7rpfo27y", + "time": 1682014560 + }, + { + "cid": "bafkreic2zkjdknqf5kfelzzstfovdwuc2dolbaej7eduedn6md7rpfo27y", + "time": 1682014560 + } + ], + "validationError": false + }, + { + "dpid": "34", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibkbhhedb3yazc6rze6772ouoymv3yy5vqmilmwi6eq7yuw3n6tue", + "time": 1682144088 + }, + { + "cid": "bafkreibkbhhedb3yazc6rze6772ouoymv3yy5vqmilmwi6eq7yuw3n6tue", + "time": 1682144088 + } + ], + "validationError": false + }, + { + "dpid": "35", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreih4kylr5z5oppj6wprw2luiyngsn3xq324kfbiku4ehi42dess4oi", + "time": 1682534976 + }, + { + "cid": "bafkreih4kylr5z5oppj6wprw2luiyngsn3xq324kfbiku4ehi42dess4oi", + "time": 1682534976 + }, + { + "cid": "bafkreidasu577tdw76nprafzy7oa42nlr6gcyk45agx3tawrw3zyxu7mva", + "time": 1682746284 + }, + { + "cid": "bafkreidasu577tdw76nprafzy7oa42nlr6gcyk45agx3tawrw3zyxu7mva", + "time": 1682746284 + }, + { + "cid": "bafkreieaozkgywz6vonai3kmhr6cct5jjpeau3lhy2zrb2ft3dsnudaxym", + "time": 1682813004 + }, + { + "cid": "bafkreieaozkgywz6vonai3kmhr6cct5jjpeau3lhy2zrb2ft3dsnudaxym", + "time": 1682813004 + } + ], + "validationError": false + }, + { + "dpid": "36", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifc4so5xny7vpkj62oejlxlnh2zp6w76idbvx3mi2t5nkhxpbenbe", + "time": 1682670864 + }, + { + "cid": "bafkreifc4so5xny7vpkj62oejlxlnh2zp6w76idbvx3mi2t5nkhxpbenbe", + "time": 1682670864 + } + ], + "validationError": false + }, + { + "dpid": "37", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiadoa3b3hvlzpfliappjvhzoacqst2tnu5x7cjvhwcdjhplqakmmy", + "time": 1682793228 + }, + { + "cid": "bafkreiadoa3b3hvlzpfliappjvhzoacqst2tnu5x7cjvhwcdjhplqakmmy", + "time": 1682793228 + }, + { + "cid": "bafkreiad7vwyvhxpgy5i6azrynsnu5g2x5ef7iwjafbnnvukkbc7dvygru", + "time": 1682793408 + }, + { + "cid": "bafkreiad7vwyvhxpgy5i6azrynsnu5g2x5ef7iwjafbnnvukkbc7dvygru", + "time": 1682793408 + } + ], + "validationError": false + }, + { + "dpid": "38", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiagyoholq6ypx4pdby56vfzq7a44q3sn6esvho7wcf6m4eghpcjoa", + "time": 1682813880 + }, + { + "cid": "bafkreiagyoholq6ypx4pdby56vfzq7a44q3sn6esvho7wcf6m4eghpcjoa", + "time": 1682813880 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682814000 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682814000 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682822136 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682822136 + } + ], + "validationError": false + }, + { + "dpid": "39", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtewpmyizn2rvgbd7yqzirfcunu264zqwjc6qmf32wwtocp57eta", + "time": 1682820372 + }, + { + "cid": "bafkreibtewpmyizn2rvgbd7yqzirfcunu264zqwjc6qmf32wwtocp57eta", + "time": 1682820372 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682820648 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682820648 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682821080 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682821080 + }, + { + "cid": "bafkreiero2ggetbv2g5voe4yg7lr53cl7aocrcdbn5ndz754ani2c4xwye", + "time": 1682849124 + }, + { + "cid": "bafkreiero2ggetbv2g5voe4yg7lr53cl7aocrcdbn5ndz754ani2c4xwye", + "time": 1682849124 + } + ], + "validationError": false + }, + { + "dpid": "40", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821224 + }, + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821224 + }, + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821884 + }, + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821884 + } + ], + "validationError": false + }, + { + "dpid": "41", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihesv24wbwkhgjeplqi7lu2rm5d75o6es3krxbj4rfmhk3bcxavhe", + "time": 1682854224 + }, + { + "cid": "bafkreihesv24wbwkhgjeplqi7lu2rm5d75o6es3krxbj4rfmhk3bcxavhe", + "time": 1682854224 + }, + { + "cid": "bafkreifmd5ucm3ypfkph7klhghsgyvfinkrwxw6uuiwpdjoarmxotflwaa", + "time": 1682854344 + }, + { + "cid": "bafkreifmd5ucm3ypfkph7klhghsgyvfinkrwxw6uuiwpdjoarmxotflwaa", + "time": 1682854344 + } + ], + "validationError": false + }, + { + "dpid": "42", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie46ed23xpsfgxasdbhzq4zrni5v4dv3lbohasnqkgmohq4g6bjam", + "time": 1682856480 + }, + { + "cid": "bafkreie46ed23xpsfgxasdbhzq4zrni5v4dv3lbohasnqkgmohq4g6bjam", + "time": 1682856480 + } + ], + "validationError": false + }, + { + "dpid": "43", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigumcdo4dafutywplrgg7xgo6swf2qygljyzwktsafuhvednvpmhy", + "time": 1682951112 + }, + { + "cid": "bafkreigumcdo4dafutywplrgg7xgo6swf2qygljyzwktsafuhvednvpmhy", + "time": 1682951112 + } + ], + "validationError": false + }, + { + "dpid": "44", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihqpbdqrgnp6mebwfcqqt3izgreiw4zgiw42zmkezipmktv777itu", + "time": 1682962248 + }, + { + "cid": "bafkreihqpbdqrgnp6mebwfcqqt3izgreiw4zgiw42zmkezipmktv777itu", + "time": 1682962248 + } + ], + "validationError": false + }, + { + "dpid": "45", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihfrfianmcigzvnnetxkzwlcgza75dsah7ab5anx43phu3mke3uky", + "time": 1682993892 + }, + { + "cid": "bafkreihfrfianmcigzvnnetxkzwlcgza75dsah7ab5anx43phu3mke3uky", + "time": 1682993892 + } + ], + "validationError": false + }, + { + "dpid": "46", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia2nvcwknooiu6t6ywob4dhd6exb3aamogse4n7kkydybjaugdr6u", + "time": 1683053508 + }, + { + "cid": "bafkreia2nvcwknooiu6t6ywob4dhd6exb3aamogse4n7kkydybjaugdr6u", + "time": 1683053508 + }, + { + "cid": "bafkreih5koqw5nvxucidlihwfslknj674oeuroclit74rkaqpe4mq6xuka", + "time": 1683222132 + }, + { + "cid": "bafkreih5koqw5nvxucidlihwfslknj674oeuroclit74rkaqpe4mq6xuka", + "time": 1683222132 + }, + { + "cid": "bafkreif3d644utirvwvkmukcrhg64palp3r4xociwsn6b6o2hxmkdxalby", + "time": 1683227616 + }, + { + "cid": "bafkreif3d644utirvwvkmukcrhg64palp3r4xociwsn6b6o2hxmkdxalby", + "time": 1683227616 + }, + { + "cid": "bafkreibn3jhdlsdsonv25t7i2bwtrbkl3jzwjbnnwylpeih3jmmzdhsfmi", + "time": 1683298680 + }, + { + "cid": "bafkreibn3jhdlsdsonv25t7i2bwtrbkl3jzwjbnnwylpeih3jmmzdhsfmi", + "time": 1683298680 + }, + { + "cid": "bafkreiepot62powegf7tt73gyiz24facsdloywggattt2asz5y4eaqhkyi", + "time": 1683299940 + }, + { + "cid": "bafkreiepot62powegf7tt73gyiz24facsdloywggattt2asz5y4eaqhkyi", + "time": 1683299940 + }, + { + "cid": "bafkreihge5qw7sc3mqc4wkf4cgpv6udtvrgipfxwyph7dhlyu6bkkt7tfq", + "time": 1705420740 + }, + { + "cid": "bafkreihge5qw7sc3mqc4wkf4cgpv6udtvrgipfxwyph7dhlyu6bkkt7tfq", + "time": 1705420740 + } + ], + "validationError": false + }, + { + "dpid": "47", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia7orsrr4pwxe5m2gnklknpc25kjs7gnzemofki3aeh6ydh4hkfju", + "time": 1683222948 + }, + { + "cid": "bafkreia7orsrr4pwxe5m2gnklknpc25kjs7gnzemofki3aeh6ydh4hkfju", + "time": 1683222948 + } + ], + "validationError": false + }, + { + "dpid": "48", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieahbi5tzb2od7nb2j5up4ooiglvh2lty2bgcrwjc3km7fnsplaxu", + "time": 1683232692 + }, + { + "cid": "bafkreieahbi5tzb2od7nb2j5up4ooiglvh2lty2bgcrwjc3km7fnsplaxu", + "time": 1683232692 + } + ], + "validationError": false + }, + { + "dpid": "49", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiet6onaozwmqyflpbjsa7f6f5jkhou5n3vxxkxmkgalhnr54bzftu", + "time": 1683236460 + }, + { + "cid": "bafkreiet6onaozwmqyflpbjsa7f6f5jkhou5n3vxxkxmkgalhnr54bzftu", + "time": 1683236460 + }, + { + "cid": "bafkreibp3hplo3b2hfetbrargv2gv2dkx3kfqfsqbxhkuved2k2nebxcpa", + "time": 1683236760 + }, + { + "cid": "bafkreibp3hplo3b2hfetbrargv2gv2dkx3kfqfsqbxhkuved2k2nebxcpa", + "time": 1683236760 + }, + { + "cid": "bafkreigym3lzf2ruzd3r23mflxjzafqfxoi5bncru3t4ky35vfaubbke34", + "time": 1683236760 + }, + { + "cid": "bafkreigym3lzf2ruzd3r23mflxjzafqfxoi5bncru3t4ky35vfaubbke34", + "time": 1683236760 + }, + { + "cid": "bafkreife4uk2mkecur54sq774ybtrka5l4gd5777j5cjjscfmx4vcqnfbm", + "time": 1683237288 + }, + { + "cid": "bafkreife4uk2mkecur54sq774ybtrka5l4gd5777j5cjjscfmx4vcqnfbm", + "time": 1683237288 + } + ], + "validationError": false + }, + { + "dpid": "50", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibroag6m5tps4srrtdxbfq74sskvpfu4sbhadhkh3vfonjrlmsvda", + "time": 1683886968 + }, + { + "cid": "bafkreibroag6m5tps4srrtdxbfq74sskvpfu4sbhadhkh3vfonjrlmsvda", + "time": 1683886968 + } + ], + "validationError": false + }, + { + "dpid": "51", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiheezwrynuxo6gnjd2pmahkcw3wstooxs6fvaflpjouewmh4qi3aa", + "time": 1683930000 + }, + { + "cid": "bafkreiheezwrynuxo6gnjd2pmahkcw3wstooxs6fvaflpjouewmh4qi3aa", + "time": 1683930000 + }, + { + "cid": "bafkreiasjo5wzkkk2s56tvdkmbe56vj4j7gyq345vnqpwvnvwozzhtkxfq", + "time": 1683931428 + }, + { + "cid": "bafkreiasjo5wzkkk2s56tvdkmbe56vj4j7gyq345vnqpwvnvwozzhtkxfq", + "time": 1683931428 + } + ], + "validationError": false + }, + { + "dpid": "52", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicxw5tzwajvwa757ihut3hvlgnfbpu7fa4oxfvvlssu4rikfrtmv4", + "time": 1684412244 + }, + { + "cid": "bafkreicxw5tzwajvwa757ihut3hvlgnfbpu7fa4oxfvvlssu4rikfrtmv4", + "time": 1684412244 + } + ], + "validationError": false + }, + { + "dpid": "53", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia7yjdhq6tdxjtwyr4ajfhxypq3jxbo5augryzzeos7cqrbyy6jmi", + "time": 1684862784 + }, + { + "cid": "bafkreia7yjdhq6tdxjtwyr4ajfhxypq3jxbo5augryzzeos7cqrbyy6jmi", + "time": 1684862784 + }, + { + "cid": "bafkreifutouvscu3pbsaabgxdxqfd6zaphkcuei6i3fibdeefmrh4oujby", + "time": 1686612108 + }, + { + "cid": "bafkreifutouvscu3pbsaabgxdxqfd6zaphkcuei6i3fibdeefmrh4oujby", + "time": 1686612108 + } + ], + "validationError": false + }, + { + "dpid": "54", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigtfrsogce5ixgj4dvjgvj2qgjsujs5g4sa64svziiyz6j2bajise", + "time": 1685098464 + }, + { + "cid": "bafkreigtfrsogce5ixgj4dvjgvj2qgjsujs5g4sa64svziiyz6j2bajise", + "time": 1685098464 + }, + { + "cid": "bafkreihocw2lexz7nz4sfwmy576guhbecxnzq4wfltnx5twqn2clng3ewu", + "time": 1685098776 + }, + { + "cid": "bafkreihocw2lexz7nz4sfwmy576guhbecxnzq4wfltnx5twqn2clng3ewu", + "time": 1685098776 + } + ], + "validationError": false + }, + { + "dpid": "55", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicup2qewrwovkkgk5bun4vpws7cbq3qnv2rbt7truyw54owvtwovm", + "time": 1685442360 + }, + { + "cid": "bafkreicup2qewrwovkkgk5bun4vpws7cbq3qnv2rbt7truyw54owvtwovm", + "time": 1685442360 + } + ], + "validationError": false + }, + { + "dpid": "56", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieis5ac2evezkciy26fvswybmyyarfnrlvyh7p5acvbhcsceayorq", + "time": 1685444172 + }, + { + "cid": "bafkreieis5ac2evezkciy26fvswybmyyarfnrlvyh7p5acvbhcsceayorq", + "time": 1685444172 + }, + { + "cid": "bafkreid6ibvbiblu6vviuc3l6ivmpmpdbj2rzt625capmi4igns2r7k4ue", + "time": 1685448060 + }, + { + "cid": "bafkreid6ibvbiblu6vviuc3l6ivmpmpdbj2rzt625capmi4igns2r7k4ue", + "time": 1685448060 + } + ], + "validationError": false + }, + { + "dpid": "57", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaulqrzufg3qnw55rwzqtn5h2cvsawdunrfwt4j32ywt6oswi5bfm", + "time": 1685525952 + }, + { + "cid": "bafkreiaulqrzufg3qnw55rwzqtn5h2cvsawdunrfwt4j32ywt6oswi5bfm", + "time": 1685525952 + } + ], + "validationError": false + }, + { + "dpid": "58", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidlxqbem5m3kgtntq6243vujhuyvt2s72ry2k5uy4f6hmjwbezdje", + "time": 1685526132 + }, + { + "cid": "bafkreidlxqbem5m3kgtntq6243vujhuyvt2s72ry2k5uy4f6hmjwbezdje", + "time": 1685526132 + }, + { + "cid": "bafkreib2gln7ztcpt6z7q7yo6isznl6lam4zv74hwslwhplh6g55re26lm", + "time": 1685536224 + }, + { + "cid": "bafkreib2gln7ztcpt6z7q7yo6isznl6lam4zv74hwslwhplh6g55re26lm", + "time": 1685536224 + } + ], + "validationError": false + }, + { + "dpid": "59", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigj2svt7njv2nxznzm42pisbjgpfjzhoorlcsryjlx5coa2klssku", + "time": 1685613060 + }, + { + "cid": "bafkreigvuao6ogwtnr2oknvxl3a5mtulhats7dqsiuturbxnnablevorai", + "time": 1685613240 + }, + { + "cid": "bafkreigvuao6ogwtnr2oknvxl3a5mtulhats7dqsiuturbxnnablevorai", + "time": 1685613240 + } + ], + "validationError": false + }, + { + "dpid": "60", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiefsjhlwr6bcq4nscdoz2q2tkca5i7ocxgtn5nxggkf2lr5a2z2lq", + "time": 1685613216 + }, + { + "cid": "bafkreifmohd57nd6xbcjrc3b6dxgpycgijleopks7hrmza4t23dvqxd2au", + "time": 1685613708 + } + ], + "validationError": false + }, + { + "dpid": "61", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreid5vwbe6ri74rgtdevbjznreexoedsocftjqgpopx3bih656jwzni", + "time": 1685614104 + }, + { + "cid": "bafkreid5vwbe6ri74rgtdevbjznreexoedsocftjqgpopx3bih656jwzni", + "time": 1685614104 + } + ], + "validationError": false + }, + { + "dpid": "62", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiapjbbsrowag6txt3wuilla2vp6dhhijkylklmvdzc4es3qb27buq", + "time": 1685615388 + }, + { + "cid": "bafkreiapjbbsrowag6txt3wuilla2vp6dhhijkylklmvdzc4es3qb27buq", + "time": 1685615388 + } + ], + "validationError": false + }, + { + "dpid": "63", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicjmhgi5sbjvo2i3nzwfkwfmahgipbyq6iasekibgqpl75cdiqdsi", + "time": 1685615724 + } + ], + "validationError": false + }, + { + "dpid": "64", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib2rkswbatx7qqcnymxcajqrgrywfzlsiischsrfowhbd5vjfskfi", + "time": 1685719428 + } + ], + "validationError": false + }, + { + "dpid": "65", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifdylfaiep4lc4544mow5aiq4vg37buebiybfx5wyznfi4pov6qri", + "time": 1686220584 + } + ], + "validationError": false + }, + { + "dpid": "66", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibelil5fgqul2o3chxv7g7xmdqkv2krqkv6r6mdbiw72vcqp4wxky", + "time": 1687805292 + }, + { + "cid": "bafkreiefvtk6gcvlxq3hw3lkxcjjy5aqkaxyu4swucs2wd3imjhi2yfdpm", + "time": 1687805484 + } + ], + "validationError": false + }, + { + "dpid": "67", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiazlufpwemnsbzscuycou7gi5m7t2p4yxbxvozkvxex47uczuokba", + "time": 1687807524 + }, + { + "cid": "bafkreiazlufpwemnsbzscuycou7gi5m7t2p4yxbxvozkvxex47uczuokba", + "time": 1687807524 + }, + { + "cid": "bafkreidupix2c3fizisuv2z6tluypvssf6solprgnmev6ul6vp6dprwop4", + "time": 1687808232 + }, + { + "cid": "bafkreidupix2c3fizisuv2z6tluypvssf6solprgnmev6ul6vp6dprwop4", + "time": 1687808232 + } + ], + "validationError": false + }, + { + "dpid": "68", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihakt3w53hwvneg2o3e4xysgegwk5j5rs6mug6ywlwb2bmprm4wzy", + "time": 1687812132 + }, + { + "cid": "bafkreihakt3w53hwvneg2o3e4xysgegwk5j5rs6mug6ywlwb2bmprm4wzy", + "time": 1687812132 + } + ], + "validationError": false + }, + { + "dpid": "69", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigfelcudmytsq2s2j4wcy3j7tsyatpnffpcthf6zz7q5wa4snafdm", + "time": 1687812804 + }, + { + "cid": "bafkreigfelcudmytsq2s2j4wcy3j7tsyatpnffpcthf6zz7q5wa4snafdm", + "time": 1687812804 + } + ], + "validationError": false + }, + { + "dpid": "70", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicandi5eh3gwuxwlq6k6fpeuurnbpbx33q3ijndg44go2p5ekni3y", + "time": 1687817568 + }, + { + "cid": "bafkreicandi5eh3gwuxwlq6k6fpeuurnbpbx33q3ijndg44go2p5ekni3y", + "time": 1687817568 + } + ], + "validationError": false + }, + { + "dpid": "71", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibb5g5ujmxeve56ktnuolb7rrncmbgedtrjemeshn6rxbrhn4uepe", + "time": 1688024628 + }, + { + "cid": "bafkreibb5g5ujmxeve56ktnuolb7rrncmbgedtrjemeshn6rxbrhn4uepe", + "time": 1688024628 + }, + { + "cid": "bafkreiddtartrk6isrs3j5ltx6nkcv437jsu62vc6ew3cwvxk3msebzg5e", + "time": 1688024676 + }, + { + "cid": "bafkreiddtartrk6isrs3j5ltx6nkcv437jsu62vc6ew3cwvxk3msebzg5e", + "time": 1688024676 + } + ], + "validationError": false + }, + { + "dpid": "72", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicj4c44gghcoy2ztvwe32fmbv7cuvty2hv2y4ndrnd6ghrl3ciaea", + "time": 1688552688 + }, + { + "cid": "bafkreicj4c44gghcoy2ztvwe32fmbv7cuvty2hv2y4ndrnd6ghrl3ciaea", + "time": 1688552688 + } + ], + "validationError": false + }, + { + "dpid": "73", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1688720808 + }, + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1688720808 + }, + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1689009768 + }, + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1689009768 + } + ], + "validationError": false + }, + { + "dpid": "74", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifqxkjzypbtz7snjp3ghjrv56bd5umihchpwfppnoz67tcmhuq7wi", + "time": 1689041640 + }, + { + "cid": "bafkreifqxkjzypbtz7snjp3ghjrv56bd5umihchpwfppnoz67tcmhuq7wi", + "time": 1689041640 + } + ], + "validationError": false + }, + { + "dpid": "75", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtsll3aq2bynvlxnqh6nxafzdm4cpiovr3bcncbkzjcy32xalp7i", + "time": 1689294216 + }, + { + "cid": "bafkreibtsll3aq2bynvlxnqh6nxafzdm4cpiovr3bcncbkzjcy32xalp7i", + "time": 1689294216 + } + ], + "validationError": false + }, + { + "dpid": "76", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiatjdpouudloenzdzb7d3e5pogruvwbhurcnm2g5h64jmkpk2uebe", + "time": 1689518988 + }, + { + "cid": "bafkreiatjdpouudloenzdzb7d3e5pogruvwbhurcnm2g5h64jmkpk2uebe", + "time": 1689518988 + }, + { + "cid": "bafkreigg3xk6ojueylnninvwsrw62nqpt7pyjnz6thaipbydb5ltclctly", + "time": 1692182952 + }, + { + "cid": "bafkreigg3xk6ojueylnninvwsrw62nqpt7pyjnz6thaipbydb5ltclctly", + "time": 1692182952 + }, + { + "cid": "bafkreicrggm7jpxgaj2vgydvefuravrs2bh4emlt6eadx3zsbubtpulmcq", + "time": 1692330000 + }, + { + "cid": "bafkreicrggm7jpxgaj2vgydvefuravrs2bh4emlt6eadx3zsbubtpulmcq", + "time": 1692330000 + }, + { + "cid": "bafkreifgfzjltrvcz3qixyjkiubgms2r3figm37euwxzbi6pvej2me6tje", + "time": 1701997248 + }, + { + "cid": "bafkreifgfzjltrvcz3qixyjkiubgms2r3figm37euwxzbi6pvej2me6tje", + "time": 1701997248 + }, + { + "cid": "bafkreic4wiuatha4wclfbwft4vaeeqifrbb2f3tqm4eoajommogudbvswu", + "time": 1702000140 + }, + { + "cid": "bafkreic4wiuatha4wclfbwft4vaeeqifrbb2f3tqm4eoajommogudbvswu", + "time": 1702000140 + }, + { + "cid": "bafkreicraffpobz3k5rzdmigl5tzklihwuim4kwe7xl5uulmfrkr4uvm2u", + "time": 1702045680 + }, + { + "cid": "bafkreicraffpobz3k5rzdmigl5tzklihwuim4kwe7xl5uulmfrkr4uvm2u", + "time": 1702045680 + }, + { + "cid": "bafkreidtkraxowlx26oz5g6qyfuawhx5nroil4a4mo6ywa7knfel7ft2dq", + "time": 1702045944 + }, + { + "cid": "bafkreidtkraxowlx26oz5g6qyfuawhx5nroil4a4mo6ywa7knfel7ft2dq", + "time": 1702045944 + } + ], + "validationError": false + }, + { + "dpid": "77", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaqxrcrai2j2lpk2moare5abq4vtyhxk6m5jxo5fbqkrsy24kdm7q", + "time": 1691492520 + }, + { + "cid": "bafkreiaqxrcrai2j2lpk2moare5abq4vtyhxk6m5jxo5fbqkrsy24kdm7q", + "time": 1691492520 + }, + { + "cid": "bafkreihjozked2lgpgtdcuvzejanhnm65sccwglgblxfdg3cwi72vlrtvq", + "time": 1691493636 + }, + { + "cid": "bafkreihjozked2lgpgtdcuvzejanhnm65sccwglgblxfdg3cwi72vlrtvq", + "time": 1691493636 + }, + { + "cid": "bafkreieodz3e4kzbnlg4nka5pwrgafwuuemfuejxqa5dpdaqlgt6bjs7fm", + "time": 1691496348 + }, + { + "cid": "bafkreieodz3e4kzbnlg4nka5pwrgafwuuemfuejxqa5dpdaqlgt6bjs7fm", + "time": 1691496348 + } + ], + "validationError": false + }, + { + "dpid": "78", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifixmk6tierh6qompfouk63r6clg5jbeuvwherrxacq4uoedk4o5q", + "time": 1691501736 + }, + { + "cid": "bafkreifixmk6tierh6qompfouk63r6clg5jbeuvwherrxacq4uoedk4o5q", + "time": 1691501736 + } + ], + "validationError": false + }, + { + "dpid": "79", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtuuiejhyxu4zr2od34biucedhlmqdmqem6v2ruqu6ov2kgsfnfa", + "time": 1692472464 + }, + { + "cid": "bafkreibtuuiejhyxu4zr2od34biucedhlmqdmqem6v2ruqu6ov2kgsfnfa", + "time": 1692472464 + } + ], + "validationError": false + }, + { + "dpid": "80", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiawwe6os5lxye3hojdmwgcdt4nrs7xwfqy3p3vuv7xolhbnc2nqaq", + "time": 1693245804 + }, + { + "cid": "bafkreiawwe6os5lxye3hojdmwgcdt4nrs7xwfqy3p3vuv7xolhbnc2nqaq", + "time": 1693245804 + }, + { + "cid": "bafkreichlzplxpphzyoo3mnjg6tm2e4uplpm4d2q667a6dbz6xhctvktai", + "time": 1693246872 + }, + { + "cid": "bafkreichlzplxpphzyoo3mnjg6tm2e4uplpm4d2q667a6dbz6xhctvktai", + "time": 1693246872 + } + ], + "validationError": false + }, + { + "dpid": "81", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieefydw5dajtfgz5xqecgyyqxt7kzzyibihy4dvnrtwakaahkn34y", + "time": 1693246440 + }, + { + "cid": "bafkreieefydw5dajtfgz5xqecgyyqxt7kzzyibihy4dvnrtwakaahkn34y", + "time": 1693246440 + }, + { + "cid": "bafkreicpdjfhoxg3gyc2xn63ppbxf7a7wvehkl4h34dapqeqekfetwunme", + "time": 1700147784 + }, + { + "cid": "bafkreicpdjfhoxg3gyc2xn63ppbxf7a7wvehkl4h34dapqeqekfetwunme", + "time": 1700147784 + } + ], + "validationError": false + }, + { + "dpid": "82", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicmvrritjqe4eatfkix3k6kgxz7oxlxengyfhg7rkubpagmxymiqa", + "time": 1693247148 + }, + { + "cid": "bafkreicmvrritjqe4eatfkix3k6kgxz7oxlxengyfhg7rkubpagmxymiqa", + "time": 1693247148 + } + ], + "validationError": false + }, + { + "dpid": "83", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia6ccnzt76b23xkq7slvzxgebltmlkmvcbvr77nzfyca7wpq6qkru", + "time": 1693247616 + }, + { + "cid": "bafkreia6ccnzt76b23xkq7slvzxgebltmlkmvcbvr77nzfyca7wpq6qkru", + "time": 1693247616 + }, + { + "cid": "bafkreidrb3cry4mh6fcik54rotatfnz2mapg3olcsxqpodgdbecrh5iu54", + "time": 1700147268 + }, + { + "cid": "bafkreidrb3cry4mh6fcik54rotatfnz2mapg3olcsxqpodgdbecrh5iu54", + "time": 1700147268 + } + ], + "validationError": false + }, + { + "dpid": "84", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibgfpmyizfiu6mpmdcn6aqvqrli72za72ccrxsim24nhtfv3cqb7m", + "time": 1693248192 + }, + { + "cid": "bafkreibgfpmyizfiu6mpmdcn6aqvqrli72za72ccrxsim24nhtfv3cqb7m", + "time": 1693248192 + }, + { + "cid": "bafkreidfksyvtp5vjzoczjupn6h6h72dcr2p2rm63l7l5qwn6sq6d2nyjy", + "time": 1700146980 + }, + { + "cid": "bafkreidfksyvtp5vjzoczjupn6h6h72dcr2p2rm63l7l5qwn6sq6d2nyjy", + "time": 1700146980 + } + ], + "validationError": false + }, + { + "dpid": "85", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreichgcyenem343rn3cgpyymyicdgoe7vgkev7z7bccskncaux7rxt4", + "time": 1693248672 + }, + { + "cid": "bafkreichgcyenem343rn3cgpyymyicdgoe7vgkev7z7bccskncaux7rxt4", + "time": 1693248672 + }, + { + "cid": "bafkreiejwrzg3vtvrvxm75dzgmk3736v4wrhl6uin64hzq76oekbkqi2ci", + "time": 1700146392 + }, + { + "cid": "bafkreiejwrzg3vtvrvxm75dzgmk3736v4wrhl6uin64hzq76oekbkqi2ci", + "time": 1700146392 + } + ], + "validationError": false + }, + { + "dpid": "86", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihxqrtbvhxg3w2nu3ahpcu2it6qvnmca4xb72vq4w27er3v4rsjgi", + "time": 1693249560 + }, + { + "cid": "bafkreihxqrtbvhxg3w2nu3ahpcu2it6qvnmca4xb72vq4w27er3v4rsjgi", + "time": 1693249560 + }, + { + "cid": "bafkreidlqc6jfns3ftpxoopx7etmfqp75xwoptd6es36xir2fl4nkvmx6i", + "time": 1700145552 + }, + { + "cid": "bafkreidlqc6jfns3ftpxoopx7etmfqp75xwoptd6es36xir2fl4nkvmx6i", + "time": 1700145552 + } + ], + "validationError": false + }, + { + "dpid": "87", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidlb227q7gvv622itmewvsdli726msbjgtsoufaepsaajrc66d27u", + "time": 1693249908 + }, + { + "cid": "bafkreidlb227q7gvv622itmewvsdli726msbjgtsoufaepsaajrc66d27u", + "time": 1693249908 + }, + { + "cid": "bafkreibaiviks6ed4yuwaidz4zzerlhmlkbdcxucky74ah4nu37cm443lm", + "time": 1700146176 + }, + { + "cid": "bafkreibaiviks6ed4yuwaidz4zzerlhmlkbdcxucky74ah4nu37cm443lm", + "time": 1700146176 + } + ], + "validationError": false + }, + { + "dpid": "88", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibdpyr6vlsifgi3cebv7ip26ynplllfzpekxz4zfj7xna7uolpjgy", + "time": 1693250244 + }, + { + "cid": "bafkreibdpyr6vlsifgi3cebv7ip26ynplllfzpekxz4zfj7xna7uolpjgy", + "time": 1693250244 + }, + { + "cid": "bafkreif7e3nkqyrpa6pkhlnv7sdrwkgyct7fhgzqsteo457kpa46wuflhe", + "time": 1700146776 + }, + { + "cid": "bafkreif7e3nkqyrpa6pkhlnv7sdrwkgyct7fhgzqsteo457kpa46wuflhe", + "time": 1700146776 + } + ], + "validationError": false + }, + { + "dpid": "89", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidp3ed42l6cizgero5c7zfmxpmwp5hkc4tx6uz7mgioxsep4wb6rm", + "time": 1693251900 + }, + { + "cid": "bafkreidp3ed42l6cizgero5c7zfmxpmwp5hkc4tx6uz7mgioxsep4wb6rm", + "time": 1693251900 + } + ], + "validationError": false + }, + { + "dpid": "90", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaw34rnu36p2ccawj3gopyxgl64qj3dc3ip3pzvfh5anzrvmu4z5u", + "time": 1694114940 + }, + { + "cid": "bafkreiaw34rnu36p2ccawj3gopyxgl64qj3dc3ip3pzvfh5anzrvmu4z5u", + "time": 1694114940 + }, + { + "cid": "bafkreidk7ihar3swjjf46wtttjl52govxa256725urm5upcefu4wfvnxpm", + "time": 1694187648 + }, + { + "cid": "bafkreidk7ihar3swjjf46wtttjl52govxa256725urm5upcefu4wfvnxpm", + "time": 1694187648 + }, + { + "cid": "bafkreic6n2x6jlvss4iepnkkb4o4wre4nezbbff7kw46mz2egtzxast5xe", + "time": 1695653376 + }, + { + "cid": "bafkreic6n2x6jlvss4iepnkkb4o4wre4nezbbff7kw46mz2egtzxast5xe", + "time": 1695653376 + } + ], + "validationError": false + }, + { + "dpid": "91", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigpcnierfxljhffgj4d6oyuwec4pcbkbjys6goaggw75rcobd6vnu", + "time": 1694197140 + }, + { + "cid": "bafkreigpcnierfxljhffgj4d6oyuwec4pcbkbjys6goaggw75rcobd6vnu", + "time": 1694197140 + }, + { + "cid": "bafkreidtiuwpwyewgjp3r5a7shvzgir7pvbeguxlv6zebpdbxrraialhxu", + "time": 1695653220 + }, + { + "cid": "bafkreidtiuwpwyewgjp3r5a7shvzgir7pvbeguxlv6zebpdbxrraialhxu", + "time": 1695653220 + } + ], + "validationError": false + }, + { + "dpid": "92", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicqezpklsjtuszjnsekc2dcyadgtbcfouhlc57vclrwco45gzbul4", + "time": 1695218412 + }, + { + "cid": "bafkreicqezpklsjtuszjnsekc2dcyadgtbcfouhlc57vclrwco45gzbul4", + "time": 1695218412 + } + ], + "validationError": false + }, + { + "dpid": "93", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie2p56t2d3i762v3bow3jweile6fmryt2qlcjq3cmkz7kpqtaic2a", + "time": 1695246144 + }, + { + "cid": "bafkreie2p56t2d3i762v3bow3jweile6fmryt2qlcjq3cmkz7kpqtaic2a", + "time": 1695246144 + } + ], + "validationError": false + }, + { + "dpid": "94", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaqnt5raa6b4ujpkgd4veg73rtp5csn6fwxrckbhq4mkrl7ws63dy", + "time": 1695246324 + }, + { + "cid": "bafkreiaqnt5raa6b4ujpkgd4veg73rtp5csn6fwxrckbhq4mkrl7ws63dy", + "time": 1695246324 + } + ], + "validationError": false + }, + { + "dpid": "95", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreied6xbi65zwpzqiiaqnhq3cdq42c7yqrx6sd32ncv6avkovcb6f6y", + "time": 1695324696 + }, + { + "cid": "bafkreied6xbi65zwpzqiiaqnhq3cdq42c7yqrx6sd32ncv6avkovcb6f6y", + "time": 1695324696 + } + ], + "validationError": false + }, + { + "dpid": "96", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigurq54verb4sihjuonnx2pbo77lbjlviol2jfjxxgyzzko7o42ka", + "time": 1695816576 + }, + { + "cid": "bafkreigurq54verb4sihjuonnx2pbo77lbjlviol2jfjxxgyzzko7o42ka", + "time": 1695816576 + } + ], + "validationError": false + }, + { + "dpid": "97", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696295376 + }, + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696295376 + }, + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696296012 + }, + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696296012 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299000 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299000 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299600 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299600 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299876 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299876 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299912 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299912 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299996 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299996 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440036 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440036 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440996 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440996 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459560 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459560 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459584 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459584 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466724 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466724 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466820 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466820 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466964 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466964 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696468416 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696468416 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696479552 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696479552 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480608 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480608 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480764 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480764 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480884 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480884 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696481172 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696481172 + }, + { + "cid": "bafkreiciddswj3e6ho5of7x7a7liaqehnwqeg35w3cp3l5knv6k2tdlswa", + "time": 1696594740 + }, + { + "cid": "bafkreiciddswj3e6ho5of7x7a7liaqehnwqeg35w3cp3l5knv6k2tdlswa", + "time": 1696594740 + } + ], + "validationError": false + }, + { + "dpid": "98", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicsn4qia64pf7eim7sjggvmnggqadmfmrrcm5gecbpfdzxwzlk7i4", + "time": 1696303560 + }, + { + "cid": "bafkreicsn4qia64pf7eim7sjggvmnggqadmfmrrcm5gecbpfdzxwzlk7i4", + "time": 1696303944 + }, + { + "cid": "bafkreicsn4qia64pf7eim7sjggvmnggqadmfmrrcm5gecbpfdzxwzlk7i4", + "time": 1696303944 + } + ], + "validationError": false + }, + { + "dpid": "99", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696336296 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696336296 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696469268 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696469268 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536756 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536756 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536804 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536828 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536888 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536912 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536912 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536936 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536936 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536972 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536972 + } + ], + "validationError": false + }, + { + "dpid": "100", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib2fs7g7yawpqeyjzatsv3bip5p6xr27pnblzjase3zyr4ixtbu6a", + "time": 1696506528 + }, + { + "cid": "bafkreib2fs7g7yawpqeyjzatsv3bip5p6xr27pnblzjase3zyr4ixtbu6a", + "time": 1696506528 + }, + { + "cid": "bafkreihirj6fsasmvqmzngnyqitl6fpt3ljapgwx7dpfelgvruqsu7smw4", + "time": 1696507296 + }, + { + "cid": "bafkreihirj6fsasmvqmzngnyqitl6fpt3ljapgwx7dpfelgvruqsu7smw4", + "time": 1696507296 + }, + { + "cid": "bafkreid5osij2amlc67sm7uzqp22j7y3dn6lseyuy72oh64z5rqoh5qity", + "time": 1696840824 + }, + { + "cid": "bafkreid5osij2amlc67sm7uzqp22j7y3dn6lseyuy72oh64z5rqoh5qity", + "time": 1696840824 + } + ], + "validationError": false + }, + { + "dpid": "101", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaoby2dmz4sljyhxsizjj2yd2jvbzz2vsywii3vp6xqi4rjefxl4q", + "time": 1696589760 + }, + { + "cid": "bafkreiaoby2dmz4sljyhxsizjj2yd2jvbzz2vsywii3vp6xqi4rjefxl4q", + "time": 1696589760 + } + ], + "validationError": false + }, + { + "dpid": "102", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiceiefmvnwozgtpvvwv5exwsdxm36yl5ovunmcnjx5kjtcqvm6lwe", + "time": 1696605300 + }, + { + "cid": "bafkreiceiefmvnwozgtpvvwv5exwsdxm36yl5ovunmcnjx5kjtcqvm6lwe", + "time": 1696605300 + } + ], + "validationError": false + }, + { + "dpid": "103", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif6p22atw6ekbaxkrnfmetfdqtnhldaqw6qtqiqc7lqbus6aizru4", + "time": 1696841976 + }, + { + "cid": "bafkreif6p22atw6ekbaxkrnfmetfdqtnhldaqw6qtqiqc7lqbus6aizru4", + "time": 1696841976 + } + ], + "validationError": false + }, + { + "dpid": "104", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiautwruptenrd4xbq5actpbmirrxprmnnxyxf37ixblmcynebjaqq", + "time": 1696842144 + }, + { + "cid": "bafkreiautwruptenrd4xbq5actpbmirrxprmnnxyxf37ixblmcynebjaqq", + "time": 1696842144 + }, + { + "cid": "bafkreie37zoipwpgqrupcmxfnhqfqpztumhcurzb27rfasa5ipao32w3ia", + "time": 1697792352 + }, + { + "cid": "bafkreie37zoipwpgqrupcmxfnhqfqpztumhcurzb27rfasa5ipao32w3ia", + "time": 1697792352 + }, + { + "cid": "bafkreiebcm7batu7zyp4aw6pzisbkldtlqsghh5jhczhkh63lxgjxp5wte", + "time": 1698779592 + }, + { + "cid": "bafkreiebcm7batu7zyp4aw6pzisbkldtlqsghh5jhczhkh63lxgjxp5wte", + "time": 1698779592 + } + ], + "validationError": false + }, + { + "dpid": "105", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1696842444 + }, + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1696842444 + }, + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1698911760 + }, + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1698911760 + } + ], + "validationError": false + }, + { + "dpid": "106", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibbbm7623bsdoftewbedqd3peny6zhqpt6tjgx67ouf6hhvbv2idi", + "time": 1696941732 + }, + { + "cid": "bafkreibbbm7623bsdoftewbedqd3peny6zhqpt6tjgx67ouf6hhvbv2idi", + "time": 1696941732 + }, + { + "cid": "bafkreihemsbpld4yuzrn4ckrlriyq5ortlkycxx74ayfugnoce7oetsmam", + "time": 1696942104 + }, + { + "cid": "bafkreihemsbpld4yuzrn4ckrlriyq5ortlkycxx74ayfugnoce7oetsmam", + "time": 1696942104 + }, + { + "cid": "bafkreic4gpc3k5mrttk57w6k5fvtgvubvh6xfwgmubecx53b55xsxoavxe", + "time": 1696944228 + }, + { + "cid": "bafkreic4gpc3k5mrttk57w6k5fvtgvubvh6xfwgmubecx53b55xsxoavxe", + "time": 1696944228 + }, + { + "cid": "bafkreickteh2tt3oy43o42ikwei6tppghmtbkockk22a3niovi57ugor7q", + "time": 1696961232 + }, + { + "cid": "bafkreickteh2tt3oy43o42ikwei6tppghmtbkockk22a3niovi57ugor7q", + "time": 1696961232 + } + ], + "validationError": false + }, + { + "dpid": "107", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicgst5gqckb4bzduzxqhn2v5an2xjnmhv6qwscwtn3gjhuplpv3jm", + "time": 1697040396 + }, + { + "cid": "bafkreicgst5gqckb4bzduzxqhn2v5an2xjnmhv6qwscwtn3gjhuplpv3jm", + "time": 1697040396 + } + ], + "validationError": false + }, + { + "dpid": "108", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifzh36eve7dsmbebnvxhpalxdgcjcur7anxllzyfwnmetlsvq2f54", + "time": 1697792640 + }, + { + "cid": "bafkreifzh36eve7dsmbebnvxhpalxdgcjcur7anxllzyfwnmetlsvq2f54", + "time": 1697792640 + } + ], + "validationError": false + }, + { + "dpid": "109", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibiziudxe62de7g443yl453tpnky25ujrcdhuaudtwq7hxrrr6q3m", + "time": 1698054684 + }, + { + "cid": "bafkreibiziudxe62de7g443yl453tpnky25ujrcdhuaudtwq7hxrrr6q3m", + "time": 1698054684 + } + ], + "validationError": false + }, + { + "dpid": "110", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698079308 + }, + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698079308 + }, + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698323460 + }, + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698323460 + } + ], + "validationError": false + }, + { + "dpid": "111", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiejskdyqkcsnvcl6njkivjvptts656x3qvr64nsjdnx6pcn6bdht4", + "time": 1698177444 + }, + { + "cid": "bafkreiejskdyqkcsnvcl6njkivjvptts656x3qvr64nsjdnx6pcn6bdht4", + "time": 1698177444 + }, + { + "cid": "bafkreialaclllbtsaxzdhbbut4mk57xh4r7bsj56cb44fockdxokcznbk4", + "time": 1698178344 + }, + { + "cid": "bafkreialaclllbtsaxzdhbbut4mk57xh4r7bsj56cb44fockdxokcznbk4", + "time": 1698178344 + } + ], + "validationError": false + }, + { + "dpid": "112", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreictzmcsbe3bkmb7vyludvy7q37brvsw6q7xayblyn45r23n7ru224", + "time": 1698747720 + }, + { + "cid": "bafkreictzmcsbe3bkmb7vyludvy7q37brvsw6q7xayblyn45r23n7ru224", + "time": 1698747720 + }, + { + "cid": "bafkreifpbperacf57typaumiauqsf3kcmljgm7ehu2vjmlflwepddpeth4", + "time": 1698747864 + }, + { + "cid": "bafkreifpbperacf57typaumiauqsf3kcmljgm7ehu2vjmlflwepddpeth4", + "time": 1698747864 + } + ], + "validationError": false + }, + { + "dpid": "113", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig2nlksggv4ghb24xw7ng23klrttx3kiu3tdlnsa2gcn2zacpmxa4", + "time": 1698782484 + }, + { + "cid": "bafkreig2nlksggv4ghb24xw7ng23klrttx3kiu3tdlnsa2gcn2zacpmxa4", + "time": 1698782484 + } + ], + "validationError": false + }, + { + "dpid": "114", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibsaosbasq6er4o2mkovemlp6tgppyeudue6lsx6dbznba56omd6e", + "time": 1698782652 + }, + { + "cid": "bafkreibsaosbasq6er4o2mkovemlp6tgppyeudue6lsx6dbznba56omd6e", + "time": 1698782652 + } + ], + "validationError": false + }, + { + "dpid": "115", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaqt4amqtdha2affz4caq6qrl3uzk4zutwfnzcc6ba5ziw6itc2ty", + "time": 1699355412 + }, + { + "cid": "bafkreiaqt4amqtdha2affz4caq6qrl3uzk4zutwfnzcc6ba5ziw6itc2ty", + "time": 1699355412 + }, + { + "cid": "bafkreichmxylugiwhtrhomfjc7njdmp6isfivmdsflhmuzenzxnyl76m5i", + "time": 1699355784 + }, + { + "cid": "bafkreichmxylugiwhtrhomfjc7njdmp6isfivmdsflhmuzenzxnyl76m5i", + "time": 1699355784 + } + ], + "validationError": false + }, + { + "dpid": "116", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreid4spqoyg2mk2r7bcju6vkxsgtcx2fl27tyivtvrvnwlqgn26udn4", + "time": 1699608000 + }, + { + "cid": "bafkreid4spqoyg2mk2r7bcju6vkxsgtcx2fl27tyivtvrvnwlqgn26udn4", + "time": 1699608000 + }, + { + "cid": "bafkreiejv6ymnxxum5c67qpkvp2eevgy7rgksq7vhzgyfxg5riwl33lzqe", + "time": 1699887960 + }, + { + "cid": "bafkreiejv6ymnxxum5c67qpkvp2eevgy7rgksq7vhzgyfxg5riwl33lzqe", + "time": 1699887960 + }, + { + "cid": "bafkreibechybrdrnwlsg3unh2pgxg2jgekg653h37e4xzc3wazyzcjzegq", + "time": 1699954776 + }, + { + "cid": "bafkreibechybrdrnwlsg3unh2pgxg2jgekg653h37e4xzc3wazyzcjzegq", + "time": 1699954776 + } + ], + "validationError": false + }, + { + "dpid": "117", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiepbbtkhudgspd6dr4rnckaqwdenedehsvppkyakute6z36bplgpy", + "time": 1699954800 + }, + { + "cid": "bafkreiepbbtkhudgspd6dr4rnckaqwdenedehsvppkyakute6z36bplgpy", + "time": 1699954800 + }, + { + "cid": "bafkreids7cf6gagvaxbmammx6ekl4e3xwhcyw33vkqmy5ml2m4epvpjwua", + "time": 1700053860 + }, + { + "cid": "bafkreids7cf6gagvaxbmammx6ekl4e3xwhcyw33vkqmy5ml2m4epvpjwua", + "time": 1700053860 + } + ], + "validationError": false + }, + { + "dpid": "118", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihv7uzjstazrksvrdwrt6j3oqiw73oqi2krvwlzojbo5yhrfrpcu4", + "time": 1699979532 + }, + { + "cid": "bafkreihv7uzjstazrksvrdwrt6j3oqiw73oqi2krvwlzojbo5yhrfrpcu4", + "time": 1699979532 + }, + { + "cid": "bafkreifwnjaykar4vdhcpyimr73hklty7nqnm77u37rzmdyhldtlleycfy", + "time": 1702053972 + }, + { + "cid": "bafkreifwnjaykar4vdhcpyimr73hklty7nqnm77u37rzmdyhldtlleycfy", + "time": 1702053972 + } + ], + "validationError": false + }, + { + "dpid": "119", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifisxmqzztc3zgleheiakn4xn5w7ze6ap5iynom46djxue54nvk5i", + "time": 1699983900 + }, + { + "cid": "bafkreifisxmqzztc3zgleheiakn4xn5w7ze6ap5iynom46djxue54nvk5i", + "time": 1699983900 + }, + { + "cid": "bafkreihhg6k56gey42vldxac36u3ueleq4nzrm2zw5fxfcdmwcdrfyjpci", + "time": 1699984152 + }, + { + "cid": "bafkreihhg6k56gey42vldxac36u3ueleq4nzrm2zw5fxfcdmwcdrfyjpci", + "time": 1699984152 + } + ], + "validationError": false + }, + { + "dpid": "120", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifonv6z5enzbl44kwvh3i3m5stmagckblhfp4skmilmt72ff3dthe", + "time": 1699984440 + }, + { + "cid": "bafkreifonv6z5enzbl44kwvh3i3m5stmagckblhfp4skmilmt72ff3dthe", + "time": 1699984440 + } + ], + "validationError": false + }, + { + "dpid": "121", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig7g2zbirxw3spdxicv6igvu4t2frzdbipzh4q2lp7a7vzsnktdym", + "time": 1699984896 + }, + { + "cid": "bafkreig7g2zbirxw3spdxicv6igvu4t2frzdbipzh4q2lp7a7vzsnktdym", + "time": 1699984896 + } + ], + "validationError": false + }, + { + "dpid": "122", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidhtfpm7qcv36eklavzuhq7dxbfq7a2o3ovv6q55qubyr7xnvpnm4", + "time": 1700005716 + }, + { + "cid": "bafkreidhtfpm7qcv36eklavzuhq7dxbfq7a2o3ovv6q55qubyr7xnvpnm4", + "time": 1700005716 + } + ], + "validationError": false + }, + { + "dpid": "123", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifuyc6nxavordwnewceq6tdzbzs4u5u7eiohs2lflwabdmhrrcxtm", + "time": 1700006352 + }, + { + "cid": "bafkreifuyc6nxavordwnewceq6tdzbzs4u5u7eiohs2lflwabdmhrrcxtm", + "time": 1700006352 + } + ], + "validationError": false + }, + { + "dpid": "124", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiccwsruwcne5ctm4bdarr6772xgxqdcy3jg66rthmd5iaq2hnexgi", + "time": 1700046408 + }, + { + "cid": "bafkreiccwsruwcne5ctm4bdarr6772xgxqdcy3jg66rthmd5iaq2hnexgi", + "time": 1700046408 + }, + { + "cid": "bafkreihi36k65e6jlytud7hcvtxru2xbkphtxbdu3xx2pkm53qwb5mjzge", + "time": 1700046432 + }, + { + "cid": "bafkreihi36k65e6jlytud7hcvtxru2xbkphtxbdu3xx2pkm53qwb5mjzge", + "time": 1700046432 + }, + { + "cid": "bafkreiezsp3ibhch3wf4arb4ies65exfex2isowpfsrrlq6pyvatiexr5q", + "time": 1700046552 + }, + { + "cid": "bafkreiezsp3ibhch3wf4arb4ies65exfex2isowpfsrrlq6pyvatiexr5q", + "time": 1700046552 + } + ], + "validationError": false + }, + { + "dpid": "125", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidsdl7s6pqakmfhfvcauof7ovylegxa5nwp2dxuxd5rbb27vsk4d4", + "time": 1700057772 + }, + { + "cid": "bafkreidsdl7s6pqakmfhfvcauof7ovylegxa5nwp2dxuxd5rbb27vsk4d4", + "time": 1700057772 + }, + { + "cid": "bafkreidjcemwjx3ljeuja3lety52fksvk2ojukxkxudbnwu7kgse2zz3tm", + "time": 1700058384 + }, + { + "cid": "bafkreidjcemwjx3ljeuja3lety52fksvk2ojukxkxudbnwu7kgse2zz3tm", + "time": 1700058384 + } + ], + "validationError": false + }, + { + "dpid": "126", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib6z6ysfnyw6k6ly7cpdp7qjcjbbvjoffn4ppiarimmk33sbxuoy4", + "time": 1700059584 + }, + { + "cid": "bafkreib6z6ysfnyw6k6ly7cpdp7qjcjbbvjoffn4ppiarimmk33sbxuoy4", + "time": 1700059584 + } + ], + "validationError": false + }, + { + "dpid": "127", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibqnmfw4jhrjk4ggz63kqtti7rzxroutotrrey2j37a3ad2wfuojm", + "time": 1700063400 + }, + { + "cid": "bafkreibqnmfw4jhrjk4ggz63kqtti7rzxroutotrrey2j37a3ad2wfuojm", + "time": 1700063400 + }, + { + "cid": "bafkreifgaoapp6ku2zt3awb3svh3ol75stczvu2bon373bit4whaneb2lm", + "time": 1700063832 + }, + { + "cid": "bafkreifgaoapp6ku2zt3awb3svh3ol75stczvu2bon373bit4whaneb2lm", + "time": 1700063832 + }, + { + "cid": "bafkreibbb2gkxihablys2fjtrecr2tvfbujyulblivfqn4jsl6hyx5dghy", + "time": 1708492476 + }, + { + "cid": "bafkreibbb2gkxihablys2fjtrecr2tvfbujyulblivfqn4jsl6hyx5dghy", + "time": 1708492476 + } + ], + "validationError": false + }, + { + "dpid": "128", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihjgheci62x27bgduapkcmwbxldpwyk5af5kqvbpq2nmfmtfxdmmm", + "time": 1700063832 + }, + { + "cid": "bafkreihjgheci62x27bgduapkcmwbxldpwyk5af5kqvbpq2nmfmtfxdmmm", + "time": 1700063832 + } + ], + "validationError": false + }, + { + "dpid": "129", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigtnznzipcb6j4ufpnmde3e66pzl53n7etkxjj4waorkc2vfzban4", + "time": 1700754096 + }, + { + "cid": "bafkreigtnznzipcb6j4ufpnmde3e66pzl53n7etkxjj4waorkc2vfzban4", + "time": 1700754096 + } + ], + "validationError": false + }, + { + "dpid": "130", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaiwepaj5h3ueggcvsp7rs6zsu5emvcbxg4aantq43mjrvkb46t5i", + "time": 1701434724 + }, + { + "cid": "bafkreiaiwepaj5h3ueggcvsp7rs6zsu5emvcbxg4aantq43mjrvkb46t5i", + "time": 1701434724 + } + ], + "validationError": false + }, + { + "dpid": "131", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidw5k6li7ex6goxdky37t6obgd3472rbgygmvu5rnf6iiptrqkmiy", + "time": 1701702708 + }, + { + "cid": "bafkreidw5k6li7ex6goxdky37t6obgd3472rbgygmvu5rnf6iiptrqkmiy", + "time": 1701702708 + }, + { + "cid": "bafkreiaa4eh2bmuwlutgnvnbbd64npfqdlzxzc75li5pzhlmdkrvj5qjrq", + "time": 1701703056 + }, + { + "cid": "bafkreiaa4eh2bmuwlutgnvnbbd64npfqdlzxzc75li5pzhlmdkrvj5qjrq", + "time": 1701703056 + } + ], + "validationError": false + }, + { + "dpid": "132", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifqxy2ie6a5gwqwjdrjzpuer3d5dwb4sauljj6coojnzprlvfes2e", + "time": 1701788316 + }, + { + "cid": "bafkreifqxy2ie6a5gwqwjdrjzpuer3d5dwb4sauljj6coojnzprlvfes2e", + "time": 1701788316 + } + ], + "validationError": false + }, + { + "dpid": "133", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifyxvaek2nsdtke62wviupn7qqtgzeucrpe5c66lrycvtvestkkau", + "time": 1701795900 + }, + { + "cid": "bafkreifyxvaek2nsdtke62wviupn7qqtgzeucrpe5c66lrycvtvestkkau", + "time": 1701795900 + } + ], + "validationError": false + }, + { + "dpid": "134", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigu4xxysvqtf6cicat3iheugi6g45vsgnptbrht6p6om3txvsttye", + "time": 1701872976 + }, + { + "cid": "bafkreigu4xxysvqtf6cicat3iheugi6g45vsgnptbrht6p6om3txvsttye", + "time": 1701872976 + } + ], + "validationError": false + }, + { + "dpid": "135", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihf45jsg5rnkpv2mz2wwpf5w3u6ixu765a5hckam3j3fbl5i2tgbq", + "time": 1701875664 + }, + { + "cid": "bafkreihf45jsg5rnkpv2mz2wwpf5w3u6ixu765a5hckam3j3fbl5i2tgbq", + "time": 1701875664 + } + ], + "validationError": false + }, + { + "dpid": "136", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreih5g3pbinh264nuwgvsuerueucgpacv5ytill4sbxt7zsexgfntqi", + "time": 1702142316 + }, + { + "cid": "bafkreih5g3pbinh264nuwgvsuerueucgpacv5ytill4sbxt7zsexgfntqi", + "time": 1702142316 + }, + { + "cid": "bafkreiaitokvbuwllmihafculxuniwiydtl2cuuuhqbmkuvpk62uuhmu4e", + "time": 1702145736 + }, + { + "cid": "bafkreiaitokvbuwllmihafculxuniwiydtl2cuuuhqbmkuvpk62uuhmu4e", + "time": 1702145736 + }, + { + "cid": "bafkreifyo3tzgp3bp7a7zwxym6lskt567rdvjn4t334dczglkvgbpglla4", + "time": 1702202688 + }, + { + "cid": "bafkreifyo3tzgp3bp7a7zwxym6lskt567rdvjn4t334dczglkvgbpglla4", + "time": 1702202688 + }, + { + "cid": "bafkreif4yaj5za2adpy3wmklbstwpaciobl3j4uwcwrwcri7bbkcvwik6q", + "time": 1708382904 + }, + { + "cid": "bafkreif4yaj5za2adpy3wmklbstwpaciobl3j4uwcwrwcri7bbkcvwik6q", + "time": 1708382904 + } + ], + "validationError": false + }, + { + "dpid": "137", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiebtockthsjrwsikbjshzdikjsa3j35avolyabw2zl5nxd4np2qa4", + "time": 1702430448 + }, + { + "cid": "bafkreiebtockthsjrwsikbjshzdikjsa3j35avolyabw2zl5nxd4np2qa4", + "time": 1702430448 + }, + { + "cid": "bafkreig5muvzq5a5whji264zbzpkd452kqiswo4on3b3waibrwcte6n2jq", + "time": 1702439796 + }, + { + "cid": "bafkreig5muvzq5a5whji264zbzpkd452kqiswo4on3b3waibrwcte6n2jq", + "time": 1702439796 + } + ], + "validationError": false + }, + { + "dpid": "138", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiezlcl57kasksq7hwdqxsffpqloek4jbr4vrvausbg6ozsrnwnkfq", + "time": 1702512600 + }, + { + "cid": "bafkreiezlcl57kasksq7hwdqxsffpqloek4jbr4vrvausbg6ozsrnwnkfq", + "time": 1702512600 + }, + { + "cid": "bafkreifxevx7yu5noaquu4bojmyl6pubqotkp4wsbjpd6vbz3neuk7nlxu", + "time": 1707153744 + }, + { + "cid": "bafkreifxevx7yu5noaquu4bojmyl6pubqotkp4wsbjpd6vbz3neuk7nlxu", + "time": 1707153744 + } + ], + "validationError": false + }, + { + "dpid": "139", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreictkrrk3arfcy4rstvjjtpwrw3yf7wdgxepf5z2cmjuiv2igkdlnm", + "time": 1702512876 + }, + { + "cid": "bafkreictkrrk3arfcy4rstvjjtpwrw3yf7wdgxepf5z2cmjuiv2igkdlnm", + "time": 1702512876 + } + ], + "validationError": false + }, + { + "dpid": "140", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibz4nvkwdmqxmtxefklebrqrhbbhias3bvt7moko5jgw6hopkhwga", + "time": 1702513068 + }, + { + "cid": "bafkreibz4nvkwdmqxmtxefklebrqrhbbhias3bvt7moko5jgw6hopkhwga", + "time": 1702513068 + }, + { + "cid": "bafkreifbhbxfm6s6djz5taz5buthqlpy2cruaysfnixojzubwgkprsbq4i", + "time": 1708801020 + }, + { + "cid": "bafkreifbhbxfm6s6djz5taz5buthqlpy2cruaysfnixojzubwgkprsbq4i", + "time": 1708801020 + } + ], + "validationError": false + }, + { + "dpid": "141", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifkjw3mjt4ib4dhjjpn2sbv3oqf4c5mcf5n7zlggynvvqlwksdxay", + "time": 1702513164 + }, + { + "cid": "bafkreifkjw3mjt4ib4dhjjpn2sbv3oqf4c5mcf5n7zlggynvvqlwksdxay", + "time": 1702513164 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + } + ], + "validationError": false + }, + { + "dpid": "142", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidll4iaylvaplqqqotp3e7bolx3qgqnjkzliplbhdz7v7dcrdn65q", + "time": 1702513344 + }, + { + "cid": "bafkreidll4iaylvaplqqqotp3e7bolx3qgqnjkzliplbhdz7v7dcrdn65q", + "time": 1702513344 + }, + { + "cid": "bafkreieszmyc5ph43ft77gk4pj5emhuy53if6vjbeejzxbrtusxb3ouq54", + "time": 1708802160 + }, + { + "cid": "bafkreieszmyc5ph43ft77gk4pj5emhuy53if6vjbeejzxbrtusxb3ouq54", + "time": 1708802160 + } + ], + "validationError": false + }, + { + "dpid": "143", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidjonu3vhm5vd5fogs3zrjzq3qcajjkpvwwj43gdqn2swiops5glm", + "time": 1702513392 + }, + { + "cid": "bafkreidjonu3vhm5vd5fogs3zrjzq3qcajjkpvwwj43gdqn2swiops5glm", + "time": 1702513392 + }, + { + "cid": "bafkreih25vwbntxxybpsxctpg5eqi6f7ewcwzqzpklifbfqffcrbs65k64", + "time": 1708802052 + }, + { + "cid": "bafkreih25vwbntxxybpsxctpg5eqi6f7ewcwzqzpklifbfqffcrbs65k64", + "time": 1708802052 + } + ], + "validationError": false + }, + { + "dpid": "144", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieogvypbmg7vgut2f76b33kql6cw4vstzm4f7asoenfzh2rudpekm", + "time": 1702513452 + }, + { + "cid": "bafkreieogvypbmg7vgut2f76b33kql6cw4vstzm4f7asoenfzh2rudpekm", + "time": 1702513452 + }, + { + "cid": "bafkreib3b6ztd5tyebhjtxsj4dpl2nw3bipejak5n3zz7u7ta3et2ghyoq", + "time": 1708801908 + }, + { + "cid": "bafkreib3b6ztd5tyebhjtxsj4dpl2nw3bipejak5n3zz7u7ta3et2ghyoq", + "time": 1708801908 + } + ], + "validationError": false + }, + { + "dpid": "145", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibbu3bk7ucli5yaikmcwdduigaien2dqb2bzq4af6ufzrmu6vswty", + "time": 1702513524 + }, + { + "cid": "bafkreibbu3bk7ucli5yaikmcwdduigaien2dqb2bzq4af6ufzrmu6vswty", + "time": 1702513524 + }, + { + "cid": "bafkreig2mtcbf6eu2vraqmy5ftukn4i6fgeiwfou2znswwss5sarsotmcm", + "time": 1708801680 + }, + { + "cid": "bafkreig2mtcbf6eu2vraqmy5ftukn4i6fgeiwfou2znswwss5sarsotmcm", + "time": 1708801680 + } + ], + "validationError": false + }, + { + "dpid": "146", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreied3q6xs3itsgvjgeybu5cnmuuds2puklksrhfvy4ofjddo3nkyle", + "time": 1702513584 + }, + { + "cid": "bafkreied3q6xs3itsgvjgeybu5cnmuuds2puklksrhfvy4ofjddo3nkyle", + "time": 1702513584 + } + ], + "validationError": false + }, + { + "dpid": "147", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiapkcqpkavfwqc4id5mb7e46n3f5nr5uig4ik7bwaxk7a5tox2ztq", + "time": 1702513620 + }, + { + "cid": "bafkreiapkcqpkavfwqc4id5mb7e46n3f5nr5uig4ik7bwaxk7a5tox2ztq", + "time": 1702513620 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801212 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801212 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801236 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801236 + } + ], + "validationError": false + }, + { + "dpid": "148", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibgprhlr22zfwgrm7y3kx4jxslpozqp4pmofsrj5tbqpkaxi5glpe", + "time": 1702559448 + }, + { + "cid": "bafkreibgprhlr22zfwgrm7y3kx4jxslpozqp4pmofsrj5tbqpkaxi5glpe", + "time": 1702559448 + }, + { + "cid": "bafkreieqjqllffddjuraswoq4pm5d5cd5eu2knqe6yie7rj6aufujtct4e", + "time": 1702907160 + }, + { + "cid": "bafkreieqjqllffddjuraswoq4pm5d5cd5eu2knqe6yie7rj6aufujtct4e", + "time": 1702907160 + } + ], + "validationError": false + }, + { + "dpid": "149", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigcc2l7aay34i5zeot5wjvpspdpwp6ipfzffs3cnnpbpt7c2gqu6i", + "time": 1703003448 + }, + { + "cid": "bafkreigcc2l7aay34i5zeot5wjvpspdpwp6ipfzffs3cnnpbpt7c2gqu6i", + "time": 1703003448 + }, + { + "cid": "bafkreig6lp6265u42llqh6hkzxc54hmyfea7ax7gewg7tdyvthieotmwpy", + "time": 1703003868 + }, + { + "cid": "bafkreig6lp6265u42llqh6hkzxc54hmyfea7ax7gewg7tdyvthieotmwpy", + "time": 1703003868 + }, + { + "cid": "bafkreici3wzz7njqigyo7ebzwn3kibxgwjr43ihowwebl4exmfy75tkpjm", + "time": 1703072388 + }, + { + "cid": "bafkreici3wzz7njqigyo7ebzwn3kibxgwjr43ihowwebl4exmfy75tkpjm", + "time": 1703072388 + }, + { + "cid": "bafkreicgxdcypaq5tmmrrva3tl7k2un47pfolg3mox72j5k65zitsukfii", + "time": 1707406116 + }, + { + "cid": "bafkreicgxdcypaq5tmmrrva3tl7k2un47pfolg3mox72j5k65zitsukfii", + "time": 1707406116 + }, + { + "cid": "bafkreie7j6ji7ynh5d5yoldoxfevak55nkmcx5h7v3c6h4xy7le25sbgke", + "time": 1709143824 + }, + { + "cid": "bafkreie7j6ji7ynh5d5yoldoxfevak55nkmcx5h7v3c6h4xy7le25sbgke", + "time": 1709143824 + } + ], + "validationError": false + }, + { + "dpid": "150", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif3aoauxavq7sxibkysi4kemqdwbcez4cjtmzoou46bj44r2rc3sa", + "time": 1703205816 + }, + { + "cid": "bafkreif3aoauxavq7sxibkysi4kemqdwbcez4cjtmzoou46bj44r2rc3sa", + "time": 1703205816 + } + ], + "validationError": false + }, + { + "dpid": "151", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicqe2blgjarm3bg6jon5sjvmu773bnuajfnkmlnvo5hd5uj2yr234", + "time": 1703212224 + }, + { + "cid": "bafkreicqe2blgjarm3bg6jon5sjvmu773bnuajfnkmlnvo5hd5uj2yr234", + "time": 1703212224 + } + ], + "validationError": false + }, + { + "dpid": "152", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifiy2ipxllse5z6kspsspgt247eadivoij736j3yehwe6cy5rn6ny", + "time": 1705091376 + }, + { + "cid": "bafkreifiy2ipxllse5z6kspsspgt247eadivoij736j3yehwe6cy5rn6ny", + "time": 1705091376 + }, + { + "cid": "bafkreihvutuhtiehsoyc66u7a7bncnqfhoosynejagkykkfwa7gkr2rsta", + "time": 1705091496 + }, + { + "cid": "bafkreihvutuhtiehsoyc66u7a7bncnqfhoosynejagkykkfwa7gkr2rsta", + "time": 1705091496 + }, + { + "cid": "bafkreiekobyktiisailjk2sauqxembzyqe26z7i7mxkl6xidhhlb62wnyi", + "time": 1706832732 + }, + { + "cid": "bafkreiekobyktiisailjk2sauqxembzyqe26z7i7mxkl6xidhhlb62wnyi", + "time": 1706832732 + } + ], + "validationError": false + }, + { + "dpid": "153", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigr54hmercrddm2nnyo46yfn3w466zeoawph7k23swzr5v6lobcjm", + "time": 1705491780 + }, + { + "cid": "bafkreigr54hmercrddm2nnyo46yfn3w466zeoawph7k23swzr5v6lobcjm", + "time": 1705491780 + } + ], + "validationError": false + }, + { + "dpid": "154", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidzawjc7uaskxy2a55gfd3pjqssl5v6nfqj4ghziglbdfuk3arfri", + "time": 1705579488 + }, + { + "cid": "bafkreidzawjc7uaskxy2a55gfd3pjqssl5v6nfqj4ghziglbdfuk3arfri", + "time": 1705579488 + } + ], + "validationError": false + }, + { + "dpid": "155", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieqqvt2bx34g44zombuj254dzqng5l4bjc33vnuduiaklfjf7jrza", + "time": 1706550924 + }, + { + "cid": "bafkreieqqvt2bx34g44zombuj254dzqng5l4bjc33vnuduiaklfjf7jrza", + "time": 1706550924 + } + ], + "validationError": false + }, + { + "dpid": "156", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibhuuogniwgsozq6zqgpfg622ktaz4e4xtspvxv6be7zoaknlp7oi", + "time": 1706735148 + }, + { + "cid": "bafkreibhuuogniwgsozq6zqgpfg622ktaz4e4xtspvxv6be7zoaknlp7oi", + "time": 1706735148 + }, + { + "cid": "bafkreicmyxjhueivvlucnysc5sgmdnxgsmn5wryaodmdwl7xhku5o4dwki", + "time": 1706737632 + }, + { + "cid": "bafkreicmyxjhueivvlucnysc5sgmdnxgsmn5wryaodmdwl7xhku5o4dwki", + "time": 1706737632 + } + ], + "validationError": false + }, + { + "dpid": "157", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreificypwhqbtu4acdrxgbzdrpbw5dncxrcwtskrebhv53trsk23ive", + "time": 1706738172 + }, + { + "cid": "bafkreificypwhqbtu4acdrxgbzdrpbw5dncxrcwtskrebhv53trsk23ive", + "time": 1706738172 + } + ], + "validationError": false + }, + { + "dpid": "158", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigmgjpsfxzshdvozllx3m6s5ubiulcx7yumhe7armganzdiu42feu", + "time": 1706834520 + }, + { + "cid": "bafkreigmgjpsfxzshdvozllx3m6s5ubiulcx7yumhe7armganzdiu42feu", + "time": 1706834520 + } + ], + "validationError": false + }, + { + "dpid": "159", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifl7hhai6p5podahrcse5ocklgf2qdayw33raeaugk4cjgugroupq", + "time": 1707473772 + }, + { + "cid": "bafkreifl7hhai6p5podahrcse5ocklgf2qdayw33raeaugk4cjgugroupq", + "time": 1707473772 + } + ], + "validationError": false + }, + { + "dpid": "160", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifjtpqkpatgmy4jpmhsepfvpv2gmiofgyh6qpinfnstyrsufickua", + "time": 1707644916 + }, + { + "cid": "bafkreifjtpqkpatgmy4jpmhsepfvpv2gmiofgyh6qpinfnstyrsufickua", + "time": 1707644916 + }, + { + "cid": "bafkreif2hl47drgqwb6qay5dbdmmm4ivbcfus3wromwaho2wxine6niudm", + "time": 1707645552 + }, + { + "cid": "bafkreif2hl47drgqwb6qay5dbdmmm4ivbcfus3wromwaho2wxine6niudm", + "time": 1707645552 + }, + { + "cid": "bafkreihopqbkiidgwszltgcx3cp3n5m3vkfcyqf5tktaf7zpikdwqkpkmu", + "time": 1707646572 + }, + { + "cid": "bafkreihopqbkiidgwszltgcx3cp3n5m3vkfcyqf5tktaf7zpikdwqkpkmu", + "time": 1707646572 + } + ], + "validationError": false + }, + { + "dpid": "161", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreialnzhaztvhuvwkzpqlst7w3yttviws5tcpdnwvggdmxnx2ydzere", + "time": 1707848244 + }, + { + "cid": "bafkreialnzhaztvhuvwkzpqlst7w3yttviws5tcpdnwvggdmxnx2ydzere", + "time": 1707848244 + } + ], + "validationError": false + }, + { + "dpid": "162", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieowcw35rvuvocaupds5fsremm4h6j3cris5sscfjun4o2e4bccla", + "time": 1707967356 + }, + { + "cid": "bafkreieowcw35rvuvocaupds5fsremm4h6j3cris5sscfjun4o2e4bccla", + "time": 1707967356 + } + ], + "validationError": false + }, + { + "dpid": "163", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif4554qs4ppds7364pfeqla623ebon5nlvs5m53ecw4jhdkmtnfre", + "time": 1707967740 + }, + { + "cid": "bafkreif4554qs4ppds7364pfeqla623ebon5nlvs5m53ecw4jhdkmtnfre", + "time": 1707967740 + } + ], + "validationError": false + }, + { + "dpid": "164", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidn5fdrmh62nc4r3g5paqija32flksc23evsc5akqoqftkwfeqm2i", + "time": 1708094712 + }, + { + "cid": "bafkreidn5fdrmh62nc4r3g5paqija32flksc23evsc5akqoqftkwfeqm2i", + "time": 1708094712 + }, + { + "cid": "bafkreibpaflwrfhygpheciwlemvahtkkwdgg35dnevu25rid46iae2ws6i", + "time": 1708453920 + }, + { + "cid": "bafkreibpaflwrfhygpheciwlemvahtkkwdgg35dnevu25rid46iae2ws6i", + "time": 1708453920 + }, + { + "cid": "bafkreif7javbr3hrnuwmoggv7dtprs7axcsdldsqpwmpfcdizy5bk2tfxa", + "time": 1708514124 + }, + { + "cid": "bafkreif7javbr3hrnuwmoggv7dtprs7axcsdldsqpwmpfcdizy5bk2tfxa", + "time": 1708514124 + } + ], + "validationError": false + }, + { + "dpid": "165", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicv2zf35h43m656h2734du5ynp2zctedwxkgwtbhubg34oenhhexa", + "time": 1708109700 + }, + { + "cid": "bafkreicv2zf35h43m656h2734du5ynp2zctedwxkgwtbhubg34oenhhexa", + "time": 1708109700 + } + ], + "validationError": false + }, + { + "dpid": "166", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibfvwqckon265lpmjuinzlg6ebzo4s6dtgh7invz2prf766bvuodm", + "time": 1708372176 + }, + { + "cid": "bafkreibfvwqckon265lpmjuinzlg6ebzo4s6dtgh7invz2prf766bvuodm", + "time": 1708372176 + } + ], + "validationError": false + }, + { + "dpid": "167", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreige2oxxkk4rboadjcxlvwbvlun3e4xmrxp4qtqvdmjdfzhptuyf5a", + "time": 1708458984 + }, + { + "cid": "bafkreige2oxxkk4rboadjcxlvwbvlun3e4xmrxp4qtqvdmjdfzhptuyf5a", + "time": 1708458984 + } + ], + "validationError": false + }, + { + "dpid": "168", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiftjc6urzlqlcffupjwnezhfash4tlvgy2qnstu2vpp6tdk4zpmma", + "time": 1708493796 + }, + { + "cid": "bafkreiftjc6urzlqlcffupjwnezhfash4tlvgy2qnstu2vpp6tdk4zpmma", + "time": 1708493796 + }, + { + "cid": "bafkreic4hj66auaehgtgoz6zzks2w2r7lsxhrisjuh7dbfipvgmkhfpace", + "time": 1708690584 + }, + { + "cid": "bafkreic4hj66auaehgtgoz6zzks2w2r7lsxhrisjuh7dbfipvgmkhfpace", + "time": 1708690584 + } + ], + "validationError": false + }, + { + "dpid": "169", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidguz57tkqtmta44oov6jkgxxeg635asddp2belouydyxjndukspi", + "time": 1708495980 + }, + { + "cid": "bafkreidguz57tkqtmta44oov6jkgxxeg635asddp2belouydyxjndukspi", + "time": 1708495980 + } + ], + "validationError": false + }, + { + "dpid": "170", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidyakyvrrmovwk4ddfw2fxtgkl3f4coef75pybncmoa55jnlxx6tm", + "time": 1708501884 + }, + { + "cid": "bafkreidyakyvrrmovwk4ddfw2fxtgkl3f4coef75pybncmoa55jnlxx6tm", + "time": 1708501884 + }, + { + "cid": "bafkreiddvndkkcaqwdmetqxfl2vhfag45c4cug6aubsnlrl7uk66y3pzrq", + "time": 1710843672 + }, + { + "cid": "bafkreibsbid5gceknfrbun76wrdq73vzglgxq25yy2pg7fnpflfuucem6e", + "time": 1710844824 + }, + { + "cid": "bafkreibsbid5gceknfrbun76wrdq73vzglgxq25yy2pg7fnpflfuucem6e", + "time": 1710845520 + }, + { + "cid": "bafkreiav726womo5gxdii7ootir2uuhdn34fzej3f6ala7xynge6ag543a", + "time": 1710846540 + } + ], + "validationError": false + }, + { + "dpid": "171", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtajzmf7ty7hhyclz4aj5f74mktbj4liyhobvs3qr7nebqprl2yi", + "time": 1708516896 + }, + { + "cid": "bafkreibtajzmf7ty7hhyclz4aj5f74mktbj4liyhobvs3qr7nebqprl2yi", + "time": 1708516896 + } + ], + "validationError": false + }, + { + "dpid": "172", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicenejlzy2ygk6vflo4xhr7hjqe22nz5f354afoo5pc65d6qf2ojq", + "time": 1708523184 + }, + { + "cid": "bafkreicenejlzy2ygk6vflo4xhr7hjqe22nz5f354afoo5pc65d6qf2ojq", + "time": 1708523184 + }, + { + "cid": "bafkreibhvfaxoampgahsqavwoc3r5qwsmb23cg5lavkgoak77x4htgjism", + "time": 1712669388 + }, + { + "cid": "bafkreiab7zb4iwbnd6atuukrzkjcph7hbc763rqxnhrl3xtk7c73c3ofsi", + "time": 1712679120 + }, + { + "cid": "bafkreifxjj6yjggeno26fceojxb3ibuoaszeettsqwumuw337owiu2goaq", + "time": 1712758368 + }, + { + "cid": "bafkreic5tnpaovahue6zvswongz52o2kog7ngwiawcmwcq63xskxfwltdm", + "time": 1712854176 + }, + { + "cid": "bafkreic5tnpaovahue6zvswongz52o2kog7ngwiawcmwcq63xskxfwltdm", + "time": 1712859180 + }, + { + "cid": "bafkreignqmhx4yaaaqytcf2q7hhvbhyz5nrsqq4sv23jbenzs65luutaqu", + "time": 1713200220 + }, + { + "cid": "bafkreihv4owtfk4yfhljptkfrcsnt6nnaobbgsfl4h2ivxgi3kbtvzspc4", + "time": 1713212124 + } + ], + "validationError": false + }, + { + "dpid": "173", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531344 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531344 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531620 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531620 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531992 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531992 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708532064 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708532064 + } + ], + "validationError": false + }, + { + "dpid": "174", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidobtwdrk7dulyc6dghfr6zylbfisjwbs6l6ahd6qfkfdavs76dpa", + "time": 1708602732 + }, + { + "cid": "bafkreidobtwdrk7dulyc6dghfr6zylbfisjwbs6l6ahd6qfkfdavs76dpa", + "time": 1708602732 + } + ], + "validationError": false + }, + { + "dpid": "175", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreignopdmerljfo6nzpq2hj5zr5g7h3wajjxthpuikxjpsdbco4tavm", + "time": 1708619376 + }, + { + "cid": "bafkreignopdmerljfo6nzpq2hj5zr5g7h3wajjxthpuikxjpsdbco4tavm", + "time": 1708619376 + }, + { + "cid": "bafkreiae65pw54dt5vx75oenehagushpi2sh42c3zqld7der3ircmfyqam", + "time": 1708653516 + }, + { + "cid": "bafkreiae65pw54dt5vx75oenehagushpi2sh42c3zqld7der3ircmfyqam", + "time": 1708653516 + }, + { + "cid": "bafkreihm7iuibrdzlr5uyrhhkyijboyheeujettcihcgmegrna43mmvs6a", + "time": 1708672332 + }, + { + "cid": "bafkreihm7iuibrdzlr5uyrhhkyijboyheeujettcihcgmegrna43mmvs6a", + "time": 1708672332 + }, + { + "cid": "bafkreicjzr7d4odl6dzvx3acnng3cwq5sptcjn5wbqeep4juymadohagfi", + "time": 1708674912 + }, + { + "cid": "bafkreicjzr7d4odl6dzvx3acnng3cwq5sptcjn5wbqeep4juymadohagfi", + "time": 1708674912 + }, + { + "cid": "bafkreihdgbp3rrimo3sfayouabpfy5awspr6lues5rj5pjld2mcwi5ftsm", + "time": 1708729500 + }, + { + "cid": "bafkreihdgbp3rrimo3sfayouabpfy5awspr6lues5rj5pjld2mcwi5ftsm", + "time": 1708729500 + }, + { + "cid": "bafkreidpouvko3ht6dkhplrx44r4cbycx4irvw6mnunven3x2mll5kgaie", + "time": 1708890600 + }, + { + "cid": "bafkreidpouvko3ht6dkhplrx44r4cbycx4irvw6mnunven3x2mll5kgaie", + "time": 1708890600 + } + ], + "validationError": false + }, + { + "dpid": "176", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidwx6vv43n4vyd2gvnc7a7hoalg3nj6ncuxtzete7bay6lgkdjrji", + "time": 1708695348 + }, + { + "cid": "bafkreidwx6vv43n4vyd2gvnc7a7hoalg3nj6ncuxtzete7bay6lgkdjrji", + "time": 1708695348 + }, + { + "cid": "bafkreibjcr22ex3uibpoxf3fpzriafscmbivizzkqrjx7iqh5qbkg4oizq", + "time": 1708695612 + }, + { + "cid": "bafkreibjcr22ex3uibpoxf3fpzriafscmbivizzkqrjx7iqh5qbkg4oizq", + "time": 1708695612 + } + ], + "validationError": false + }, + { + "dpid": "177", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihnul5baol6hg5vsq6sokqwbm5txyb5honlphs3rpjklc4d7pj4qi", + "time": 1708882260 + }, + { + "cid": "bafkreihnul5baol6hg5vsq6sokqwbm5txyb5honlphs3rpjklc4d7pj4qi", + "time": 1708882260 + }, + { + "cid": "bafkreidp7tepg63xchd2sxngslv6douzhg53j7ndnf4bwbxgwthvjxgmhq", + "time": 1715951676 + } + ], + "validationError": false + }, + { + "dpid": "178", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibnvu2kmntm4p2ttebfqukas5hdzzthyahkkgxizihb4f3fwvszoy", + "time": 1708900272 + }, + { + "cid": "bafkreibnvu2kmntm4p2ttebfqukas5hdzzthyahkkgxizihb4f3fwvszoy", + "time": 1708900272 + }, + { + "cid": "bafkreibax2nwfvcmewzi4muxbtywulni6zvvihnipob3hvweohuu3lmawu", + "time": 1708900680 + }, + { + "cid": "bafkreibax2nwfvcmewzi4muxbtywulni6zvvihnipob3hvweohuu3lmawu", + "time": 1708900680 + }, + { + "cid": "bafkreiaicia5j7xdpo5gr3nukomg7kylxpnyfiguflr7ff5z6v45rbg3om", + "time": 1708909188 + }, + { + "cid": "bafkreiaicia5j7xdpo5gr3nukomg7kylxpnyfiguflr7ff5z6v45rbg3om", + "time": 1708909188 + } + ], + "validationError": false + }, + { + "dpid": "179", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiekmumtbr6fg6ksitwx3744knbituhthjis3mnd5facdbqc6526fy", + "time": 1708930572 + }, + { + "cid": "bafkreiekmumtbr6fg6ksitwx3744knbituhthjis3mnd5facdbqc6526fy", + "time": 1708930572 + } + ], + "validationError": false + }, + { + "dpid": "180", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihyn2pm7mqzcjabytkoszcetquu4q6zouwaeqhp6bavvlmijqvj2m", + "time": 1708965960 + }, + { + "cid": "bafkreihyn2pm7mqzcjabytkoszcetquu4q6zouwaeqhp6bavvlmijqvj2m", + "time": 1708965960 + }, + { + "cid": "bafkreigksvcw5f67h2kzbxnndwf47ch74nb4vbniepacjt6y5nm74ote4m", + "time": 1708966848 + }, + { + "cid": "bafkreigksvcw5f67h2kzbxnndwf47ch74nb4vbniepacjt6y5nm74ote4m", + "time": 1708966848 + }, + { + "cid": "bafkreifhzq76yqo66hcvcj2e7554odbcppblavfrobmyuxynaj2wv2ydlm", + "time": 1708974048 + }, + { + "cid": "bafkreifhzq76yqo66hcvcj2e7554odbcppblavfrobmyuxynaj2wv2ydlm", + "time": 1708974048 + } + ], + "validationError": false + }, + { + "dpid": "181", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieqzlofquf3yakkfcqwzzg77ea6qrirnbli6iedpeo5zk2hktedfe", + "time": 1709032560 + }, + { + "cid": "bafkreieqzlofquf3yakkfcqwzzg77ea6qrirnbli6iedpeo5zk2hktedfe", + "time": 1709032560 + } + ], + "validationError": false + }, + { + "dpid": "182", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070444 + }, + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070444 + }, + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070600 + }, + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070600 + } + ], + "validationError": false + }, + { + "dpid": "183", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihfy4ibvcrdxlq3n6y6ahskxglvyhskwugy7xwi4amk4dcek7hvvi", + "time": 1709074644 + }, + { + "cid": "bafkreihfy4ibvcrdxlq3n6y6ahskxglvyhskwugy7xwi4amk4dcek7hvvi", + "time": 1709074644 + } + ], + "validationError": false + }, + { + "dpid": "184", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif4pg7ph3qxuj4yoapw4tez3jxt52m5fhp7nkd3q2ai4xrwva46oq", + "time": 1709709132 + }, + { + "cid": "bafkreif4pg7ph3qxuj4yoapw4tez3jxt52m5fhp7nkd3q2ai4xrwva46oq", + "time": 1709709132 + } + ], + "validationError": false + }, + { + "dpid": "185", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibbt24dc64gwzwhcjtyha5qsdvmj4ztlkbhg7p7s74hjpdlrveo5a", + "time": 1709710296 + }, + { + "cid": "bafkreibbt24dc64gwzwhcjtyha5qsdvmj4ztlkbhg7p7s74hjpdlrveo5a", + "time": 1709710296 + } + ], + "validationError": false + }, + { + "dpid": "186", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiezmycqcs3426uhlpamwfidxlt72njmc22cuma47fxx5e3oi7zrpq", + "time": 1709713596 + }, + { + "cid": "bafkreiezmycqcs3426uhlpamwfidxlt72njmc22cuma47fxx5e3oi7zrpq", + "time": 1709713596 + } + ], + "validationError": false + }, + { + "dpid": "187", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiemcbfxzi5v3sjiztw4zqs7ngbbirmbcza2sxag4ur4gx3jc57weu", + "time": 1709713968 + }, + { + "cid": "bafkreiemcbfxzi5v3sjiztw4zqs7ngbbirmbcza2sxag4ur4gx3jc57weu", + "time": 1709713968 + } + ], + "validationError": false + }, + { + "dpid": "188", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifc7blw4sfdrqqyinooyk2zajg4kvobazfpxmmyxhky67xyrtg2bi", + "time": 1709717856 + }, + { + "cid": "bafkreifc7blw4sfdrqqyinooyk2zajg4kvobazfpxmmyxhky67xyrtg2bi", + "time": 1709717856 + } + ], + "validationError": false + }, + { + "dpid": "189", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib5w5wqatnhuuekzdmqe33ci4jmczwtcw235mdugsk6sbjkewhycq", + "time": 1709718156 + }, + { + "cid": "bafkreib5w5wqatnhuuekzdmqe33ci4jmczwtcw235mdugsk6sbjkewhycq", + "time": 1709718156 + } + ], + "validationError": false + }, + { + "dpid": "190", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidlwnin6u3lbb5me7gsaomtrz3xfxruteb3oqvng2isup6dq2md2u", + "time": 1710044316 + }, + { + "cid": "bafkreidlwnin6u3lbb5me7gsaomtrz3xfxruteb3oqvng2isup6dq2md2u", + "time": 1710044316 + } + ], + "validationError": false + }, + { + "dpid": "191", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreif7hsizhhb3pe5onhq7lnteu65c4wjdlhlh2yhokzsssnjiqhbizy", + "time": 1710848280 + }, + { + "cid": "bafkreif7hsizhhb3pe5onhq7lnteu65c4wjdlhlh2yhokzsssnjiqhbizy", + "time": 1710848496 + } + ], + "validationError": false + }, + { + "dpid": "192", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreifup6tri42y77u4cyu5dtceve4hbesvkfhwod6cnlwnworm5kg5jy", + "time": 1710934908 + } + ], + "validationError": false + }, + { + "dpid": "193", + "owner": "0xec29aCa1a8740B8C5e2e06EBB52290700B9a2c40", + "versions": [ + { + "cid": "bafkreibs5jouyrflaifdy5h46qcao4ifl6k2uxkkdbjjhztowrzrdi7uey", + "time": 1711110348 + } + ], + "validationError": false + }, + { + "dpid": "194", + "owner": "0xec29aCa1a8740B8C5e2e06EBB52290700B9a2c40", + "versions": [ + { + "cid": "bafkreie4ql2xrlaaa3gydydecs62q6llw6ph3nql4wtv4vrvk7qlry5mii", + "time": 1711112832 + }, + { + "cid": "bafkreie4ql2xrlaaa3gydydecs62q6llw6ph3nql4wtv4vrvk7qlry5mii", + "time": 1711112916 + }, + { + "cid": "bafkreie4ql2xrlaaa3gydydecs62q6llw6ph3nql4wtv4vrvk7qlry5mii", + "time": 1711112964 + }, + { + "cid": "bafkreie4ql2xrlaaa3gydydecs62q6llw6ph3nql4wtv4vrvk7qlry5mii", + "time": 1711113060 + } + ], + "validationError": false + }, + { + "dpid": "195", + "owner": "0x4d0EC1B776aE7d57AFa42294cd6F5fa8Ab659819", + "versions": [ + { + "cid": "bafkreigl33hhuzyxtipdx26wsu4u775m47ceu7aryim3dbkquzxdzxw2cm", + "time": 1711250184 + } + ], + "validationError": false + }, + { + "dpid": "196", + "owner": "0x4d0EC1B776aE7d57AFa42294cd6F5fa8Ab659819", + "versions": [ + { + "cid": "bafkreicrbew4z2xa5msag2xqluych2cqvu4q37if7c4myrlgrso7clyr5m", + "time": 1711283700 + } + ], + "validationError": false + }, + { + "dpid": "197", + "owner": "0x711E9b9e8aD75CBD3AC024a8e4Aeeff59AfBae6c", + "versions": [ + { + "cid": "bafkreihzdyg7sncus6iiyywrmq3ieg6jpanwhopp3nermvdbj6twldqz4a", + "time": 1711484460 + } + ], + "validationError": false + }, + { + "dpid": "198", + "owner": "0xDAF8752DDcCE8a6B709aa271e7Efc60F75CDDF64", + "versions": [ + { + "cid": "bafkreifnbtsbubgr4igy3d2bdfm3t7wglonaefcpb6hltgx5ddemoirxbq", + "time": 1711485360 + } + ], + "validationError": false + }, + { + "dpid": "199", + "owner": "0xE713c665AC962155Ce2230b67034FBbc68Aa001E", + "versions": [ + { + "cid": "bafkreidrgw7m3dqhrhtkv3oof2tbuyaspmo3j7mfbyt4mcoiwsfzrelntm", + "time": 1712586828 + }, + { + "cid": "bafkreie6idsoipa3agkyg3widjx2qkqhyqesw7a4inbtf3v5bjwqmgvbu4", + "time": 1712746296 + }, + { + "cid": "bafkreifxbvttafs77huxssiyh7cia2aeds44qn7u3i6mo37rv5ok4n3yx4", + "time": 1712849196 + } + ], + "validationError": false + }, + { + "dpid": "200", + "owner": "0xb7633a1C95CDeFf14Fe90A18C61eA2EeA56ADd6F", + "versions": [ + { + "cid": "bafkreibr74kptq3taaq6vkk5ncliqjlaxfudeteoapwfj5dbk7lvabpa7a", + "time": 1712589912 + }, + { + "cid": "bafkreiehg2co367mlvhwga322q27m6k6ed3cll3jfhbeotrjr5uji4vuvy", + "time": 1712590308 + } + ], + "validationError": false + }, + { + "dpid": "201", + "owner": "0xbC4f75a4579c55B3b347C316159e03Ad9A233346", + "versions": [ + { + "cid": "bafkreigaex4kn6t5jtwjvfg6fhvu5ernugv4c2oyijj5c6sitlp7feyz4i", + "time": 1712699136 + }, + { + "cid": "bafkreibbutjlx6mftck5cdrghtnec7pupin5tmocw3jjnltk5b6ymepreu", + "time": 1712758008 + }, + { + "cid": "bafkreiasprpssrqrmt6csyxvp6h2hosczpnuhy5yet3ebdmp44nwqmnnxa", + "time": 1712910312 + }, + { + "cid": "bafkreiaml7ltpqcdawuri4pgze6lwst74dlwkkrxvu7ycxwcmucm54pzw4", + "time": 1712924748 + }, + { + "cid": "bafkreie44bdq6au5k544axgyh3t5u557sgojmk77jo6iebd2nuxdoboale", + "time": 1713181740 + }, + { + "cid": "bafkreifz6sboaziz6ozlws755w4xfa3agxerpcqfz2x3tyzpardhte57lu", + "time": 1713202788 + }, + { + "cid": "bafkreieebhdtnluia3gdhpi7cm3gskmnytq2vfmgi6mc7hkv3kqakcjqku", + "time": 1713210492 + }, + { + "cid": "bafkreicazrs2upqf67gb5z57oyoqd5p2ffsn3w4m4mpib5ttk4skwsoha4", + "time": 1713820044 + }, + { + "cid": "bafkreif33f5fja4xlt5hfng7au7u56pqxmhq7cwbsqqbo74kvh4dfmzt3a", + "time": 1713876336 + }, + { + "cid": "bafkreiffrskcqxf6sxlgi4vyfc6i7ppvsqd6fak5fr5azzxwurobetsvtm", + "time": 1713910788 + }, + { + "cid": "bafkreiffrskcqxf6sxlgi4vyfc6i7ppvsqd6fak5fr5azzxwurobetsvtm", + "time": 1713912876 + }, + { + "cid": "bafkreidymyibcfrjg6gjfdwdrsfxt2veregxrbxeilcqwawz5jstr2wgje", + "time": 1713966252 + }, + { + "cid": "bafkreiczragradkmshlydspr2hbkuj2ze5jptfrvh3ahygx2fvwxmx3eia", + "time": 1714743048 + }, + { + "cid": "bafkreicwl624bosttcswwvtkyisg2uqs2c5n65rsakaxa4c56xlxqwbnc4", + "time": 1715089932 + }, + { + "cid": "bafkreibomeyu2ha74ghyeargxgmne3zccrq3laf2hl5moilp62u5imaktq", + "time": 1715093316 + } + ], + "validationError": false + }, + { + "dpid": "202", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreiblksmeh2h2rukdd3yyw2qpm2fspl233fccd3dmnjycukacslxtlu", + "time": 1712828544 + } + ], + "validationError": false + }, + { + "dpid": "203", + "owner": "0xbC4f75a4579c55B3b347C316159e03Ad9A233346", + "versions": [ + { + "cid": "bafkreieyuphulyypkgqyrenp5bsa4fmhdyjm6sxupuazdzdjr7bck3b6t4", + "time": 1712905908 + } + ], + "validationError": false + }, + { + "dpid": "204", + "owner": "0x29E9454e1Ee1bAf582403E1Dd3352134b044d6c6", + "versions": [ + { + "cid": "bafkreia3hv332uc5hjtjufiaptgqccnirp6glgqlp3kkmqqxzckk2wtque", + "time": 1714895436 + }, + { + "cid": "bafkreia3hv332uc5hjtjufiaptgqccnirp6glgqlp3kkmqqxzckk2wtque", + "time": 1714899456 + }, + { + "cid": "bafkreicedcwhhshszz4yorw4dsc67juu4eywrkfr2viacv3awmcvt7xroi", + "time": 1714902324 + } + ], + "validationError": false + }, + { + "dpid": "205", + "owner": "0x5249a44B2abEa543b2C441AC4964A08deB3Ed3CB", + "versions": [ + { + "cid": "bafkreihjkupfxvnrf5rgtwrrwacpatea6p6rfkpptk7tbyqug2yey56vmm", + "time": 1714902900 + }, + { + "cid": "bafkreifj7ps2uj2ovgbdx73j2rjrdgbsv5v52vsqbku73jk57mfo36e4ea", + "time": 1715097528 + } + ], + "validationError": false + }, + { + "dpid": "206", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreibwzk6k24vak2utess6b4g3ymvoduf2wmmjq5ckp74zffetkvtp7y", + "time": 1715105532 + } + ], + "validationError": false + }, + { + "dpid": "207", + "owner": "0x29E9454e1Ee1bAf582403E1Dd3352134b044d6c6", + "versions": [ + { + "cid": "bafkreifsokpngt7o5nnf3svrjwq52a4jfmpsbo5dxrtfu7gxutn5b35zdq", + "time": 1715324136 + }, + { + "cid": "bafkreief5hvxfazsnkfzeuebbbyrqgrncfvzs62ixodku5bd2es7dxafmy", + "time": 1717411476 + } + ], + "validationError": false + }, + { + "dpid": "208", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreiecniqyzhz3ydgr6qalq2v64cptmc75ziriagcqumrg5mmldqs6ui", + "time": 1715706588 + } + ], + "validationError": false + }, + { + "dpid": "209", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreibcnzl5mhvil6ossyaldtmhvci3pgrop34rodde6nsqo4seymk35u", + "time": 1715754924 + } + ], + "validationError": false + }, + { + "dpid": "210", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreice6ojx5rphjrv3ghcwpmyceb4ftvogpjgueis7oysx4iwofux7tq", + "time": 1715756148 + } + ], + "validationError": false + }, + { + "dpid": "211", + "owner": "0xE713c665AC962155Ce2230b67034FBbc68Aa001E", + "versions": [ + { + "cid": "bafkreifxkw7fxmqs73xjkvpqib25ogct6sh7j5ult7ouemn27eyus6vteq", + "time": 1715758284 + } + ], + "validationError": false + }, + { + "dpid": "212", + "owner": "0xE713c665AC962155Ce2230b67034FBbc68Aa001E", + "versions": [ + { + "cid": "bafkreibd6z4ez67iorgtngwjgyzunrfafqp6ckd4rzxqcdkldsynzircbq", + "time": 1715758332 + } + ], + "validationError": false + }, + { + "dpid": "213", + "owner": "0xE713c665AC962155Ce2230b67034FBbc68Aa001E", + "versions": [ + { + "cid": "bafkreiftabtiwceukykjj7djbll6o7vj2b5nqljq2ayqos7a4q5bfj26qe", + "time": 1715759052 + } + ], + "validationError": false + }, + { + "dpid": "214", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreib4lne5chotkvctuooguqtknxwcu62tcg2f3czrhekq55yopr326y", + "time": 1715759664 + } + ], + "validationError": false + }, + { + "dpid": "215", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreidlca6x7or4cu26j42ujpauito7lu36sgrnkzikwtbblhxxj7ou5q", + "time": 1715783532 + } + ], + "validationError": false + }, + { + "dpid": "216", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreidxpaqx4emlzuyny7nwptse7v43fnldv6scxwerzf52ifwtj2zpmq", + "time": 1715846040 + }, + { + "cid": "bafkreidxpaqx4emlzuyny7nwptse7v43fnldv6scxwerzf52ifwtj2zpmq", + "time": 1715846232 + } + ], + "validationError": false + }, + { + "dpid": "217", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreielmjyyh4huzlvdfq5zpkq4yfynqkir7nzyw2hraph34z6pk6vpta", + "time": 1715852172 + } + ], + "validationError": false + }, + { + "dpid": "218", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreial2hxxfcpzkm474ommsvbywgkoz7giyai5y2vnzt2yuswt3qwvhe", + "time": 1715852724 + } + ], + "validationError": false + }, + { + "dpid": "219", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreih5rxnqa74dgehy5vlzf2c3bjpdd4d37wjsmd6umklvtpravrymii", + "time": 1715852904 + }, + { + "cid": "bafkreif7bdndzubravkpbgllcz2uejzxvuagbrxw4kg3afvzqcz5u2epji", + "time": 1715853012 + } + ], + "validationError": false + }, + { + "dpid": "220", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreihdis2gtow2vyjw3lfrrk75nwhimvr3mol5tw2yg5m6yb4qkfzusm", + "time": 1715853288 + } + ], + "validationError": false + }, + { + "dpid": "221", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreieykztli6himlvsp66y4eq5e6olhmd57mq3ff7q5lpkl3h57gdzhy", + "time": 1715854884 + } + ], + "validationError": false + }, + { + "dpid": "222", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreigduiq7h6qo3eszrpbgfaxllcboxxa7isr35ajf3qkax2522stlhu", + "time": 1715857896 + } + ], + "validationError": false + }, + { + "dpid": "223", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreifz5uvrar2vdxtcmd2sh3xhibyansyg2joqmnclce6spwopswo7qm", + "time": 1715858892 + } + ], + "validationError": false + }, + { + "dpid": "224", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreihjdwdspwjdptweikwbzpzthv2b3vkaablm6yrgzg2syf34ay5zo4", + "time": 1715858988 + } + ], + "validationError": false + }, + { + "dpid": "225", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreibd4v3nmp6n652mrgmuha6q65cul6pq625gzirsrka4wiftdrbxkm", + "time": 1715859360 + } + ], + "validationError": false + }, + { + "dpid": "226", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreicikabkude4odfkc3h55d7tbma527qzcbq5f7urusu2f65jy2qdr4", + "time": 1715862000 + } + ], + "validationError": false + }, + { + "dpid": "227", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreickxvmqpwkg3hoiqaibcsz5mxgcquhoivflzgqloupgfvgxiahgmm", + "time": 1715862264 + } + ], + "validationError": false + }, + { + "dpid": "228", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreigpxc4535atofw53qhlwy5ljmku7cgvi64yzohjaqllh63e75iigm", + "time": 1715862396 + } + ], + "validationError": false + }, + { + "dpid": "229", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreibyqg4efuc4je3szq6augfzrlknk4kyo56jvmtlv6v3u34olfjw5q", + "time": 1715862828 + } + ], + "validationError": false + }, + { + "dpid": "230", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreice2sc42ahkjmt2fdkgrdgbpr2jbb462swclyamdykpc6guyigg3e", + "time": 1715863632 + } + ], + "validationError": false + }, + { + "dpid": "231", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreihdynlkgw62oeknjc6cpbibmk6hmql46haes3sw77twqxzxj4p7dy", + "time": 1715863932 + } + ], + "validationError": false + }, + { + "dpid": "232", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreidbb6rj2zcaufmhdqf2ioqa4ub573fsjwve3xsqtihz4t2mu7mfvm", + "time": 1715864112 + } + ], + "validationError": false + }, + { + "dpid": "233", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreih3wosdxfpkdajepb6fr6mpnbzotvx3757aapwh5jc4uj5ki4nsb4", + "time": 1715864796 + } + ], + "validationError": false + }, + { + "dpid": "234", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreieaqwjyk5oueqxkhoqbmh4priqdl2d5htgyp7euofym22t2vup2n4", + "time": 1715864856 + } + ], + "validationError": false + }, + { + "dpid": "235", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreicegqhkh77pjlaffif4jptccfjcug4x2v6uzkuhgzk7mvkp3h3pje", + "time": 1715864988 + } + ], + "validationError": false + }, + { + "dpid": "236", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreiaovnmdbwprrbe2ol5wmsiohpepr74eobdzp7mnhmolazca6rmk3u", + "time": 1715945640 + } + ], + "validationError": false + }, + { + "dpid": "237", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreia5h5rgnj3tckolwznad5ufivrdkrfcwwb7ybvhauqy3tpvsanxbe", + "time": 1715966676 + } + ], + "validationError": false + }, + { + "dpid": "238", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreihna43pr26bwxltihgzpby4pfamdojeyuusiikodzsfx2cx4nizwi", + "time": 1716044616 + }, + { + "cid": "bafkreiawwiamv3sm7ujwtusakl33ncwprbmvgqygsugcjc63e57o4qedrm", + "time": 1716195456 + }, + { + "cid": "bafkreifsn65szz2c7oigkpaj7zf5vveme2bdvyimhikvcthzpfamx4amqa", + "time": 1716195624 + }, + { + "cid": "bafkreiffpqp5eqhtb5twcggyfdwxd6zciqqrm43356m5g64tkozw6ox2um", + "time": 1716196968 + }, + { + "cid": "bafkreibhvf342535vnaxqpjvapnfvuh563g6fqq26ifmmks3edyig2bqje", + "time": 1716197688 + } + ], + "validationError": false + }, + { + "dpid": "239", + "owner": "0xbC4f75a4579c55B3b347C316159e03Ad9A233346", + "versions": [ + { + "cid": "bafkreida4e3jtx44nqujveh7qstktsiwvmgvqvdrxfp6oxwtgtj3yt7rtq", + "time": 1716299616 + } + ], + "validationError": false + }, + { + "dpid": "240", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreicc35sby7tw62yixogr7cdyb74ogud2oks7ucxoqm2dxl2ns7iqxe", + "time": 1716455376 + }, + { + "cid": "bafkreih4fwgcdcuanlvqrfe23gtssi2ry5qn5aiartyyxnrgwie47vogjq", + "time": 1716456924 + }, + { + "cid": "bafkreibmiu4or57a3zt2oqwpyo55sxilbohbekoio7ar6xctre4rplmctm", + "time": 1716457200 + }, + { + "cid": "bafkreig2frbnikhvo7ybhocvvtcxemjqjkzausxmea75mj4yes4vrh3ly4", + "time": 1716457332 + }, + { + "cid": "bafkreibrhymhxsjll5amkbh4xqpi3ndr5bp5lbs6vs5x43aqzdynbzrlxa", + "time": 1716559284 + }, + { + "cid": "bafkreidwe7ueatapvutqf34m6sdvqt2deyhmzgnkme45filbvjxcqhnhya", + "time": 1717161096 + }, + { + "cid": "bafkreiaipcdk567t72ftbuvqeuyec64zw57ed4ttaftjazoy3how25y254", + "time": 1717161504 + }, + { + "cid": "bafkreiglntmzkq4nhkaqjkukhdyngilz33lmqmlclyeich6kbx6h5cayau", + "time": 1717393608 + } + ], + "validationError": false + }, + { + "dpid": "241", + "owner": "0x51A257aAF108c9b0A3e140519bD14e5B4bf15e47", + "versions": [ + { + "cid": "bafkreici76b6bx7smkkihhzjpv7hj26q4uowye5vnmia36gn6lkaa65f6a", + "time": 1716458616 + } + ], + "validationError": false + }, + { + "dpid": "242", + "owner": "0x29E9454e1Ee1bAf582403E1Dd3352134b044d6c6", + "versions": [ + { + "cid": "bafkreibzcu3iwi7buqwy2ibujh2sbe4gmbyhycil7w4xeuvldsa2mrbypy", + "time": 1716464784 + } + ], + "validationError": false + }, + { + "dpid": "243", + "owner": "0x008292E57A2d9B34525d82876068652e639e61D8", + "versions": [ + { + "cid": "bafkreiaxbwjw2cp7mvfaul4xlxkguafmfkxxhym7ik5bty7dfehxff3tgu", + "time": 1716551616 + } + ], + "validationError": false + }, + { + "dpid": "244", + "owner": "0xb4096E016F162d10EfC8C20F8Db22a54D80935c8", + "versions": [ + { + "cid": "bafkreiflayannh3vsjxn2khne5gjtupt3mtso4rd6x4dnmfh3rhxzkvhfm", + "time": 1717158900 + } + ], + "validationError": false + }, + { + "dpid": "245", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreic56m4scp5t7fdb2zajue3tupjevoxlwaly2skqbdbncy5zbydike", + "time": 1717159332 + } + ], + "validationError": false + }, + { + "dpid": "246", + "owner": "0x42d4fF8298dfcDCbb70823B146D0a1a3AF128a45", + "versions": [ + { + "cid": "bafkreib23oradn74sxmdji6ofw4iffliheytyq7kq3ge3bnz2tooz764cu", + "time": 1717160400 + } + ], + "validationError": false + }, + { + "dpid": "247", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreiakdqljwmvvzkmwjrgkto4meyyghrl3tigocnoapejdquuiigy2si", + "time": 1718012544 + }, + { + "cid": "bafkreiehku747l4loyvugbfby55tig4qjgyj66ujbcpuohucktx6dg72k4", + "time": 1718015760 + } + ], + "validationError": false + }, + { + "dpid": "248", + "owner": "0x371e269bff1aaA342b43b74Cf1Ad9789BaF183F7", + "versions": [ + { + "cid": "bafkreic65zfq5ryxtmxtei3264qafrmcdyysxnmxl2krldoaitrjymogta", + "time": 1718017368 + } + ], + "validationError": false + } + ] +} \ No newline at end of file diff --git a/desci-contracts/migration-data/aliasRegistry_prod_Tue,_25_Jun_2024_08:36:06_GMT.json b/desci-contracts/migration-data/aliasRegistry_prod_Tue,_25_Jun_2024_08:36:06_GMT.json new file mode 100644 index 000000000..81d36d140 --- /dev/null +++ b/desci-contracts/migration-data/aliasRegistry_prod_Tue,_25_Jun_2024_08:36:06_GMT.json @@ -0,0 +1,3200 @@ +{ + "address": "0x935e08ce8AFdefa17CD1579f5a3CD31224e47456", + "dpids": [ + { + "dpid": "0", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie2idd2yuwibppujafgtfc6cczopht4q47y563q4paml2me2dsh6y", + "time": 1675737468 + } + ], + "validationError": false + }, + { + "dpid": "1", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigbp7bahnrxujbz5uu3j6hzmyimq7wijkucwyi4bc5tbvka5xw3wq", + "time": 1675781796 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818404 + }, + { + "cid": "bafkreigwzsizb76b62ln5xnhhqeypxhyqwwyp56zcprl52siut2q7h2lky", + "time": 1682818608 + } + ], + "validationError": false + }, + { + "dpid": "2", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihlsxjw3gzrikm2att6sd2yty4qx37z3fgmzokrm6fd3oony2qqby", + "time": 1676095440 + }, + { + "cid": "bafkreigvalv7basyqxn57b5ittssieecsccy7qaypmy6s7egr2o5tcqnda", + "time": 1676096820 + } + ], + "validationError": false + }, + { + "dpid": "3", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiancsq3yywjzkoyevwhn4hxyzgcfbdb72jspegmwy6uacd2cztpra", + "time": 1676725008 + } + ], + "validationError": false + }, + { + "dpid": "4", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreick32zk4ennjwwy7vqva7wpjo2w5d4fkwhg7hkrdjk63xq5r6gup4", + "time": 1676988612 + } + ], + "validationError": false + }, + { + "dpid": "5", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihra4e2ejsm7yqra4wmo2ww43j4ndvylfsrv5obobkl2k666baram", + "time": 1676996292 + } + ], + "validationError": false + }, + { + "dpid": "6", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiee7atuqdvq7dtxf2msslelz2ubst2g64oigetxunn352ryqvuoti", + "time": 1677066240 + } + ], + "validationError": false + }, + { + "dpid": "7", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidi2idvbbbg5y6iuf3bnbdo7gkyzgoz3hik2hghr3rl3gd7nplnwe", + "time": 1677080820 + }, + { + "cid": "bafkreicyvzgk632l2zn55dkbscjrwrlrxlckrxjhpxn6kiv4roegwzprpi", + "time": 1677081012 + } + ], + "validationError": false + }, + { + "dpid": "8", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibnhuq4tliestyutqxrfco4wwr3gxyrp7dlydxvgkddo6euet5yyu", + "time": 1677144720 + } + ], + "validationError": false + }, + { + "dpid": "9", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigjjlyedw3l7yfunjhaooe226hemiqz7pkeqb3arfmwvujknaa7pe", + "time": 1677230328 + } + ], + "validationError": false + }, + { + "dpid": "10", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihbcdgctujsajvlhbbcghfkg766pprlgatvujzkw6utteryn737wi", + "time": 1677510672 + }, + { + "cid": "bafkreif6omh6d2nosj7exr4gybupz3i6owb7ig7mfha23bebzbbzgtj3ty", + "time": 1677511224 + } + ], + "validationError": false + }, + { + "dpid": "11", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig75cxpsu2zhnkej7nwqszduw6l32luo3opikzsqa5wpfchnl7sua", + "time": 1678309056 + } + ], + "validationError": false + }, + { + "dpid": "12", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigvec6jtxth3eessemov7x62wjhtfpfihdleanekwx5l47rkxclcu", + "time": 1678771692 + } + ], + "validationError": false + }, + { + "dpid": "13", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreienztazc23yp5ejvwymgekqf2kmx6foasxul7yzt6w5crjwceqsea", + "time": 1678814328 + }, + { + "cid": "bafkreid4yx77dkhlbmx2gqwwki6y2rjmuybnqkxqmxnoyjtx7uhgdkdeu4", + "time": 1680117252 + } + ], + "validationError": false + }, + { + "dpid": "14", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiasx7tcckutok7a7yk7ej2pv6bolo5naihlk2gny6tpykcfvzxqm4", + "time": 1679014104 + } + ], + "validationError": false + }, + { + "dpid": "15", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifjuqlmsnnr2vlhwxrjsgu5zczwgodqjuzmo4kzgpzzu5zn42ivby", + "time": 1679219244 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219328 + }, + { + "cid": "bafkreiar3d6vkcyvfnk7kfhu4yrvul6hsn4fnjrwgq7wbl27t4e3ehfhwq", + "time": 1679219484 + } + ], + "validationError": false + }, + { + "dpid": "16", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig27rnst73rqnqgtesyo32xhrhaqtdxbvtdohwnjdzua7cyapghbu", + "time": 1679343324 + } + ], + "validationError": false + }, + { + "dpid": "17", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigggibyev5x4w3tcydslfl3j5g2fl2sabfcxvdzqeajzfg3tqignq", + "time": 1679409324 + } + ], + "validationError": false + }, + { + "dpid": "18", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigghoctitgbpsjl6elgjkdlpu26t6zon7gqfx7cuhprsyykcjgvee", + "time": 1679409744 + } + ], + "validationError": false + }, + { + "dpid": "19", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicvdmmzw7tyaa7dkaikb7dcowjjbu3cv76rhvxqdbzm7gcg4inrfq", + "time": 1679539764 + } + ], + "validationError": false + }, + { + "dpid": "20", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie6bxf7u3z45sn2amk7ocsjihloiecfncmwsgvqoamqjnczfwnexy", + "time": 1679540424 + }, + { + "cid": "bafkreibnxznsx2xwdasyhjr2epkypjohuvz5qy35iu2elyoygjnfbk7im4", + "time": 1680554796 + } + ], + "validationError": false + }, + { + "dpid": "21", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiecholb67ldemsvyr7js2x6dewjnsylvpk47ejyhrokkbnqbl4i4y", + "time": 1679637204 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637252 + }, + { + "cid": "bafkreih6jpxxvs5ruwhfms7t4kg3qv27x6cf4qn7rzoffcjhgctjjcn7my", + "time": 1679637288 + } + ], + "validationError": false + }, + { + "dpid": "22", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreid4d4543faobctzfxh53tfa7u2q7jwqll7g3o52b6ko2vxbq6gya4", + "time": 1679658768 + } + ], + "validationError": false + }, + { + "dpid": "23", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifzp4vuudwvek33rcft2rd2szjrimey7yezcsbm2awkx2tjsunwwi", + "time": 1680567024 + } + ], + "validationError": false + }, + { + "dpid": "24", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicqcgfswelv7jvt3o5mirsrwbegst354jzl5znfhsysfi5kwa5oem", + "time": 1681191960 + } + ], + "validationError": false + }, + { + "dpid": "25", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiai7ekqchod7c7na6bsc5aeicugtqr2ai4jhdyjal4ukzzjdoxdoi", + "time": 1681495752 + } + ], + "validationError": false + }, + { + "dpid": "26", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiasg744hrz2h6tkkw4a2z55orh33v5rs2j62mx3arsuqxa5dppyzq", + "time": 1681497684 + }, + { + "cid": "bafkreicbh5ytfk7ohfa7tw44q5nmjkzmqseiesoskwcjntwc6apx7ifyyi", + "time": 1681497900 + } + ], + "validationError": false + }, + { + "dpid": "27", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiehj4xqrpk5m6sdemt5nv6ktb5uxp6ihmg3apdwiu6xhkjzlcmuka", + "time": 1681505184 + } + ], + "validationError": false + }, + { + "dpid": "28", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihmuuks36pyt5quuvjbxkhyu6lhdf3sfbqvfii6j2gemwpu2uc67q", + "time": 1681506588 + } + ], + "validationError": false + }, + { + "dpid": "29", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigifwmh35byvn2yzg2vojm6r6qpjyoce6dfdsacmch336adgqmyee", + "time": 1681736556 + }, + { + "cid": "bafkreicxifdkouaya7pzrj2upqft2c637t6awklqjsbd76dfog42hxvlqu", + "time": 1681736628 + } + ], + "validationError": false + }, + { + "dpid": "30", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidtjqvqyoq7ehafmy7vvhjlewgtxkxaqr7anwtwtgkzvlogmfwaey", + "time": 1681761420 + }, + { + "cid": "bafkreif6imae7ikphst6f2opahy2bn4qnm3srzj4rmnpdhrqtykwr6c4yu", + "time": 1681762272 + } + ], + "validationError": false + }, + { + "dpid": "31", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiahcqh7zzoz27gzh2chwto2u5kabmf2vmca3xbmzrlmgoqucrmfky", + "time": 1681805808 + } + ], + "validationError": false + }, + { + "dpid": "32", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaakpmpc5jr4bp3puzzpdjv5nh3maunzbaug2p335ngmdfsfekkxe", + "time": 1681830960 + } + ], + "validationError": false + }, + { + "dpid": "33", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreic2zkjdknqf5kfelzzstfovdwuc2dolbaej7eduedn6md7rpfo27y", + "time": 1682014560 + } + ], + "validationError": false + }, + { + "dpid": "34", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibkbhhedb3yazc6rze6772ouoymv3yy5vqmilmwi6eq7yuw3n6tue", + "time": 1682144088 + } + ], + "validationError": false + }, + { + "dpid": "35", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreih4kylr5z5oppj6wprw2luiyngsn3xq324kfbiku4ehi42dess4oi", + "time": 1682534976 + }, + { + "cid": "bafkreidasu577tdw76nprafzy7oa42nlr6gcyk45agx3tawrw3zyxu7mva", + "time": 1682746284 + }, + { + "cid": "bafkreieaozkgywz6vonai3kmhr6cct5jjpeau3lhy2zrb2ft3dsnudaxym", + "time": 1682813004 + } + ], + "validationError": false + }, + { + "dpid": "36", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifc4so5xny7vpkj62oejlxlnh2zp6w76idbvx3mi2t5nkhxpbenbe", + "time": 1682670864 + } + ], + "validationError": false + }, + { + "dpid": "37", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiadoa3b3hvlzpfliappjvhzoacqst2tnu5x7cjvhwcdjhplqakmmy", + "time": 1682793228 + }, + { + "cid": "bafkreiad7vwyvhxpgy5i6azrynsnu5g2x5ef7iwjafbnnvukkbc7dvygru", + "time": 1682793408 + } + ], + "validationError": false + }, + { + "dpid": "38", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiagyoholq6ypx4pdby56vfzq7a44q3sn6esvho7wcf6m4eghpcjoa", + "time": 1682813880 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682814000 + }, + { + "cid": "bafkreiapfszw7l5sysx2hgophrztwyeonpppem2xxwbujhhwa5kipypyky", + "time": 1682822136 + } + ], + "validationError": false + }, + { + "dpid": "39", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682820648 + }, + { + "cid": "bafkreiayluo2hglsq2qfahpzwqopgwaad7bqxma5we6l2bqzs2zfvk6eka", + "time": 1682821080 + }, + { + "cid": "bafkreiero2ggetbv2g5voe4yg7lr53cl7aocrcdbn5ndz754ani2c4xwye", + "time": 1682849124 + } + ], + "validationError": false + }, + { + "dpid": "40", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreih3uvxd3entelbnsrhijwkperswmy4d27cjvx2fnurjqqjzvp7v54", + "time": 1682821224 + } + ], + "validationError": false + }, + { + "dpid": "41", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihesv24wbwkhgjeplqi7lu2rm5d75o6es3krxbj4rfmhk3bcxavhe", + "time": 1682854224 + }, + { + "cid": "bafkreifmd5ucm3ypfkph7klhghsgyvfinkrwxw6uuiwpdjoarmxotflwaa", + "time": 1682854344 + } + ], + "validationError": false + }, + { + "dpid": "42", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie46ed23xpsfgxasdbhzq4zrni5v4dv3lbohasnqkgmohq4g6bjam", + "time": 1682856480 + } + ], + "validationError": false + }, + { + "dpid": "43", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigumcdo4dafutywplrgg7xgo6swf2qygljyzwktsafuhvednvpmhy", + "time": 1682951112 + } + ], + "validationError": false + }, + { + "dpid": "44", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihqpbdqrgnp6mebwfcqqt3izgreiw4zgiw42zmkezipmktv777itu", + "time": 1682962248 + } + ], + "validationError": false + }, + { + "dpid": "45", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihfrfianmcigzvnnetxkzwlcgza75dsah7ab5anx43phu3mke3uky", + "time": 1682993892 + } + ], + "validationError": false + }, + { + "dpid": "46", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia2nvcwknooiu6t6ywob4dhd6exb3aamogse4n7kkydybjaugdr6u", + "time": 1683053508 + }, + { + "cid": "bafkreih5koqw5nvxucidlihwfslknj674oeuroclit74rkaqpe4mq6xuka", + "time": 1683222132 + }, + { + "cid": "bafkreif3d644utirvwvkmukcrhg64palp3r4xociwsn6b6o2hxmkdxalby", + "time": 1683227616 + }, + { + "cid": "bafkreibn3jhdlsdsonv25t7i2bwtrbkl3jzwjbnnwylpeih3jmmzdhsfmi", + "time": 1683298680 + }, + { + "cid": "bafkreiepot62powegf7tt73gyiz24facsdloywggattt2asz5y4eaqhkyi", + "time": 1683299940 + }, + { + "cid": "bafkreihge5qw7sc3mqc4wkf4cgpv6udtvrgipfxwyph7dhlyu6bkkt7tfq", + "time": 1705420740 + } + ], + "validationError": false + }, + { + "dpid": "47", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia7orsrr4pwxe5m2gnklknpc25kjs7gnzemofki3aeh6ydh4hkfju", + "time": 1683222948 + } + ], + "validationError": false + }, + { + "dpid": "48", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieahbi5tzb2od7nb2j5up4ooiglvh2lty2bgcrwjc3km7fnsplaxu", + "time": 1683232692 + } + ], + "validationError": false + }, + { + "dpid": "49", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiet6onaozwmqyflpbjsa7f6f5jkhou5n3vxxkxmkgalhnr54bzftu", + "time": 1683236460 + }, + { + "cid": "bafkreibp3hplo3b2hfetbrargv2gv2dkx3kfqfsqbxhkuved2k2nebxcpa", + "time": 1683236760 + }, + { + "cid": "bafkreigym3lzf2ruzd3r23mflxjzafqfxoi5bncru3t4ky35vfaubbke34", + "time": 1683236760 + }, + { + "cid": "bafkreife4uk2mkecur54sq774ybtrka5l4gd5777j5cjjscfmx4vcqnfbm", + "time": 1683237288 + } + ], + "validationError": false + }, + { + "dpid": "50", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibroag6m5tps4srrtdxbfq74sskvpfu4sbhadhkh3vfonjrlmsvda", + "time": 1683886968 + } + ], + "validationError": false + }, + { + "dpid": "51", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiheezwrynuxo6gnjd2pmahkcw3wstooxs6fvaflpjouewmh4qi3aa", + "time": 1683930000 + }, + { + "cid": "bafkreiasjo5wzkkk2s56tvdkmbe56vj4j7gyq345vnqpwvnvwozzhtkxfq", + "time": 1683931428 + } + ], + "validationError": false + }, + { + "dpid": "52", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicxw5tzwajvwa757ihut3hvlgnfbpu7fa4oxfvvlssu4rikfrtmv4", + "time": 1684412244 + } + ], + "validationError": false + }, + { + "dpid": "53", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia7yjdhq6tdxjtwyr4ajfhxypq3jxbo5augryzzeos7cqrbyy6jmi", + "time": 1684862784 + }, + { + "cid": "bafkreifutouvscu3pbsaabgxdxqfd6zaphkcuei6i3fibdeefmrh4oujby", + "time": 1686612108 + } + ], + "validationError": false + }, + { + "dpid": "54", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigtfrsogce5ixgj4dvjgvj2qgjsujs5g4sa64svziiyz6j2bajise", + "time": 1685098464 + }, + { + "cid": "bafkreihocw2lexz7nz4sfwmy576guhbecxnzq4wfltnx5twqn2clng3ewu", + "time": 1685098776 + } + ], + "validationError": false + }, + { + "dpid": "55", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicup2qewrwovkkgk5bun4vpws7cbq3qnv2rbt7truyw54owvtwovm", + "time": 1685442360 + } + ], + "validationError": false + }, + { + "dpid": "56", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieis5ac2evezkciy26fvswybmyyarfnrlvyh7p5acvbhcsceayorq", + "time": 1685444172 + }, + { + "cid": "bafkreid6ibvbiblu6vviuc3l6ivmpmpdbj2rzt625capmi4igns2r7k4ue", + "time": 1685448060 + } + ], + "validationError": false + }, + { + "dpid": "57", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaulqrzufg3qnw55rwzqtn5h2cvsawdunrfwt4j32ywt6oswi5bfm", + "time": 1685525952 + } + ], + "validationError": false + }, + { + "dpid": "58", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidlxqbem5m3kgtntq6243vujhuyvt2s72ry2k5uy4f6hmjwbezdje", + "time": 1685526132 + }, + { + "cid": "bafkreib2gln7ztcpt6z7q7yo6isznl6lam4zv74hwslwhplh6g55re26lm", + "time": 1685536224 + } + ], + "validationError": false + }, + { + "dpid": "59", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigj2svt7njv2nxznzm42pisbjgpfjzhoorlcsryjlx5coa2klssku", + "time": 1685613060 + }, + { + "cid": "bafkreigvuao6ogwtnr2oknvxl3a5mtulhats7dqsiuturbxnnablevorai", + "time": 1685613240 + } + ], + "validationError": false + }, + { + "dpid": "60", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiefsjhlwr6bcq4nscdoz2q2tkca5i7ocxgtn5nxggkf2lr5a2z2lq", + "time": 1685613216 + }, + { + "cid": "bafkreifmohd57nd6xbcjrc3b6dxgpycgijleopks7hrmza4t23dvqxd2au", + "time": 1685613708 + } + ], + "validationError": false + }, + { + "dpid": "61", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreid5vwbe6ri74rgtdevbjznreexoedsocftjqgpopx3bih656jwzni", + "time": 1685614104 + } + ], + "validationError": false + }, + { + "dpid": "62", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiapjbbsrowag6txt3wuilla2vp6dhhijkylklmvdzc4es3qb27buq", + "time": 1685615388 + } + ], + "validationError": false + }, + { + "dpid": "63", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicjmhgi5sbjvo2i3nzwfkwfmahgipbyq6iasekibgqpl75cdiqdsi", + "time": 1685615724 + } + ], + "validationError": false + }, + { + "dpid": "64", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib2rkswbatx7qqcnymxcajqrgrywfzlsiischsrfowhbd5vjfskfi", + "time": 1685719428 + } + ], + "validationError": false + }, + { + "dpid": "65", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifdylfaiep4lc4544mow5aiq4vg37buebiybfx5wyznfi4pov6qri", + "time": 1686220584 + } + ], + "validationError": false + }, + { + "dpid": "66", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibelil5fgqul2o3chxv7g7xmdqkv2krqkv6r6mdbiw72vcqp4wxky", + "time": 1687805292 + }, + { + "cid": "bafkreiefvtk6gcvlxq3hw3lkxcjjy5aqkaxyu4swucs2wd3imjhi2yfdpm", + "time": 1687805484 + } + ], + "validationError": false + }, + { + "dpid": "67", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiazlufpwemnsbzscuycou7gi5m7t2p4yxbxvozkvxex47uczuokba", + "time": 1687807524 + }, + { + "cid": "bafkreidupix2c3fizisuv2z6tluypvssf6solprgnmev6ul6vp6dprwop4", + "time": 1687808232 + } + ], + "validationError": false + }, + { + "dpid": "68", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihakt3w53hwvneg2o3e4xysgegwk5j5rs6mug6ywlwb2bmprm4wzy", + "time": 1687812132 + } + ], + "validationError": false + }, + { + "dpid": "69", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigfelcudmytsq2s2j4wcy3j7tsyatpnffpcthf6zz7q5wa4snafdm", + "time": 1687812804 + } + ], + "validationError": false + }, + { + "dpid": "70", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicandi5eh3gwuxwlq6k6fpeuurnbpbx33q3ijndg44go2p5ekni3y", + "time": 1687817568 + } + ], + "validationError": false + }, + { + "dpid": "71", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibb5g5ujmxeve56ktnuolb7rrncmbgedtrjemeshn6rxbrhn4uepe", + "time": 1688024628 + }, + { + "cid": "bafkreiddtartrk6isrs3j5ltx6nkcv437jsu62vc6ew3cwvxk3msebzg5e", + "time": 1688024676 + } + ], + "validationError": false + }, + { + "dpid": "72", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicj4c44gghcoy2ztvwe32fmbv7cuvty2hv2y4ndrnd6ghrl3ciaea", + "time": 1688552688 + } + ], + "validationError": false + }, + { + "dpid": "73", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1688720808 + }, + { + "cid": "bafkreifdgjfu3g4qddc7g5kvnk3lshkuyfau7o2qle5ut5msptulbxsqme", + "time": 1689009768 + } + ], + "validationError": false + }, + { + "dpid": "74", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifqxkjzypbtz7snjp3ghjrv56bd5umihchpwfppnoz67tcmhuq7wi", + "time": 1689041640 + } + ], + "validationError": false + }, + { + "dpid": "75", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtsll3aq2bynvlxnqh6nxafzdm4cpiovr3bcncbkzjcy32xalp7i", + "time": 1689294216 + } + ], + "validationError": false + }, + { + "dpid": "76", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiatjdpouudloenzdzb7d3e5pogruvwbhurcnm2g5h64jmkpk2uebe", + "time": 1689518988 + }, + { + "cid": "bafkreigg3xk6ojueylnninvwsrw62nqpt7pyjnz6thaipbydb5ltclctly", + "time": 1692182952 + }, + { + "cid": "bafkreicrggm7jpxgaj2vgydvefuravrs2bh4emlt6eadx3zsbubtpulmcq", + "time": 1692330000 + }, + { + "cid": "bafkreifgfzjltrvcz3qixyjkiubgms2r3figm37euwxzbi6pvej2me6tje", + "time": 1701997248 + }, + { + "cid": "bafkreic4wiuatha4wclfbwft4vaeeqifrbb2f3tqm4eoajommogudbvswu", + "time": 1702000140 + }, + { + "cid": "bafkreicraffpobz3k5rzdmigl5tzklihwuim4kwe7xl5uulmfrkr4uvm2u", + "time": 1702045680 + }, + { + "cid": "bafkreidtkraxowlx26oz5g6qyfuawhx5nroil4a4mo6ywa7knfel7ft2dq", + "time": 1702045944 + } + ], + "validationError": false + }, + { + "dpid": "77", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaqxrcrai2j2lpk2moare5abq4vtyhxk6m5jxo5fbqkrsy24kdm7q", + "time": 1691492520 + }, + { + "cid": "bafkreihjozked2lgpgtdcuvzejanhnm65sccwglgblxfdg3cwi72vlrtvq", + "time": 1691493636 + }, + { + "cid": "bafkreieodz3e4kzbnlg4nka5pwrgafwuuemfuejxqa5dpdaqlgt6bjs7fm", + "time": 1691496348 + } + ], + "validationError": false + }, + { + "dpid": "78", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifixmk6tierh6qompfouk63r6clg5jbeuvwherrxacq4uoedk4o5q", + "time": 1691501736 + } + ], + "validationError": false + }, + { + "dpid": "79", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtuuiejhyxu4zr2od34biucedhlmqdmqem6v2ruqu6ov2kgsfnfa", + "time": 1692472464 + } + ], + "validationError": false + }, + { + "dpid": "80", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiawwe6os5lxye3hojdmwgcdt4nrs7xwfqy3p3vuv7xolhbnc2nqaq", + "time": 1693245804 + }, + { + "cid": "bafkreichlzplxpphzyoo3mnjg6tm2e4uplpm4d2q667a6dbz6xhctvktai", + "time": 1693246872 + } + ], + "validationError": false + }, + { + "dpid": "81", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieefydw5dajtfgz5xqecgyyqxt7kzzyibihy4dvnrtwakaahkn34y", + "time": 1693246440 + }, + { + "cid": "bafkreicpdjfhoxg3gyc2xn63ppbxf7a7wvehkl4h34dapqeqekfetwunme", + "time": 1700147784 + } + ], + "validationError": false + }, + { + "dpid": "82", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicmvrritjqe4eatfkix3k6kgxz7oxlxengyfhg7rkubpagmxymiqa", + "time": 1693247148 + } + ], + "validationError": false + }, + { + "dpid": "83", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreia6ccnzt76b23xkq7slvzxgebltmlkmvcbvr77nzfyca7wpq6qkru", + "time": 1693247616 + }, + { + "cid": "bafkreidrb3cry4mh6fcik54rotatfnz2mapg3olcsxqpodgdbecrh5iu54", + "time": 1700147268 + } + ], + "validationError": false + }, + { + "dpid": "84", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibgfpmyizfiu6mpmdcn6aqvqrli72za72ccrxsim24nhtfv3cqb7m", + "time": 1693248192 + }, + { + "cid": "bafkreidfksyvtp5vjzoczjupn6h6h72dcr2p2rm63l7l5qwn6sq6d2nyjy", + "time": 1700146980 + } + ], + "validationError": false + }, + { + "dpid": "85", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreichgcyenem343rn3cgpyymyicdgoe7vgkev7z7bccskncaux7rxt4", + "time": 1693248672 + }, + { + "cid": "bafkreiejwrzg3vtvrvxm75dzgmk3736v4wrhl6uin64hzq76oekbkqi2ci", + "time": 1700146392 + } + ], + "validationError": false + }, + { + "dpid": "86", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihxqrtbvhxg3w2nu3ahpcu2it6qvnmca4xb72vq4w27er3v4rsjgi", + "time": 1693249560 + }, + { + "cid": "bafkreidlqc6jfns3ftpxoopx7etmfqp75xwoptd6es36xir2fl4nkvmx6i", + "time": 1700145552 + } + ], + "validationError": false + }, + { + "dpid": "87", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidlb227q7gvv622itmewvsdli726msbjgtsoufaepsaajrc66d27u", + "time": 1693249908 + }, + { + "cid": "bafkreibaiviks6ed4yuwaidz4zzerlhmlkbdcxucky74ah4nu37cm443lm", + "time": 1700146176 + } + ], + "validationError": false + }, + { + "dpid": "88", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibdpyr6vlsifgi3cebv7ip26ynplllfzpekxz4zfj7xna7uolpjgy", + "time": 1693250244 + }, + { + "cid": "bafkreif7e3nkqyrpa6pkhlnv7sdrwkgyct7fhgzqsteo457kpa46wuflhe", + "time": 1700146776 + } + ], + "validationError": false + }, + { + "dpid": "89", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidp3ed42l6cizgero5c7zfmxpmwp5hkc4tx6uz7mgioxsep4wb6rm", + "time": 1693251900 + } + ], + "validationError": false + }, + { + "dpid": "90", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaw34rnu36p2ccawj3gopyxgl64qj3dc3ip3pzvfh5anzrvmu4z5u", + "time": 1694114940 + }, + { + "cid": "bafkreidk7ihar3swjjf46wtttjl52govxa256725urm5upcefu4wfvnxpm", + "time": 1694187648 + }, + { + "cid": "bafkreic6n2x6jlvss4iepnkkb4o4wre4nezbbff7kw46mz2egtzxast5xe", + "time": 1695653376 + } + ], + "validationError": false + }, + { + "dpid": "91", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigpcnierfxljhffgj4d6oyuwec4pcbkbjys6goaggw75rcobd6vnu", + "time": 1694197140 + }, + { + "cid": "bafkreidtiuwpwyewgjp3r5a7shvzgir7pvbeguxlv6zebpdbxrraialhxu", + "time": 1695653220 + } + ], + "validationError": false + }, + { + "dpid": "92", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicqezpklsjtuszjnsekc2dcyadgtbcfouhlc57vclrwco45gzbul4", + "time": 1695218412 + } + ], + "validationError": false + }, + { + "dpid": "93", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie2p56t2d3i762v3bow3jweile6fmryt2qlcjq3cmkz7kpqtaic2a", + "time": 1695246144 + } + ], + "validationError": false + }, + { + "dpid": "94", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaqnt5raa6b4ujpkgd4veg73rtp5csn6fwxrckbhq4mkrl7ws63dy", + "time": 1695246324 + } + ], + "validationError": false + }, + { + "dpid": "95", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreied6xbi65zwpzqiiaqnhq3cdq42c7yqrx6sd32ncv6avkovcb6f6y", + "time": 1695324696 + } + ], + "validationError": false + }, + { + "dpid": "96", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigurq54verb4sihjuonnx2pbo77lbjlviol2jfjxxgyzzko7o42ka", + "time": 1695816576 + } + ], + "validationError": false + }, + { + "dpid": "97", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696295376 + }, + { + "cid": "bafkreig76u6of7za2h5pdphz2ztsl5xdsgg2vrsh2dximjx3q2aszfjq6m", + "time": 1696296012 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299000 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299600 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299876 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299912 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696299996 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440036 + }, + { + "cid": "bafkreigul3gpywn3nes5jjxsh2ddfue4lg37ftg7sdqctmzxqp7cxdw3iy", + "time": 1696440996 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459560 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696459584 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466724 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466820 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696466964 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696468416 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696479552 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480608 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480764 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696480884 + }, + { + "cid": "bafkreifcfaudesj7f5jxjn3fecovikw6khhvvspxhc4b5rca6swcdvhdca", + "time": 1696481172 + }, + { + "cid": "bafkreiciddswj3e6ho5of7x7a7liaqehnwqeg35w3cp3l5knv6k2tdlswa", + "time": 1696594740 + } + ], + "validationError": false + }, + { + "dpid": "98", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicsn4qia64pf7eim7sjggvmnggqadmfmrrcm5gecbpfdzxwzlk7i4", + "time": 1696303560 + }, + { + "cid": "bafkreicsn4qia64pf7eim7sjggvmnggqadmfmrrcm5gecbpfdzxwzlk7i4", + "time": 1696303944 + } + ], + "validationError": false + }, + { + "dpid": "99", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696336296 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696469268 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536756 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536804 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536828 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536888 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536912 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536936 + }, + { + "cid": "bafkreibx7segie7e5ttf2x4j3vuarqbsjfrnakn6srf6myqadz3kbimqhe", + "time": 1696536972 + } + ], + "validationError": false + }, + { + "dpid": "100", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib2fs7g7yawpqeyjzatsv3bip5p6xr27pnblzjase3zyr4ixtbu6a", + "time": 1696506528 + }, + { + "cid": "bafkreihirj6fsasmvqmzngnyqitl6fpt3ljapgwx7dpfelgvruqsu7smw4", + "time": 1696507296 + }, + { + "cid": "bafkreid5osij2amlc67sm7uzqp22j7y3dn6lseyuy72oh64z5rqoh5qity", + "time": 1696840824 + } + ], + "validationError": false + }, + { + "dpid": "101", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaoby2dmz4sljyhxsizjj2yd2jvbzz2vsywii3vp6xqi4rjefxl4q", + "time": 1696589760 + } + ], + "validationError": false + }, + { + "dpid": "102", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiceiefmvnwozgtpvvwv5exwsdxm36yl5ovunmcnjx5kjtcqvm6lwe", + "time": 1696605300 + } + ], + "validationError": false + }, + { + "dpid": "103", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif6p22atw6ekbaxkrnfmetfdqtnhldaqw6qtqiqc7lqbus6aizru4", + "time": 1696841976 + } + ], + "validationError": false + }, + { + "dpid": "104", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiautwruptenrd4xbq5actpbmirrxprmnnxyxf37ixblmcynebjaqq", + "time": 1696842144 + }, + { + "cid": "bafkreie37zoipwpgqrupcmxfnhqfqpztumhcurzb27rfasa5ipao32w3ia", + "time": 1697792352 + }, + { + "cid": "bafkreiebcm7batu7zyp4aw6pzisbkldtlqsghh5jhczhkh63lxgjxp5wte", + "time": 1698779592 + } + ], + "validationError": false + }, + { + "dpid": "105", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1696842444 + }, + { + "cid": "bafkreig33qp67gaov32ibvtb5gqtcnfrntrsrbzst2lcgrgnkbu4hbtcj4", + "time": 1698911760 + } + ], + "validationError": false + }, + { + "dpid": "106", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibbbm7623bsdoftewbedqd3peny6zhqpt6tjgx67ouf6hhvbv2idi", + "time": 1696941732 + }, + { + "cid": "bafkreihemsbpld4yuzrn4ckrlriyq5ortlkycxx74ayfugnoce7oetsmam", + "time": 1696942104 + }, + { + "cid": "bafkreic4gpc3k5mrttk57w6k5fvtgvubvh6xfwgmubecx53b55xsxoavxe", + "time": 1696944228 + }, + { + "cid": "bafkreickteh2tt3oy43o42ikwei6tppghmtbkockk22a3niovi57ugor7q", + "time": 1696961232 + } + ], + "validationError": false + }, + { + "dpid": "107", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicgst5gqckb4bzduzxqhn2v5an2xjnmhv6qwscwtn3gjhuplpv3jm", + "time": 1697040396 + } + ], + "validationError": false + }, + { + "dpid": "108", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifzh36eve7dsmbebnvxhpalxdgcjcur7anxllzyfwnmetlsvq2f54", + "time": 1697792640 + } + ], + "validationError": false + }, + { + "dpid": "109", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibiziudxe62de7g443yl453tpnky25ujrcdhuaudtwq7hxrrr6q3m", + "time": 1698054684 + } + ], + "validationError": false + }, + { + "dpid": "110", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698079308 + }, + { + "cid": "bafkreic65maz27f7atu7a4euzl6jv4c2kz66ddvcxuhdajl4i4l27uwwii", + "time": 1698323460 + } + ], + "validationError": false + }, + { + "dpid": "111", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiejskdyqkcsnvcl6njkivjvptts656x3qvr64nsjdnx6pcn6bdht4", + "time": 1698177444 + }, + { + "cid": "bafkreialaclllbtsaxzdhbbut4mk57xh4r7bsj56cb44fockdxokcznbk4", + "time": 1698178344 + } + ], + "validationError": false + }, + { + "dpid": "112", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreictzmcsbe3bkmb7vyludvy7q37brvsw6q7xayblyn45r23n7ru224", + "time": 1698747720 + }, + { + "cid": "bafkreifpbperacf57typaumiauqsf3kcmljgm7ehu2vjmlflwepddpeth4", + "time": 1698747864 + } + ], + "validationError": false + }, + { + "dpid": "113", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig2nlksggv4ghb24xw7ng23klrttx3kiu3tdlnsa2gcn2zacpmxa4", + "time": 1698782484 + } + ], + "validationError": false + }, + { + "dpid": "114", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibsaosbasq6er4o2mkovemlp6tgppyeudue6lsx6dbznba56omd6e", + "time": 1698782652 + } + ], + "validationError": false + }, + { + "dpid": "115", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaqt4amqtdha2affz4caq6qrl3uzk4zutwfnzcc6ba5ziw6itc2ty", + "time": 1699355412 + }, + { + "cid": "bafkreichmxylugiwhtrhomfjc7njdmp6isfivmdsflhmuzenzxnyl76m5i", + "time": 1699355784 + } + ], + "validationError": false + }, + { + "dpid": "116", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreid4spqoyg2mk2r7bcju6vkxsgtcx2fl27tyivtvrvnwlqgn26udn4", + "time": 1699608000 + }, + { + "cid": "bafkreiejv6ymnxxum5c67qpkvp2eevgy7rgksq7vhzgyfxg5riwl33lzqe", + "time": 1699887960 + }, + { + "cid": "bafkreibechybrdrnwlsg3unh2pgxg2jgekg653h37e4xzc3wazyzcjzegq", + "time": 1699954776 + } + ], + "validationError": false + }, + { + "dpid": "117", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiepbbtkhudgspd6dr4rnckaqwdenedehsvppkyakute6z36bplgpy", + "time": 1699954800 + }, + { + "cid": "bafkreids7cf6gagvaxbmammx6ekl4e3xwhcyw33vkqmy5ml2m4epvpjwua", + "time": 1700053860 + } + ], + "validationError": false + }, + { + "dpid": "118", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihv7uzjstazrksvrdwrt6j3oqiw73oqi2krvwlzojbo5yhrfrpcu4", + "time": 1699979532 + }, + { + "cid": "bafkreifwnjaykar4vdhcpyimr73hklty7nqnm77u37rzmdyhldtlleycfy", + "time": 1702053972 + } + ], + "validationError": false + }, + { + "dpid": "119", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifisxmqzztc3zgleheiakn4xn5w7ze6ap5iynom46djxue54nvk5i", + "time": 1699983900 + }, + { + "cid": "bafkreihhg6k56gey42vldxac36u3ueleq4nzrm2zw5fxfcdmwcdrfyjpci", + "time": 1699984152 + } + ], + "validationError": false + }, + { + "dpid": "120", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifonv6z5enzbl44kwvh3i3m5stmagckblhfp4skmilmt72ff3dthe", + "time": 1699984440 + } + ], + "validationError": false + }, + { + "dpid": "121", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreig7g2zbirxw3spdxicv6igvu4t2frzdbipzh4q2lp7a7vzsnktdym", + "time": 1699984896 + } + ], + "validationError": false + }, + { + "dpid": "122", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidhtfpm7qcv36eklavzuhq7dxbfq7a2o3ovv6q55qubyr7xnvpnm4", + "time": 1700005716 + } + ], + "validationError": false + }, + { + "dpid": "123", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifuyc6nxavordwnewceq6tdzbzs4u5u7eiohs2lflwabdmhrrcxtm", + "time": 1700006352 + } + ], + "validationError": false + }, + { + "dpid": "124", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiccwsruwcne5ctm4bdarr6772xgxqdcy3jg66rthmd5iaq2hnexgi", + "time": 1700046408 + }, + { + "cid": "bafkreihi36k65e6jlytud7hcvtxru2xbkphtxbdu3xx2pkm53qwb5mjzge", + "time": 1700046432 + }, + { + "cid": "bafkreiezsp3ibhch3wf4arb4ies65exfex2isowpfsrrlq6pyvatiexr5q", + "time": 1700046552 + } + ], + "validationError": false + }, + { + "dpid": "125", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidsdl7s6pqakmfhfvcauof7ovylegxa5nwp2dxuxd5rbb27vsk4d4", + "time": 1700057772 + }, + { + "cid": "bafkreidjcemwjx3ljeuja3lety52fksvk2ojukxkxudbnwu7kgse2zz3tm", + "time": 1700058384 + } + ], + "validationError": false + }, + { + "dpid": "126", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib6z6ysfnyw6k6ly7cpdp7qjcjbbvjoffn4ppiarimmk33sbxuoy4", + "time": 1700059584 + } + ], + "validationError": false + }, + { + "dpid": "127", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibqnmfw4jhrjk4ggz63kqtti7rzxroutotrrey2j37a3ad2wfuojm", + "time": 1700063400 + }, + { + "cid": "bafkreifgaoapp6ku2zt3awb3svh3ol75stczvu2bon373bit4whaneb2lm", + "time": 1700063832 + }, + { + "cid": "bafkreibbb2gkxihablys2fjtrecr2tvfbujyulblivfqn4jsl6hyx5dghy", + "time": 1708492476 + } + ], + "validationError": false + }, + { + "dpid": "128", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihjgheci62x27bgduapkcmwbxldpwyk5af5kqvbpq2nmfmtfxdmmm", + "time": 1700063832 + } + ], + "validationError": false + }, + { + "dpid": "129", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigtnznzipcb6j4ufpnmde3e66pzl53n7etkxjj4waorkc2vfzban4", + "time": 1700754096 + } + ], + "validationError": false + }, + { + "dpid": "130", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiaiwepaj5h3ueggcvsp7rs6zsu5emvcbxg4aantq43mjrvkb46t5i", + "time": 1701434724 + } + ], + "validationError": false + }, + { + "dpid": "131", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidw5k6li7ex6goxdky37t6obgd3472rbgygmvu5rnf6iiptrqkmiy", + "time": 1701702708 + }, + { + "cid": "bafkreiaa4eh2bmuwlutgnvnbbd64npfqdlzxzc75li5pzhlmdkrvj5qjrq", + "time": 1701703056 + } + ], + "validationError": false + }, + { + "dpid": "132", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifqxy2ie6a5gwqwjdrjzpuer3d5dwb4sauljj6coojnzprlvfes2e", + "time": 1701788316 + } + ], + "validationError": false + }, + { + "dpid": "133", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifyxvaek2nsdtke62wviupn7qqtgzeucrpe5c66lrycvtvestkkau", + "time": 1701795900 + } + ], + "validationError": false + }, + { + "dpid": "134", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigu4xxysvqtf6cicat3iheugi6g45vsgnptbrht6p6om3txvsttye", + "time": 1701872976 + } + ], + "validationError": false + }, + { + "dpid": "135", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihf45jsg5rnkpv2mz2wwpf5w3u6ixu765a5hckam3j3fbl5i2tgbq", + "time": 1701875664 + } + ], + "validationError": false + }, + { + "dpid": "136", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreih5g3pbinh264nuwgvsuerueucgpacv5ytill4sbxt7zsexgfntqi", + "time": 1702142316 + }, + { + "cid": "bafkreiaitokvbuwllmihafculxuniwiydtl2cuuuhqbmkuvpk62uuhmu4e", + "time": 1702145736 + }, + { + "cid": "bafkreifyo3tzgp3bp7a7zwxym6lskt567rdvjn4t334dczglkvgbpglla4", + "time": 1702202688 + }, + { + "cid": "bafkreif4yaj5za2adpy3wmklbstwpaciobl3j4uwcwrwcri7bbkcvwik6q", + "time": 1708382904 + } + ], + "validationError": false + }, + { + "dpid": "137", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiebtockthsjrwsikbjshzdikjsa3j35avolyabw2zl5nxd4np2qa4", + "time": 1702430448 + }, + { + "cid": "bafkreig5muvzq5a5whji264zbzpkd452kqiswo4on3b3waibrwcte6n2jq", + "time": 1702439796 + }, + { + "cid": "bafkreie7zyrvboq3ygb3tm74qkuvbldwq3ocdltnz6lngud3s2fpdaquiy", + "time": 1711224288 + }, + { + "cid": "bafkreie7zyrvboq3ygb3tm74qkuvbldwq3ocdltnz6lngud3s2fpdaquiy", + "time": 1711224408 + } + ], + "validationError": false + }, + { + "dpid": "138", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiezlcl57kasksq7hwdqxsffpqloek4jbr4vrvausbg6ozsrnwnkfq", + "time": 1702512600 + }, + { + "cid": "bafkreifxevx7yu5noaquu4bojmyl6pubqotkp4wsbjpd6vbz3neuk7nlxu", + "time": 1707153744 + } + ], + "validationError": false + }, + { + "dpid": "139", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreictkrrk3arfcy4rstvjjtpwrw3yf7wdgxepf5z2cmjuiv2igkdlnm", + "time": 1702512876 + } + ], + "validationError": false + }, + { + "dpid": "140", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibz4nvkwdmqxmtxefklebrqrhbbhias3bvt7moko5jgw6hopkhwga", + "time": 1702513068 + }, + { + "cid": "bafkreifbhbxfm6s6djz5taz5buthqlpy2cruaysfnixojzubwgkprsbq4i", + "time": 1708801020 + } + ], + "validationError": false + }, + { + "dpid": "141", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifkjw3mjt4ib4dhjjpn2sbv3oqf4c5mcf5n7zlggynvvqlwksdxay", + "time": 1702513164 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + }, + { + "cid": "bafkreiabv34brs4dnbivmzfyggc2ryaxs7zlb3x3zh2ynie53suktlitva", + "time": 1708802436 + } + ], + "validationError": false + }, + { + "dpid": "142", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidll4iaylvaplqqqotp3e7bolx3qgqnjkzliplbhdz7v7dcrdn65q", + "time": 1702513344 + }, + { + "cid": "bafkreieszmyc5ph43ft77gk4pj5emhuy53if6vjbeejzxbrtusxb3ouq54", + "time": 1708802160 + } + ], + "validationError": false + }, + { + "dpid": "143", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidjonu3vhm5vd5fogs3zrjzq3qcajjkpvwwj43gdqn2swiops5glm", + "time": 1702513392 + }, + { + "cid": "bafkreih25vwbntxxybpsxctpg5eqi6f7ewcwzqzpklifbfqffcrbs65k64", + "time": 1708802052 + } + ], + "validationError": false + }, + { + "dpid": "144", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieogvypbmg7vgut2f76b33kql6cw4vstzm4f7asoenfzh2rudpekm", + "time": 1702513452 + }, + { + "cid": "bafkreib3b6ztd5tyebhjtxsj4dpl2nw3bipejak5n3zz7u7ta3et2ghyoq", + "time": 1708801908 + } + ], + "validationError": false + }, + { + "dpid": "145", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibbu3bk7ucli5yaikmcwdduigaien2dqb2bzq4af6ufzrmu6vswty", + "time": 1702513524 + }, + { + "cid": "bafkreig2mtcbf6eu2vraqmy5ftukn4i6fgeiwfou2znswwss5sarsotmcm", + "time": 1708801680 + } + ], + "validationError": false + }, + { + "dpid": "146", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreied3q6xs3itsgvjgeybu5cnmuuds2puklksrhfvy4ofjddo3nkyle", + "time": 1702513584 + } + ], + "validationError": false + }, + { + "dpid": "147", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiapkcqpkavfwqc4id5mb7e46n3f5nr5uig4ik7bwaxk7a5tox2ztq", + "time": 1702513620 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801212 + }, + { + "cid": "bafkreifxvagntjqfpzrigsjfajflqatzk4dogq56lqotaqjv7d3iugdrtm", + "time": 1708801236 + } + ], + "validationError": false + }, + { + "dpid": "148", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibgprhlr22zfwgrm7y3kx4jxslpozqp4pmofsrj5tbqpkaxi5glpe", + "time": 1702559448 + }, + { + "cid": "bafkreieqjqllffddjuraswoq4pm5d5cd5eu2knqe6yie7rj6aufujtct4e", + "time": 1702907160 + } + ], + "validationError": false + }, + { + "dpid": "149", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigcc2l7aay34i5zeot5wjvpspdpwp6ipfzffs3cnnpbpt7c2gqu6i", + "time": 1703003448 + }, + { + "cid": "bafkreig6lp6265u42llqh6hkzxc54hmyfea7ax7gewg7tdyvthieotmwpy", + "time": 1703003868 + }, + { + "cid": "bafkreici3wzz7njqigyo7ebzwn3kibxgwjr43ihowwebl4exmfy75tkpjm", + "time": 1703072388 + }, + { + "cid": "bafkreicgxdcypaq5tmmrrva3tl7k2un47pfolg3mox72j5k65zitsukfii", + "time": 1707406116 + }, + { + "cid": "bafkreie7j6ji7ynh5d5yoldoxfevak55nkmcx5h7v3c6h4xy7le25sbgke", + "time": 1709143824 + }, + { + "cid": "bafkreic4vm34jfrdp3qu7bx7np3qhvrxlwx5gkn3kf3c4pv6mzbavc3twu", + "time": 1716286500 + }, + { + "cid": "bafkreidsqfd326zx3svaszqm76arwjsonwxpzer24keqt7lv3bpgt5guzu", + "time": 1717067124 + }, + { + "cid": "bafkreid5jzrqitombqlytxoyb36q5avzmxkmxl2nyidtv3pho5godqxbim", + "time": 1717607268 + }, + { + "cid": "bafkreid5jzrqitombqlytxoyb36q5avzmxkmxl2nyidtv3pho5godqxbim", + "time": 1717607316 + } + ], + "validationError": false + }, + { + "dpid": "150", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif3aoauxavq7sxibkysi4kemqdwbcez4cjtmzoou46bj44r2rc3sa", + "time": 1703205816 + } + ], + "validationError": false + }, + { + "dpid": "151", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicqe2blgjarm3bg6jon5sjvmu773bnuajfnkmlnvo5hd5uj2yr234", + "time": 1703212224 + } + ], + "validationError": false + }, + { + "dpid": "152", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifiy2ipxllse5z6kspsspgt247eadivoij736j3yehwe6cy5rn6ny", + "time": 1705091376 + }, + { + "cid": "bafkreihvutuhtiehsoyc66u7a7bncnqfhoosynejagkykkfwa7gkr2rsta", + "time": 1705091496 + }, + { + "cid": "bafkreiekobyktiisailjk2sauqxembzyqe26z7i7mxkl6xidhhlb62wnyi", + "time": 1706832732 + } + ], + "validationError": false + }, + { + "dpid": "153", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigr54hmercrddm2nnyo46yfn3w466zeoawph7k23swzr5v6lobcjm", + "time": 1705491780 + } + ], + "validationError": false + }, + { + "dpid": "154", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidzawjc7uaskxy2a55gfd3pjqssl5v6nfqj4ghziglbdfuk3arfri", + "time": 1705579488 + } + ], + "validationError": false + }, + { + "dpid": "155", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieqqvt2bx34g44zombuj254dzqng5l4bjc33vnuduiaklfjf7jrza", + "time": 1706550924 + }, + { + "cid": "bafkreih4hi7mhwe3uwmf2xa4lfpgmqlt4o5vagzqqr3c54alnnl5wr3r4q", + "time": 1712673828 + }, + { + "cid": "bafkreicamnoitiweehqqlvfa6xmoq7qoooz7kvbuhqy3tdoralmjgwrju4", + "time": 1712674440 + }, + { + "cid": "bafkreidl3wopg6piqc5xba3tvtfcxsvldxcudax4mmwzjtgwsu4hj6t5je", + "time": 1712765676 + } + ], + "validationError": false + }, + { + "dpid": "156", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibhuuogniwgsozq6zqgpfg622ktaz4e4xtspvxv6be7zoaknlp7oi", + "time": 1706735148 + }, + { + "cid": "bafkreicmyxjhueivvlucnysc5sgmdnxgsmn5wryaodmdwl7xhku5o4dwki", + "time": 1706737632 + } + ], + "validationError": false + }, + { + "dpid": "157", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreificypwhqbtu4acdrxgbzdrpbw5dncxrcwtskrebhv53trsk23ive", + "time": 1706738172 + } + ], + "validationError": false + }, + { + "dpid": "158", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreigmgjpsfxzshdvozllx3m6s5ubiulcx7yumhe7armganzdiu42feu", + "time": 1706834520 + } + ], + "validationError": false + }, + { + "dpid": "159", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifl7hhai6p5podahrcse5ocklgf2qdayw33raeaugk4cjgugroupq", + "time": 1707473772 + } + ], + "validationError": false + }, + { + "dpid": "160", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifjtpqkpatgmy4jpmhsepfvpv2gmiofgyh6qpinfnstyrsufickua", + "time": 1707644916 + }, + { + "cid": "bafkreif2hl47drgqwb6qay5dbdmmm4ivbcfus3wromwaho2wxine6niudm", + "time": 1707645552 + }, + { + "cid": "bafkreihopqbkiidgwszltgcx3cp3n5m3vkfcyqf5tktaf7zpikdwqkpkmu", + "time": 1707646572 + }, + { + "cid": "bafkreih7n6cnpgftyn3paqmvvd3bfm7hna7qqgwlqhcpldjtdwabvg5syq", + "time": 1711656132 + } + ], + "validationError": false + }, + { + "dpid": "161", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreialnzhaztvhuvwkzpqlst7w3yttviws5tcpdnwvggdmxnx2ydzere", + "time": 1707848244 + } + ], + "validationError": false + }, + { + "dpid": "162", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieowcw35rvuvocaupds5fsremm4h6j3cris5sscfjun4o2e4bccla", + "time": 1707967356 + } + ], + "validationError": false + }, + { + "dpid": "163", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif4554qs4ppds7364pfeqla623ebon5nlvs5m53ecw4jhdkmtnfre", + "time": 1707967740 + } + ], + "validationError": false + }, + { + "dpid": "164", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidn5fdrmh62nc4r3g5paqija32flksc23evsc5akqoqftkwfeqm2i", + "time": 1708094712 + }, + { + "cid": "bafkreibpaflwrfhygpheciwlemvahtkkwdgg35dnevu25rid46iae2ws6i", + "time": 1708453920 + }, + { + "cid": "bafkreif7javbr3hrnuwmoggv7dtprs7axcsdldsqpwmpfcdizy5bk2tfxa", + "time": 1708514124 + } + ], + "validationError": false + }, + { + "dpid": "165", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicv2zf35h43m656h2734du5ynp2zctedwxkgwtbhubg34oenhhexa", + "time": 1708109700 + } + ], + "validationError": false + }, + { + "dpid": "166", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibfvwqckon265lpmjuinzlg6ebzo4s6dtgh7invz2prf766bvuodm", + "time": 1708372176 + } + ], + "validationError": false + }, + { + "dpid": "167", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreige2oxxkk4rboadjcxlvwbvlun3e4xmrxp4qtqvdmjdfzhptuyf5a", + "time": 1708458984 + } + ], + "validationError": false + }, + { + "dpid": "168", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiftjc6urzlqlcffupjwnezhfash4tlvgy2qnstu2vpp6tdk4zpmma", + "time": 1708493796 + }, + { + "cid": "bafkreic4hj66auaehgtgoz6zzks2w2r7lsxhrisjuh7dbfipvgmkhfpace", + "time": 1708690584 + } + ], + "validationError": false + }, + { + "dpid": "169", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidguz57tkqtmta44oov6jkgxxeg635asddp2belouydyxjndukspi", + "time": 1708495980 + } + ], + "validationError": false + }, + { + "dpid": "170", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidyakyvrrmovwk4ddfw2fxtgkl3f4coef75pybncmoa55jnlxx6tm", + "time": 1708501884 + } + ], + "validationError": false + }, + { + "dpid": "171", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibtajzmf7ty7hhyclz4aj5f74mktbj4liyhobvs3qr7nebqprl2yi", + "time": 1708516896 + } + ], + "validationError": false + }, + { + "dpid": "172", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreicenejlzy2ygk6vflo4xhr7hjqe22nz5f354afoo5pc65d6qf2ojq", + "time": 1708523184 + } + ], + "validationError": false + }, + { + "dpid": "173", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531344 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531620 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708531992 + }, + { + "cid": "bafkreie23vmvink27bqo7qzzsdng4ho22uhrgoscencr7s4itekrzreahy", + "time": 1708532064 + } + ], + "validationError": false + }, + { + "dpid": "174", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidobtwdrk7dulyc6dghfr6zylbfisjwbs6l6ahd6qfkfdavs76dpa", + "time": 1708602732 + } + ], + "validationError": false + }, + { + "dpid": "175", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreignopdmerljfo6nzpq2hj5zr5g7h3wajjxthpuikxjpsdbco4tavm", + "time": 1708619376 + }, + { + "cid": "bafkreiae65pw54dt5vx75oenehagushpi2sh42c3zqld7der3ircmfyqam", + "time": 1708653516 + }, + { + "cid": "bafkreihm7iuibrdzlr5uyrhhkyijboyheeujettcihcgmegrna43mmvs6a", + "time": 1708672332 + }, + { + "cid": "bafkreicjzr7d4odl6dzvx3acnng3cwq5sptcjn5wbqeep4juymadohagfi", + "time": 1708674912 + }, + { + "cid": "bafkreihdgbp3rrimo3sfayouabpfy5awspr6lues5rj5pjld2mcwi5ftsm", + "time": 1708729500 + }, + { + "cid": "bafkreidpouvko3ht6dkhplrx44r4cbycx4irvw6mnunven3x2mll5kgaie", + "time": 1708890600 + } + ], + "validationError": false + }, + { + "dpid": "176", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidwx6vv43n4vyd2gvnc7a7hoalg3nj6ncuxtzete7bay6lgkdjrji", + "time": 1708695348 + }, + { + "cid": "bafkreibjcr22ex3uibpoxf3fpzriafscmbivizzkqrjx7iqh5qbkg4oizq", + "time": 1708695612 + } + ], + "validationError": false + }, + { + "dpid": "177", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihnul5baol6hg5vsq6sokqwbm5txyb5honlphs3rpjklc4d7pj4qi", + "time": 1708882260 + } + ], + "validationError": false + }, + { + "dpid": "178", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibnvu2kmntm4p2ttebfqukas5hdzzthyahkkgxizihb4f3fwvszoy", + "time": 1708900272 + }, + { + "cid": "bafkreibax2nwfvcmewzi4muxbtywulni6zvvihnipob3hvweohuu3lmawu", + "time": 1708900680 + }, + { + "cid": "bafkreiaicia5j7xdpo5gr3nukomg7kylxpnyfiguflr7ff5z6v45rbg3om", + "time": 1708909188 + } + ], + "validationError": false + }, + { + "dpid": "179", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiekmumtbr6fg6ksitwx3744knbituhthjis3mnd5facdbqc6526fy", + "time": 1708930572 + } + ], + "validationError": false + }, + { + "dpid": "180", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihyn2pm7mqzcjabytkoszcetquu4q6zouwaeqhp6bavvlmijqvj2m", + "time": 1708965960 + }, + { + "cid": "bafkreigksvcw5f67h2kzbxnndwf47ch74nb4vbniepacjt6y5nm74ote4m", + "time": 1708966848 + }, + { + "cid": "bafkreifhzq76yqo66hcvcj2e7554odbcppblavfrobmyuxynaj2wv2ydlm", + "time": 1708974048 + } + ], + "validationError": false + }, + { + "dpid": "181", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreieqzlofquf3yakkfcqwzzg77ea6qrirnbli6iedpeo5zk2hktedfe", + "time": 1709032560 + } + ], + "validationError": false + }, + { + "dpid": "182", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070444 + }, + { + "cid": "bafkreidjaowinhp5e3m6ikq32mfgqg5mqw6ttzccngl5aa2imyryscenjq", + "time": 1709070600 + } + ], + "validationError": false + }, + { + "dpid": "183", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreihfy4ibvcrdxlq3n6y6ahskxglvyhskwugy7xwi4amk4dcek7hvvi", + "time": 1709074644 + } + ], + "validationError": false + }, + { + "dpid": "184", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreif4pg7ph3qxuj4yoapw4tez3jxt52m5fhp7nkd3q2ai4xrwva46oq", + "time": 1709709132 + } + ], + "validationError": false + }, + { + "dpid": "185", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreibbt24dc64gwzwhcjtyha5qsdvmj4ztlkbhg7p7s74hjpdlrveo5a", + "time": 1709710296 + } + ], + "validationError": false + }, + { + "dpid": "186", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiezmycqcs3426uhlpamwfidxlt72njmc22cuma47fxx5e3oi7zrpq", + "time": 1709713596 + } + ], + "validationError": false + }, + { + "dpid": "187", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreiemcbfxzi5v3sjiztw4zqs7ngbbirmbcza2sxag4ur4gx3jc57weu", + "time": 1709713968 + } + ], + "validationError": false + }, + { + "dpid": "188", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreifc7blw4sfdrqqyinooyk2zajg4kvobazfpxmmyxhky67xyrtg2bi", + "time": 1709717856 + } + ], + "validationError": false + }, + { + "dpid": "189", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreib5w5wqatnhuuekzdmqe33ci4jmczwtcw235mdugsk6sbjkewhycq", + "time": 1709718156 + } + ], + "validationError": false + }, + { + "dpid": "190", + "owner": "0xF0C6957a0CaFf18D4a18E1CE99b769d20026685e", + "versions": [ + { + "cid": "bafkreidlwnin6u3lbb5me7gsaomtrz3xfxruteb3oqvng2isup6dq2md2u", + "time": 1710044316 + } + ], + "validationError": false + }, + { + "dpid": "191", + "owner": "0xec29aCa1a8740B8C5e2e06EBB52290700B9a2c40", + "versions": [ + { + "cid": "bafkreiekjqv27pmrf3tk6tn4mimvbivhtln7jefgjmzeui6vm43oes2giy", + "time": 1711113468 + }, + { + "cid": "bafkreiekjqv27pmrf3tk6tn4mimvbivhtln7jefgjmzeui6vm43oes2giy", + "time": 1711115796 + }, + { + "cid": "bafkreiekjqv27pmrf3tk6tn4mimvbivhtln7jefgjmzeui6vm43oes2giy", + "time": 1711118604 + } + ], + "validationError": false + }, + { + "dpid": "192", + "owner": "0x955bcC4a744f7a63c064bcDCb41d3da32ab59fA2", + "versions": [ + { + "cid": "bafkreif7cyujbmdodoxfmvwg7vtllo57eqyl4jqx2ldugcdgbn4l37aide", + "time": 1711224600 + } + ], + "validationError": false + }, + { + "dpid": "193", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreifxdilgiuozcbyxrbmyij3rh5a75br7ree7finitlfgpdgsuovbu4", + "time": 1711371324 + } + ], + "validationError": false + }, + { + "dpid": "194", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreibir2ytu4y3ckuntnyq4bd2hn7e7v4st4qznhmymulunoag6htkli", + "time": 1711371840 + } + ], + "validationError": false + }, + { + "dpid": "195", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreibwwiqyfdk57mulox3kkndbjzrpauwifhjlx4a5mcd3xyghi3phnm", + "time": 1711372188 + }, + { + "cid": "bafkreibwwiqyfdk57mulox3kkndbjzrpauwifhjlx4a5mcd3xyghi3phnm", + "time": 1711372224 + } + ], + "validationError": false + }, + { + "dpid": "196", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreib2bldqjixzqdxfgawln7nkmho7au4cu4vpp3luyziih6i5v24fyu", + "time": 1711372332 + } + ], + "validationError": false + }, + { + "dpid": "197", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreibckw6mcb7w6ocnrftdcj5ua2ynp44athn37uj5a2luejt4sbag74", + "time": 1711372704 + } + ], + "validationError": false + }, + { + "dpid": "198", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreig2oyjlgt2tm5o5w66lroxithj2yyokcgiirlqgtxi2rx5fmcnl3u", + "time": 1711373136 + } + ], + "validationError": false + }, + { + "dpid": "199", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreia6bshsvigqmwl6gczqkekbe6n5vrm5oqk4mlpqxzuqvm6pnvcz4u", + "time": 1711373508 + } + ], + "validationError": false + }, + { + "dpid": "200", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreiaj3hoxxa6ejl6wbbxmj5yyvwgjbxqcwvutbuffjdmz6bjo4aeuua", + "time": 1711373664 + }, + { + "cid": "bafkreihuphbjewu6gy7bhu3pojq4wzauo4eysrjwf2yjqxauakfm2oycwa", + "time": 1711895628 + } + ], + "validationError": false + }, + { + "dpid": "201", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreib75qhje5orxp6x73krgk4gxs4zjma235jakvaz7nmjmidxotqvay", + "time": 1711373808 + }, + { + "cid": "bafkreidfhctv5tsybphthhsi64pvjtnfqal6u4yio7ntuossddyoeqktle", + "time": 1711895736 + } + ], + "validationError": false + }, + { + "dpid": "202", + "owner": "0x93aF2e3057F7A1dEec2bEDaB92014372529917b2", + "versions": [ + { + "cid": "bafkreihw7nmfo37bcnovdiuarejedgnesfbjcrx6yfylnapsruv3cxmwca", + "time": 1711379508 + }, + { + "cid": "bafkreig7tkfx63cprx4p62exwlob3fdpnbz67732yivzjvvp4upvqvtaue", + "time": 1711388652 + }, + { + "cid": "bafkreiefzc365jagtqbqlay6enzcetdqntxmpnamknxvub523cbqe5vhii", + "time": 1711535616 + } + ], + "validationError": false + }, + { + "dpid": "203", + "owner": "0x711E9b9e8aD75CBD3AC024a8e4Aeeff59AfBae6c", + "versions": [ + { + "cid": "bafkreicatliyp3ucb74vsyjutro5gj3f4ido7g2g3lpqq44mejhnft4nhe", + "time": 1711480872 + } + ], + "validationError": false + }, + { + "dpid": "204", + "owner": "0x711E9b9e8aD75CBD3AC024a8e4Aeeff59AfBae6c", + "versions": [ + { + "cid": "bafkreihzsc3ukfifnwrn2pwbi7nslahwducpjpanw6whgnmlqrzmzudboa", + "time": 1711483248 + } + ], + "validationError": false + }, + { + "dpid": "205", + "owner": "0x711E9b9e8aD75CBD3AC024a8e4Aeeff59AfBae6c", + "versions": [ + { + "cid": "bafkreib72txikuh4u63nb3jtsxj4r3q7cdeaaq7lzwejqjchminj7smhhu", + "time": 1711484040 + } + ], + "validationError": false + }, + { + "dpid": "206", + "owner": "0xDAF8752DDcCE8a6B709aa271e7Efc60F75CDDF64", + "versions": [ + { + "cid": "bafkreigwpvacu6jfho5bn3dh6kddxjxcz3tmp5ukglfds2vgqbetburmyu", + "time": 1711485180 + } + ], + "validationError": false + }, + { + "dpid": "207", + "owner": "0x3946A420ac849229918AE4C27e4CED2299646b03", + "versions": [ + { + "cid": "bafkreif5vmdusp7spdvopv6gtiaywnxf566hvxqj4y5xajxslad5hjoomq", + "time": 1712129772 + }, + { + "cid": "bafkreianwyrn4e57d5ebpnrxnxnwc7j7t6x7sbm3tyib7gzu4dugt23qlu", + "time": 1712130636 + }, + { + "cid": "bafkreihn7si3rxrrgwie53k4w4nuaztmq3eajbvv2gdesfos3bgpdjgl2i", + "time": 1712134152 + }, + { + "cid": "bafkreiawd2bsrkwxrsqfsxuxgxbilgs3zzbosdruplsklludfmuprszgli", + "time": 1712143392 + } + ], + "validationError": false + }, + { + "dpid": "208", + "owner": "0xF84bb22037D7977f78FefFBA75D1dda938B73E2e", + "versions": [ + { + "cid": "bafkreicjmmge75m2pcqhi2iiae5ab2byztxbcnyukyljje7s3nefbsmdwe", + "time": 1713698724 + } + ], + "validationError": false + }, + { + "dpid": "209", + "owner": "0xF84bb22037D7977f78FefFBA75D1dda938B73E2e", + "versions": [ + { + "cid": "bafkreidye2q5xg5mqqbfup32fvs7hkg3lpwbcl3kojzu67vmtnavopwrea", + "time": 1714405584 + } + ], + "validationError": false + }, + { + "dpid": "210", + "owner": "0x72Dc927773e3d453Fff9B083C45eBE9d256Db16E", + "versions": [ + { + "cid": "bafkreifbpagid6fj4gp2z3qbynl7w676ulpnv5lqgibhyf6a4ckgdzdt7y", + "time": 1714769952 + } + ], + "validationError": false + }, + { + "dpid": "211", + "owner": "0x9381995264d304e514Ad3Dfe5eF8C79341D1C5b7", + "versions": [ + { + "cid": "bafkreibm2j2doneeuabi6crd3bguaj3ua4c6hpwrtfzje762noq63rkrhy", + "time": 1715358132 + }, + { + "cid": "bafkreibm2j2doneeuabi6crd3bguaj3ua4c6hpwrtfzje762noq63rkrhy", + "time": 1715358684 + }, + { + "cid": "bafkreih3nstwkg6iakafg45kwshw6db4hhshsuhkwruebe5ziydzevmney", + "time": 1715866908 + }, + { + "cid": "bafkreih3nstwkg6iakafg45kwshw6db4hhshsuhkwruebe5ziydzevmney", + "time": 1715868780 + }, + { + "cid": "bafkreih3nstwkg6iakafg45kwshw6db4hhshsuhkwruebe5ziydzevmney", + "time": 1715978748 + }, + { + "cid": "bafkreifgflgcb7ldns2k5eobjqzo566zt4d7hisqzo3tav5flyc7sprpyq", + "time": 1716021840 + } + ], + "validationError": false + }, + { + "dpid": "212", + "owner": "0x48801eB4DD5e49A9849055ddfD2388f704d96701", + "versions": [ + { + "cid": "bafkreic7t74rbgla2l5jv6dafmtccpzqkechgweeyqqs7tsyemvc3jefae", + "time": 1715851488 + } + ], + "validationError": false + }, + { + "dpid": "213", + "owner": "0x08E424b69851b7b210bA3E5E4233Ca6fcc1ADEdb", + "versions": [ + { + "cid": "bafkreiezhimuxptmz5n6yimve6ydawge4ghihw3r7u45ky65c2ryaqqmce", + "time": 1716409680 + }, + { + "cid": "bafkreia6tgjva2f2bgjs4x3w5t53iiauj6c72o3nurztlc5pzcnicuciou", + "time": 1716826812 + } + ], + "validationError": false + }, + { + "dpid": "214", + "owner": "0x0F81A4d0553f09767027B4c15D0C374B939Cd5F1", + "versions": [ + { + "cid": "bafkreih7ayew5fbjl6qswqxhczbnpvjocbrh25sndnausewyvzyqfqfn3i", + "time": 1717068456 + } + ], + "validationError": false + }, + { + "dpid": "215", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreiamkomiad6wgakicshmb2jbttwkzvl3pvz7dg3dk4limjudjs7fze", + "time": 1719238548 + }, + { + "cid": "bafkreicgr4sw55zkzcvsymlbzuwycyumbaxbddsfs4fmpqgop26ao6kwai", + "time": 1719239016 + } + ], + "validationError": false + }, + { + "dpid": "216", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreiahiziyaeq433h3kcujkgiiv5ttk3ouls6clr66o3t6dfaecmjleq", + "time": 1719238956 + } + ], + "validationError": false + }, + { + "dpid": "217", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreif2l2vqwzocmgmfyy2ejvrqd5uhhrzkqk45hthwcw4mt4oz7i4u7q", + "time": 1719239808 + } + ], + "validationError": false + }, + { + "dpid": "218", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreigldutspcrrahapdsj7sr4zrikxirwsjbqvrcuzlwwyuk2zhtho2e", + "time": 1719240072 + } + ], + "validationError": false + }, + { + "dpid": "219", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreifkiw3ckd6n6nkzhx3benfz2ct4acqrq3kaepv2dod4b3twwnxsti", + "time": 1719242676 + } + ], + "validationError": false + }, + { + "dpid": "220", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreift27e5crnj2osffmq6rmbrxaade74cang4gjwwo6eurf5owodm2a", + "time": 1719242796 + } + ], + "validationError": false + }, + { + "dpid": "221", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreic6ief4i2lfgi7mz27nqxn7usvs7huh77nmzpactmi63v6dbzv2nq", + "time": 1719243324 + } + ], + "validationError": false + }, + { + "dpid": "222", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreiaurllsr2nc4ejbuq2dc35aftk3din4l7fumw2csslajq43e67tsa", + "time": 1719243792 + } + ], + "validationError": false + }, + { + "dpid": "223", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreig2zp6cnz2sifbdtwliamt2edelxvdioc5bph4pxetkvknfvavfvi", + "time": 1719244032 + } + ], + "validationError": false + }, + { + "dpid": "224", + "owner": "0xBaf4a58783150abaAec703E43e6cca151D4Ff475", + "versions": [ + { + "cid": "bafkreicuitjqpveaxjoqil77g5l2apesvrmowym5p5n4b4xbneh5eonaay", + "time": 1719244260 + } + ], + "validationError": false + } + ] +} \ No newline at end of file diff --git a/desci-contracts/package.json b/desci-contracts/package.json index d52bbebf3..2260c9b8c 100644 --- a/desci-contracts/package.json +++ b/desci-contracts/package.json @@ -1,7 +1,7 @@ { "name": "@desci-labs/desci-contracts", "description": "Smart contracts implementing DeSci Nodes on-chain state and logic", - "version": "0.2.3-rc3", + "version": "0.2.6", "license": "MIT", "scripts": { "test": "hardhat clean && hardhat test", @@ -11,6 +11,7 @@ "docker:push": "docker tag desci-hardhat-node:latest 523044037273.dkr.ecr.us-east-2.amazonaws.com/desci-hardhat-node:latest && docker push 523044037273.dkr.ecr.us-east-2.amazonaws.com/desci-hardhat-node:latest", "deploy:ganache": "yarn stubHardhatAnalytics && hardhat run scripts/deployResearchObject.js --network ganache", "deploy:dpid:ganache": "yarn stubHardhatAnalytics && hardhat run scripts/deployDpidRegistry.js --network ganache", + "deploy:alias:ganache": "yarn stubHardhatAnalytics && export FIRST_DPID=500 && hardhat run scripts/alias-registry/deployDpidAliasRegistry.js --network ganache", "migrate": "hardhat run scripts/migrateToNewContract.js --network ganache && touch ./.openzeppelin/migration-complete.json", "graph:codegen": "graph codegen subgraph/subgraph.yaml -o subgraph/generated", "graph:build": "graph build subgraph/subgraph.yaml", @@ -40,10 +41,12 @@ "@typechain/ethers-v5": "^9.0.0", "@typechain/hardhat": "^4.0.0", "@types/chai": "^4.2.21", + "@types/chai-as-promised": "^7.1.8", "@types/mocha": "^9.0.0", "@types/node": "^16.4.10", "as-base64": "^0.2.0", "chai": "^4.3.4", + "chai-as-promised": "^7.1.2", "cids": "^1.1.9", "dotenv": "^10.0.0", "ethereum-waffle": "^3.4.0", @@ -60,5 +63,6 @@ "ts-node": "^10.1.0", "typechain": "^7.0.0", "typescript": "^4.3.5" - } + }, + "dependencies": {} } diff --git a/desci-contracts/scripts/alias-registry/README.md b/desci-contracts/scripts/alias-registry/README.md new file mode 100644 index 000000000..4b123c939 --- /dev/null +++ b/desci-contracts/scripts/alias-registry/README.md @@ -0,0 +1,41 @@ +# dPID alias registry scripts +These scripts are used to interact with the dPID alias registry contracts. There are two deployments, `dev` and `prod`, which correspond to the environment for the previous dPID token contract and registry. Both of these envionments currently live on Optimism Sepolia. + +The contract is `pausable`, and deployed in a paused state. For dPID minting not to revert, the contracts need to be unpaused before they are fully operational. Meanwhile, the owner can perform imports/updates of legacy dPID entries. + +The contract is `ownable`, and the owner is initially the `PRIVATE_KEY` used to configure the deployment script. Note this `PRIVATE_KEY` variable isn't directly referred to in the scripts, but is known to hardhat from `hardhat.config.ts`. + +Run the scripts using this pattern, where `--network` pulls the required information from the hardhat config: + +```shell +ARG1=ble ARG2=blu npx hardhat run --network optimismSepolia scripts/alias-registry/xyz.mjs +``` + +## Scripts +These scripts are used to interact with the alias registry contracts. More detailed documentation is available in the script files. + +### `migrateToAliasRegistry.mjs` +Deploys a new dPID alias registry, populating the legacy entries mapping with data from the dPID API. After import, it validates the information in the contract against the data from the dPID API. It saves a log file in `migration-data`, showing the deployed address and each imported dPID. + +Arguments: +- `ENV`, selects which dPID API it should use for migration data. Either `dev` or `prod`. +- `PRIVATE_KEY`, makes the deployments, is set as contract owner, and makes import transactions. + +### `syncAliasRegistryMigration.mjs` +For a given alias registry address, pulls the dPID API data and validates the existence and history of each dPID, importing / updating the legacy entires as needed. This can be run multiple times, as it only concerns itself with deltas and is idempotent if nothing has changed. + +Arguments: +- `ENV`, selects which dPID API it should use for migration data. Either `dev` or `prod`. If this is set to anything else than the env used to populate the contract initially, it'll likely permanently break the contract. +- `PRIVATE_KEY`, makes import transactions (needs to be owner). +- `REGISTRY_ADDRESS`, select which contract to sync (see artifacts in `.openzeppelin` or consult the migration data). + +### `activateAliasRegistry.mjs` +Sets the first dPID (i.e., next available integer) and unpauses the contract, leaving it open for external callers to mint identifiers. + +Arguments: +- `PRIVATE_KEY`, makes the transactions (needs to be owner). +- `NEXT_DPID`, set the next available dPID. This should correspond to the last legacy dPID, plus one. +- `REGISTRY_ADDRESS`, select which contract to activate (see artifacts in `.openzeppelin` or consult the migration data). + +### `deployDpidAliasRegistry.js` +This script is only used for deploying to the local testchain, as part of the monorepo `dockerDev.sh` script. diff --git a/desci-contracts/scripts/alias-registry/activateAliasRegistry.mjs b/desci-contracts/scripts/alias-registry/activateAliasRegistry.mjs new file mode 100644 index 000000000..d4a13545a --- /dev/null +++ b/desci-contracts/scripts/alias-registry/activateAliasRegistry.mjs @@ -0,0 +1,35 @@ +/** + * ALIAS REGISTRY ACTIVATION + * + * Activates a dPID alias contract, by setting the next available dPID and + * unpausing it. The old contract needs to be paused, so no overlapping dPID's + * are minted. Alternatively, set the next dPID with some gap in between. + * + * Required arguments (env variables): + * 1. REGISTRY_ADDRESS - Address of existing alias registry (proxy) contract + * 2. PRIVATE_KEY - Owner/admin identity (see hardhat.config.ts) + * 2. NEXT_DPID - The next mintable dPID + */ +import hardhat from "hardhat"; +const { ethers, hardhatArguments } = hardhat; + +const REGISTRY_ADDRESS = process.env.REGISTRY_ADDRESS; +if (REGISTRY_ADDRESS === undefined) { + throw new Error("REGISTRY_ADDRESS unset"); +}; + +const NEXT_DPID = process.env.NEXT_DPID; +if (NEXT_DPID === undefined) { + throw new Error("NEXT_DPID unset"); +}; + +const DpidAliasRegistryFactory = await ethers.getContractFactory("DpidAliasRegistry"); +const registry = DpidAliasRegistryFactory.attach(REGISTRY_ADDRESS); + +const setNextDpid = await registry.setNextDpid(NEXT_DPID) +await setNextDpid.wait(); + +const unpause = await registry.unpause(); +await unpause.wait(); + +console.log(`🐎 let dPID minting commence from ${NEXT_DPID} at ${REGISTRY_ADDRESS}`); diff --git a/desci-contracts/scripts/alias-registry/deployDpidAliasRegistry.js b/desci-contracts/scripts/alias-registry/deployDpidAliasRegistry.js new file mode 100644 index 000000000..5e821a43e --- /dev/null +++ b/desci-contracts/scripts/alias-registry/deployDpidAliasRegistry.js @@ -0,0 +1,37 @@ +const { ethers, upgrades } = require("hardhat"); +const fs = require('fs'); + +const FIRST_DPID = process.env.FIRST_DPID; +if (FIRST_DPID === undefined) { + throw new Error("FIRST_DPID unset"); +}; + +async function main() { + fs.rmSync(".openzeppelin/unknown-dpid-alias-registry.json", { force: true }); + fs.rmSync(".openzeppelin/unknown-1337.json", { force: true }); + + const DpidAliasRegistry = await ethers.getContractFactory("DpidAliasRegistry"); + console.log("[deployDpidAliasRegistry] Deploying DpidAliasRegistry..."); + const proxy = await upgrades.deployProxy( + DpidAliasRegistry, + [], + { + initializer: "initialize" + } + ); + await proxy.deployed(); + + let tx = await proxy.setNextDpid(FIRST_DPID); + await tx.wait(); + tx = await proxy.unpause(); + await tx.wait(); + + console.log("[deployDpidRegistry] DpidAliasRegistry deployed to:", proxy.address); + + fs.renameSync( + ".openzeppelin/unknown-1337.json", + ".openzeppelin/unknown-dpid-alias-registry.json", + ); +}; + +main(); diff --git a/desci-contracts/scripts/alias-registry/migrateToAliasRegistry.mjs b/desci-contracts/scripts/alias-registry/migrateToAliasRegistry.mjs new file mode 100644 index 000000000..7c4008c08 --- /dev/null +++ b/desci-contracts/scripts/alias-registry/migrateToAliasRegistry.mjs @@ -0,0 +1,143 @@ +/** + * ALIAS REGISTRY MIGRATION + * + * Deploys a new dPID alias registry, through proxy. Imports existing dPID's as + * legacy entries, and validates the correctness of these imports afterward. + * If the imports are interrupted, it can be continued using the syncAliasRegistryMigration.mjs + * script. The registry is initialized in a paused state, meaning minting new dPID's + * is disabled, but imports and other administration like configuring the dPID + * counter can still be done. + * + * The script performs the following actions: + * - Deploys new instance of the registry + * - Imports legacy dPID's, validating correctness + * - Immediately pauses minting of new dPID's + * + * Steps required to fully activate: + * - Admin calls `setNextDpid` to whatever is the next when legacy contract is disabled + * - Admin calls `unpause` to allow minting new dPID's + * + * Required arguments (env variables): + * 1. PRIVATE_KEY - Owner/admin identity (see hardhat.config.ts) + * 2. ENV - Environment to sync legacy entires from ("dev" or "prod") + */ +import hardhat from "hardhat"; +const { ethers, hardhatArguments } = hardhat; +import axios from "axios"; +import { writeFileSync } from "fs"; + +const ENV = process.env.ENV; +if (ENV === undefined) { + throw new Error("ENV unset"); +}; + +let dpidApi; +if (ENV === "dev") { + dpidApi = "dev-beta"; +} else if (ENV === "prod") { + dpidApi = "beta"; +} else { + throw new Error(`Env "${ENV} unknown (use "dev" or "prod")`); +}; + +const getDpidPage = async (page) => { + const { data } = await axios.get( + `https://${dpidApi}.dpid.org/api/v1/dpid?size=100&page=${page}` + ); + return data; +}; + +const allDpids = (await Promise.all( + [1,2,3].map(getDpidPage) +)).flat().sort((d1, d2) => parseInt(d1.dpid) - parseInt(d2.dpid)); + +const toImportEntry = (dpid) => [ + dpid.dpid, + { + owner: dpid.researchObject.owner, + versions: dpid.researchObject.versions.map(v => ({cid: v.cid, time: v.time})), + }, +]; + +const importEntries = allDpids.map(toImportEntry); + +const DpidAliasRegistryFactory = await ethers.getContractFactory("DpidAliasRegistry"); + +const registry = await upgrades.deployProxy( + DpidAliasRegistryFactory, + [], + { + initializer: "initialize", + } +); + +await registry.deployed(); +console.log(`📃 Contract deployed to ${registry.address}`); + +const results = { + address: registry.address, + dpids: [], +}; +let totalGas = 0; +const startTime = Date.now(); + +for (const [ dpid, entry ] of importEntries) { + console.log(`📥 Importing dPID ${dpid}...`) + const tx = await registry.importLegacyDpid(dpid, entry); + const receipt = await tx.wait(); + totalGas += ethers.BigNumber.from(receipt.gasUsed).toNumber(); + + const fromContract = await registry.legacyLookup(dpid); + + const imported = { + dpid, + owner: fromContract[0], + versions: fromContract[1].map(([cid, time]) => ({cid, time: ethers.BigNumber.from(time).toNumber() })), + }; + + console.log(`🔎 Verifying dPID ${dpid}:`); + + const originalDpid = allDpids.find(e => e.dpid === dpid); + const originalOwner = originalDpid.researchObject.owner; + const originalVersions = originalDpid.researchObject.versions; + + let validationError = false; + + const ownerCorrect = originalOwner === imported.owner.toLowerCase(); + console.log(` - Ownership: ${ownerCorrect ? "✅" : "❌"} (${originalOwner})`); + if (!ownerCorrect) validationError = true; + + console.log(` - History:`) + for (let i = 0; i < originalVersions.length; i++) { + console.log(` - v${i}:`) + const cidCorrect = originalVersions[i].cid === imported.versions[i].cid; + const timeCorrect = originalVersions[i].time === imported.versions[i].time; + + console.log(` - cid: ${cidCorrect ? "✅" : "❌"} (${originalVersions[i].cid})`); + console.log(` - time: ${timeCorrect ? "✅" : "❌"} (${originalVersions[i].time})`); + if (!(cidCorrect && timeCorrect)) { + validationError = true; + }; + }; + results.dpids.push({ dpid, owner: imported.owner, versions: imported.versions, validationError }); +}; + +const failures = results.dpids.filter(r => r.validationError); +console.log(`🚦 dPIDs which failed validation: ${JSON.stringify(failures)}`) + +const missingNumbers = []; +for (let i = 0; i < importEntries.length; i++) { + if (!allDpids.find(e => e.dpid === i.toString())) { + missingNumbers.push(i); + }; +}; + +console.log(`❓ dPID's missing from original set: ${JSON.stringify(missingNumbers)}`); + +const duration = Math.ceil((Date.now() - startTime) / 1000); +console.log(`🏁 migration done in ${duration}s for a total of ${totalGas} gas`); + +const dateString = new Date().toUTCString().replaceAll(" ", "_"); +const logFilePath = `migration-data/aliasRegistry_${ENV}_${dateString}.json`; +writeFileSync(logFilePath, JSON.stringify(results, undefined, 2)); +console.log(`📝 migration data written to ${logFilePath}`); diff --git a/desci-contracts/scripts/alias-registry/syncAliasRegistryMigration.mjs b/desci-contracts/scripts/alias-registry/syncAliasRegistryMigration.mjs new file mode 100644 index 000000000..637b36718 --- /dev/null +++ b/desci-contracts/scripts/alias-registry/syncAliasRegistryMigration.mjs @@ -0,0 +1,148 @@ +/** + * ALIAS REGISTRY MIGRATION SYNC + * + * For an already deployed alias registry, import missing delta of legacy dPID + * entries from the dpid.org API. This script is idempotent, and can hance be + * run many times. Existing entries are just validated, not edited. + * + * The script performs the following actions: + * - If an entry is missing, it is imported. + * - All entries, old and new, are be validated against the dPID API. + * - Owner address and full version history is checked. + * - If an entry fails validate, a warning is printed. The issue is not fixed. + * - Manually running import of the failing dPID overwrites the erroneous entry. + * + * + * Required arguments (env variables): + * 1. REGISTRY_ADDRESS - Address of existing alias registry (proxy) contract + * 2. ENV - Environment to sync legacy entires from ("dev" or "prod") + * 3. PRIVATE_KEY - Admin pkey, to allow calling onlyOwner methods + */ +import hardhat from "hardhat"; +const { ethers, hardhatArguments } = hardhat; +import axios from "axios"; +import { writeFileSync } from "fs"; + +const REGISTRY_ADDRESS = process.env.REGISTRY_ADDRESS; +if (REGISTRY_ADDRESS === undefined) { + throw new Error("REGISTRY_ADDRESS unset"); +}; + +const ENV = process.env.ENV; +if (ENV === undefined) { + throw new Error("ENV unset"); +}; + +let dpidApi; +if (ENV === "dev") { + dpidApi = "dev-beta"; +} else if (ENV === "prod") { + dpidApi = "beta"; +} else { + throw new Error(`Env "${ENV} unknown (use "dev" or "prod")`); +}; + +const getDpidPage = async (page) => { + const { data } = await axios.get( + `https://${dpidApi}.dpid.org/api/v1/dpid?size=100&page=${page}` + ); + return data; +}; + +const allDpids = (await Promise.all( + [1,2,3].map(getDpidPage) +)).flat().sort((d1, d2) => parseInt(d1.dpid) - parseInt(d2.dpid)); + +const toImportEntry = (dpid) => [ + dpid.dpid, + { + owner: dpid.researchObject.owner, + versions: dpid.researchObject.versions.map(v => ({cid: v.cid, time: v.time})), + } +]; + +const importEntries = allDpids.map(toImportEntry); + +const DpidAliasRegistryFactory = await ethers.getContractFactory("DpidAliasRegistry"); +const registry = DpidAliasRegistryFactory + .attach(REGISTRY_ADDRESS); + +const results = []; +let totalGas = 0; +const startTime = Date.now(); + +for (const [ dpid, entry ] of importEntries) { + const [owner, versions] = await registry.legacyLookup(dpid); + const notImported = owner === "0x0000000000000000000000000000000000000000"; + + if (notImported) { + console.log(`❗ dPID ${dpid} not found, importing...`); + const tx = await registry.importLegacyDpid(dpid, entry); + const receipt = await tx.wait(); + totalGas += ethers.BigNumber.from(receipt.gasUsed).toNumber(); + }; + + const fromContract = await registry.legacyLookup(dpid); + + const imported = { + dpid, + owner: fromContract[0], + versions: fromContract[1].map(([cid, time]) => ({cid, time: ethers.BigNumber.from(time).toNumber() })), + }; + + const originalDpid = allDpids.find(e => e.dpid === dpid); + const originalOwner = originalDpid.researchObject.owner; + const originalVersions = originalDpid.researchObject.versions; + + if (imported.versions.length < originalVersions.length) { + console.log(`👷 Found new versions of dPID ${dpid}, updating import...`); + const tx = await registry.importLegacyDpid(dpid, entry); + const receipt = await tx.wait(); + totalGas += ethers.BigNumber.from(receipt.gasUsed).toNumber(); + + // Refresh information from contract after updating + const refreshedFromContract = await registry.legacyLookup(dpid); + imported.owner = refreshedFromContract[0]; + imported.versions = refreshedFromContract[1].map(([cid, time]) => ({cid, time: ethers.BigNumber.from(time).toNumber() })); + }; + + console.log(`🔎 Verifying dPID ${dpid}:`); + + let validationError = false; + + const ownerCorrect = originalOwner === imported.owner.toLowerCase(); + console.log(` - Ownership: ${ownerCorrect ? "✅" : "❌"} (${originalOwner})`); + if (!ownerCorrect) validationError = true; + + console.log(` - History:`) + for (let i = 0; i < originalVersions.length; i++) { + if (!imported.versions[i]) { + console.log(` - v${i}: (missing in imported history)`); + } else { + console.log(` - v${i}:`); + }; + + const cidCorrect = originalVersions[i].cid === imported.versions[i]?.cid; + const timeCorrect = originalVersions[i].time === imported.versions[i]?.time; + + console.log(` - cid: ${cidCorrect ? "✅" : "❌"} (${originalVersions[i].cid})`); + console.log(` - time: ${timeCorrect ? "✅" : "❌"} (${originalVersions[i].time})`); + + if (!(cidCorrect && timeCorrect)) { + validationError = true; + }; + }; + + results.push({ dpid, owner: imported.owner, versions: imported.versions, validationError }); +}; + +const failures = results.filter(r => r.validationError); +console.log(`🚦 dPIDs which failed validation (manually import to overwrite): ${JSON.stringify(failures, undefined, 2)}`); + +const duration = Math.ceil((Date.now() - startTime) / 1000); +console.log(`🏁 sync done in ${duration}s for a total of ${totalGas} gas`); + +const dateString = new Date().toUTCString().replaceAll(" ", "_"); +const logFilePath = `migration-data/aliasRegistrySync_${ENV}_${dateString}.json`; +writeFileSync(logFilePath, JSON.stringify(results, undefined, 2)); +console.log(`📝 migration data written to ${logFilePath}`); diff --git a/desci-contracts/scripts/startTestChain.sh b/desci-contracts/scripts/startTestChain.sh index a72377a46..5b30987d8 100755 --- a/desci-contracts/scripts/startTestChain.sh +++ b/desci-contracts/scripts/startTestChain.sh @@ -32,6 +32,11 @@ checkTestDeployments() { echo "[startTestChain] deploying RO contract..." yarn deploy:ganache fi + + if ! scripts/checkTestDeployments.sh ".openzeppelin/unknown-dpid-alias-registry.json"; then + echo "[startTestChain] deploying dpid alias registry..." + yarn deploy:alias:ganache + fi } waitForPostgres() { diff --git a/desci-contracts/test/DpidAliasRegistry.ts b/desci-contracts/test/DpidAliasRegistry.ts new file mode 100644 index 000000000..74681d9c8 --- /dev/null +++ b/desci-contracts/test/DpidAliasRegistry.ts @@ -0,0 +1,253 @@ +import { expect, use } from "chai"; +import chaiAsPromised from "chai-as-promised"; +import { ethers as hhe, upgrades } from "hardhat"; +import { BigNumber, ContractReceipt, ContractTransaction } from "ethers"; +import { + DpidAliasRegistry__factory, + DpidAliasRegistry, +} from "../typechain-types"; +import { TransactionReceipt } from "@ethersproject/abstract-provider"; +import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; + +use(chaiAsPromised); + +describe("dPID", () => { + let _accounts: SignerWithAddress[]; + let deployerAddress: SignerWithAddress; + let user1: SignerWithAddress; + let user2: SignerWithAddress; + let DpidAliasRegistryFactory: DpidAliasRegistry__factory; + let dpidAliasRegistry: DpidAliasRegistry; + + before( async () => { + _accounts = await hhe.getSigners() + deployerAddress = _accounts[0]; + user1 = _accounts[1]; + user2 = _accounts[2]; + + DpidAliasRegistryFactory = await hhe.getContractFactory( + "DpidAliasRegistry", + ) as DpidAliasRegistry__factory; + + dpidAliasRegistry = await upgrades.deployProxy( + DpidAliasRegistryFactory, + [], + { + initializer: "initialize", + } + ) as DpidAliasRegistry; + await dpidAliasRegistry.deployed(); + }); + + describe("deployment", () => { + let reciept: TransactionReceipt; + let proxyAddress: string; + let implAddress: string; + + before(async () => { + reciept = await dpidAliasRegistry.deployTransaction.wait(); + proxyAddress = reciept.contractAddress; + implAddress = await upgrades.erc1967.getImplementationAddress(proxyAddress); + + console.log({ + implAddress, + proxyAddress, + implOwner: await dpidAliasRegistry.owner(), + }); + }); + + it("costs a reasonable amount of gas", async () => { + expect( + BigNumber.from(reciept.cumulativeGasUsed).lte(32000000), + `Gas limit exceeded` + ).to.be.true; + }); + + it("is made through proxy", () => { + expect(proxyAddress).not.to.equal(implAddress); + }); + + it("allows deployer to call ownership transfer of ProxyAdmin contract", async () => { + // re-set to self + const doTransfer = async () => + await upgrades.admin.transferProxyAdminOwnership(proxyAddress, deployerAddress); + await expect(doTransfer()).not.to.be.rejected; + }); + + it("deploys implementation with proxy owner as owner", async () => { + const registryOwner = await dpidAliasRegistry.owner(); + expect(registryOwner).to.equal(deployerAddress.address); + }); + + it("deploys contract in paused state", async () => { + const isPaused = await dpidAliasRegistry.paused(); + expect(isPaused).to.equal(true); + }); + }); + + describe("alias registry", () => { + const STREAM_A = "kjzl6kcym7w8y7i5ugaq9a3vlm7hhuaf4bpl5o5qykeh4qtsa12c6rb5ekw6aaa"; + + describe("admin", () => { + it("can set nextDpid when paused", async () => { + const tx = await dpidAliasRegistry.setNextDpid(100); + await tx.wait(); + const nextDpid = await dpidAliasRegistry.nextDpid(); + expect(nextDpid).to.equal(100); + }); + + it("can unpause contract", async () => { + const tx = await dpidAliasRegistry.unpause(); + await tx.wait(); + const isPaused = await dpidAliasRegistry.paused(); + expect(isPaused).to.equal(false); + }); + + it("can NOT set nextDpid when unpaused", async () => { + const liveResetNextDpid = async () => { + const tx = await dpidAliasRegistry.setNextDpid(500); + await tx.wait(); + }; + await expect(liveResetNextDpid()).to.be.rejectedWith("Pausable: not paused"); + }); + }); + + describe("entry", () => { + let tx: ContractTransaction; + let res: ContractReceipt; + + before(async () => { + // Default instance to non-owner user + dpidAliasRegistry = dpidAliasRegistry.connect(user1); + tx = await dpidAliasRegistry.mintDpid(STREAM_A); + res = await tx.wait(); + }); + + it("can be added", async () => { + const entry = await dpidAliasRegistry.registry(100); + expect(entry).to.equal(STREAM_A); + }); + + it("emits event on mint", async () => { + const event = res.events![0]; + const [ dpid, streamId ] = event.args!; + + expect(event.event).to.equal("DpidMinted"); + expect(dpid).to.equal(BigNumber.from(100)); + expect(streamId).to.equal(STREAM_A); + }); + + it("increases counter on mint", async () => { + const nextDpid = await dpidAliasRegistry.nextDpid(); + expect(nextDpid).to.equal(101); + }); + + it("gets next free dpid", async () => { + const STREAM_B = "kjzl6kcym7w8y7i5ugaq9a3vlm7hhuaf4bpl5o5qykeh4qtsa12c6rb5ekw6bbb"; + const tx2 = await dpidAliasRegistry.mintDpid(STREAM_B); + await tx2.wait(); + const entry = await dpidAliasRegistry.registry(101); + expect(entry).to.equal(STREAM_B); + }); + }); + + describe("legacy entry", () => { + let migrationEntry: DpidAliasRegistry.LegacyDpidEntryStruct; + + before(async () => { + migrationEntry = { + owner: user1.address, // of dpid owner + versions: [ + { + cid: "bafybeihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku", + time: 1716369952, + }, + ], + }; + }); + + describe("import", () => { + let successReceipt: ContractReceipt; + + it("can be done by contract owner", async () => { + const tx = await dpidAliasRegistry + .connect(deployerAddress) + .importLegacyDpid(0, migrationEntry); + successReceipt = await tx.wait(); + }); + + it("can be resolved", async () => { + const legacyEntry = await dpidAliasRegistry.legacyLookup(0); + + expect(legacyEntry.owner).to.equal(migrationEntry.owner); + expect(legacyEntry.versions.length).to.equal(1); + expect(legacyEntry.versions[0].cid).to.equal("bafybeihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku"); + expect(legacyEntry.versions[0].time).to.equal(1716369952); + }); + + it("emits an event on success", () => { + const event = successReceipt.events![0]; + const [ dpid, { owner }] = event.args!; + const args = successReceipt.events![0].args!; + + expect(event.event).to.equal("ImportedDpid"); + expect(dpid).to.equal(0); + expect(owner).to.equal(user1.address); + }); + + it("can NOT be done by others", async () => { + const doImport = async () => await dpidAliasRegistry + .importLegacyDpid(1, migrationEntry); + + await expect(doImport()).to.be.rejectedWith("caller is not the owner"); + }); + }); + + describe("upgrade", () => { + let successReceipt: ContractReceipt; + const STREAM_C = "kjzl6kcym7w8y7i5ugaq9a3vlm7hhuaf4bpl5o5qykeh4qtsa12c6rb5ekw6ccc"; + const STREAM_D = "kjzl6kcym7w8y7i5ugaq9a3vlm7hhuaf4bpl5o5qykeh4qtsa12c6rb5ekw6ddd"; + + it("can NOT be done by randos", async () => { + const doUpgrade = async () => await dpidAliasRegistry + .connect(user2) + .upgradeDpid(0, STREAM_C); + + await expect(doUpgrade()).to.be.rejectedWith("unauthorized dpid upgrade"); + }); + + it("can be done by dpid owner", async () => { + const tx = await dpidAliasRegistry.upgradeDpid(0, STREAM_C); + successReceipt = await tx.wait(); + + const upgradedEntry = await dpidAliasRegistry.resolve(0); + expect(upgradedEntry).to.equal(STREAM_C); + }); + + it("cannot be done twice", async () => { + const doSecondUpgrade = async () => + await dpidAliasRegistry.upgradeDpid(0, STREAM_C); + + await expect(doSecondUpgrade()).to.be.rejectedWith("dpid already upgraded"); + }); + + it("can be fixed by contract owner", async () => { + const doUpgrade = async () => await dpidAliasRegistry + .connect(deployerAddress) + .upgradeDpid(0, STREAM_C); + + await expect(doUpgrade()).to.not.be.rejectedWith("unauthorized dpid upgrade"); + }); + + it("emits an event", async () => { + const event = successReceipt.events![0]; + const [ dpid, streamId ] = event.args!; + + expect(event.event).to.equal("UpgradedDpid"); + expect(dpid).to.equal(0); + expect(streamId).to.equal(STREAM_C); + }); + }); + }); + }); +}); diff --git a/desci-contracts/typechain-types/ContextUpgradeable.js b/desci-contracts/typechain-types/ContextUpgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ContextUpgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/DpidAliasRegistry.ts b/desci-contracts/typechain-types/DpidAliasRegistry.ts new file mode 100644 index 000000000..0bb0599a9 --- /dev/null +++ b/desci-contracts/typechain-types/DpidAliasRegistry.ts @@ -0,0 +1,625 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export declare namespace DpidAliasRegistry { + export type LegacyVersionStruct = { cid: string; time: BigNumberish }; + + export type LegacyVersionStructOutput = [string, BigNumber] & { + cid: string; + time: BigNumber; + }; + + export type LegacyDpidEntryStruct = { + owner: string; + versions: DpidAliasRegistry.LegacyVersionStruct[]; + }; + + export type LegacyDpidEntryStructOutput = [ + string, + DpidAliasRegistry.LegacyVersionStructOutput[] + ] & { + owner: string; + versions: DpidAliasRegistry.LegacyVersionStructOutput[]; + }; +} + +export interface DpidAliasRegistryInterface extends utils.Interface { + contractName: "DpidAliasRegistry"; + functions: { + "find(string)": FunctionFragment; + "importLegacyDpid(uint256,(address,(string,uint256)[]))": FunctionFragment; + "initialize()": FunctionFragment; + "legacy(uint256)": FunctionFragment; + "legacyLookup(uint256)": FunctionFragment; + "mintDpid(string)": FunctionFragment; + "nextDpid()": FunctionFragment; + "owner()": FunctionFragment; + "pause()": FunctionFragment; + "paused()": FunctionFragment; + "registry(uint256)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "resolve(uint256)": FunctionFragment; + "reverseRegistry(string)": FunctionFragment; + "setNextDpid(uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "unpause()": FunctionFragment; + "upgradeDpid(uint256,string)": FunctionFragment; + }; + + encodeFunctionData(functionFragment: "find", values: [string]): string; + encodeFunctionData( + functionFragment: "importLegacyDpid", + values: [BigNumberish, DpidAliasRegistry.LegacyDpidEntryStruct] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "legacy", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "legacyLookup", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "mintDpid", values: [string]): string; + encodeFunctionData(functionFragment: "nextDpid", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "pause", values?: undefined): string; + encodeFunctionData(functionFragment: "paused", values?: undefined): string; + encodeFunctionData( + functionFragment: "registry", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "resolve", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "reverseRegistry", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "setNextDpid", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + encodeFunctionData(functionFragment: "unpause", values?: undefined): string; + encodeFunctionData( + functionFragment: "upgradeDpid", + values: [BigNumberish, string] + ): string; + + decodeFunctionResult(functionFragment: "find", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "importLegacyDpid", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "legacy", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "legacyLookup", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "mintDpid", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nextDpid", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "registry", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "resolve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "reverseRegistry", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setNextDpid", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "upgradeDpid", + data: BytesLike + ): Result; + + events: { + "DpidMinted(uint256,string)": EventFragment; + "ImportedDpid(uint256,tuple)": EventFragment; + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "Paused(address)": EventFragment; + "Unpaused(address)": EventFragment; + "UpgradedDpid(uint256,string)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "DpidMinted"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ImportedDpid"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpgradedDpid"): EventFragment; +} + +export type DpidMintedEvent = TypedEvent< + [BigNumber, string], + { dpid: BigNumber; streamID: string } +>; + +export type DpidMintedEventFilter = TypedEventFilter; + +export type ImportedDpidEvent = TypedEvent< + [BigNumber, DpidAliasRegistry.LegacyDpidEntryStructOutput], + { dpid: BigNumber; entry: DpidAliasRegistry.LegacyDpidEntryStructOutput } +>; + +export type ImportedDpidEventFilter = TypedEventFilter; + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + { previousOwner: string; newOwner: string } +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export type PausedEvent = TypedEvent<[string], { account: string }>; + +export type PausedEventFilter = TypedEventFilter; + +export type UnpausedEvent = TypedEvent<[string], { account: string }>; + +export type UnpausedEventFilter = TypedEventFilter; + +export type UpgradedDpidEvent = TypedEvent< + [BigNumber, string], + { dpid: BigNumber; streamId: string } +>; + +export type UpgradedDpidEventFilter = TypedEventFilter; + +export interface DpidAliasRegistry extends BaseContract { + contractName: "DpidAliasRegistry"; + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: DpidAliasRegistryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + find(streamId: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + importLegacyDpid( + dpid: BigNumberish, + entry: DpidAliasRegistry.LegacyDpidEntryStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + initialize( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + legacy( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise<[string] & { owner: string }>; + + legacyLookup( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise<[DpidAliasRegistry.LegacyDpidEntryStructOutput]>; + + mintDpid( + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + nextDpid(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + pause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + paused(overrides?: CallOverrides): Promise<[boolean]>; + + registry(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + resolve(dpid: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + reverseRegistry( + arg0: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + setNextDpid( + _nextDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + unpause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeDpid( + dpid: BigNumberish, + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + find(streamId: string, overrides?: CallOverrides): Promise; + + importLegacyDpid( + dpid: BigNumberish, + entry: DpidAliasRegistry.LegacyDpidEntryStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + initialize( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + legacy(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + legacyLookup( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + mintDpid( + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + nextDpid(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + paused(overrides?: CallOverrides): Promise; + + registry(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + resolve(dpid: BigNumberish, overrides?: CallOverrides): Promise; + + reverseRegistry(arg0: string, overrides?: CallOverrides): Promise; + + setNextDpid( + _nextDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + unpause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeDpid( + dpid: BigNumberish, + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + find(streamId: string, overrides?: CallOverrides): Promise; + + importLegacyDpid( + dpid: BigNumberish, + entry: DpidAliasRegistry.LegacyDpidEntryStruct, + overrides?: CallOverrides + ): Promise; + + initialize(overrides?: CallOverrides): Promise; + + legacy(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + legacyLookup( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + mintDpid(streamId: string, overrides?: CallOverrides): Promise; + + nextDpid(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pause(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + registry(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + resolve(dpid: BigNumberish, overrides?: CallOverrides): Promise; + + reverseRegistry( + arg0: string, + overrides?: CallOverrides + ): Promise; + + setNextDpid( + _nextDpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + + unpause(overrides?: CallOverrides): Promise; + + upgradeDpid( + dpid: BigNumberish, + streamId: string, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "DpidMinted(uint256,string)"( + dpid?: null, + streamID?: null + ): DpidMintedEventFilter; + DpidMinted(dpid?: null, streamID?: null): DpidMintedEventFilter; + + "ImportedDpid(uint256,tuple)"( + dpid?: null, + entry?: null + ): ImportedDpidEventFilter; + ImportedDpid(dpid?: null, entry?: null): ImportedDpidEventFilter; + + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + + "Paused(address)"(account?: null): PausedEventFilter; + Paused(account?: null): PausedEventFilter; + + "Unpaused(address)"(account?: null): UnpausedEventFilter; + Unpaused(account?: null): UnpausedEventFilter; + + "UpgradedDpid(uint256,string)"( + dpid?: null, + streamId?: null + ): UpgradedDpidEventFilter; + UpgradedDpid(dpid?: null, streamId?: null): UpgradedDpidEventFilter; + }; + + estimateGas: { + find(streamId: string, overrides?: CallOverrides): Promise; + + importLegacyDpid( + dpid: BigNumberish, + entry: DpidAliasRegistry.LegacyDpidEntryStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + initialize( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + legacy(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + legacyLookup( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + mintDpid( + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + nextDpid(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + paused(overrides?: CallOverrides): Promise; + + registry(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + resolve(dpid: BigNumberish, overrides?: CallOverrides): Promise; + + reverseRegistry( + arg0: string, + overrides?: CallOverrides + ): Promise; + + setNextDpid( + _nextDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + unpause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeDpid( + dpid: BigNumberish, + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + find( + streamId: string, + overrides?: CallOverrides + ): Promise; + + importLegacyDpid( + dpid: BigNumberish, + entry: DpidAliasRegistry.LegacyDpidEntryStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + initialize( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + legacy( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + legacyLookup( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + mintDpid( + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + nextDpid(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + paused(overrides?: CallOverrides): Promise; + + registry( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + resolve( + dpid: BigNumberish, + overrides?: CallOverrides + ): Promise; + + reverseRegistry( + arg0: string, + overrides?: CallOverrides + ): Promise; + + setNextDpid( + _nextDpid: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + unpause( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + upgradeDpid( + dpid: BigNumberish, + streamId: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/desci-contracts/typechain-types/DpidRegistry.js b/desci-contracts/typechain-types/DpidRegistry.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/DpidRegistry.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ERC165.js b/desci-contracts/typechain-types/ERC165.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ERC165.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ERC165Upgradeable.js b/desci-contracts/typechain-types/ERC165Upgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ERC165Upgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ERC721.js b/desci-contracts/typechain-types/ERC721.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ERC721.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ERC721Upgradeable.js b/desci-contracts/typechain-types/ERC721Upgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ERC721Upgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IDpidRegistry.js b/desci-contracts/typechain-types/IDpidRegistry.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IDpidRegistry.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC165.js b/desci-contracts/typechain-types/IERC165.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC165.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC165Upgradeable.js b/desci-contracts/typechain-types/IERC165Upgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC165Upgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC721.js b/desci-contracts/typechain-types/IERC721.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC721.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC721Metadata.js b/desci-contracts/typechain-types/IERC721Metadata.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC721Metadata.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC721MetadataUpgradeable.js b/desci-contracts/typechain-types/IERC721MetadataUpgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC721MetadataUpgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC721Receiver.js b/desci-contracts/typechain-types/IERC721Receiver.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC721Receiver.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC721ReceiverUpgradeable.js b/desci-contracts/typechain-types/IERC721ReceiverUpgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC721ReceiverUpgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/IERC721Upgradeable.js b/desci-contracts/typechain-types/IERC721Upgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/IERC721Upgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/Initializable.js b/desci-contracts/typechain-types/Initializable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/Initializable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/OwnableUpgradeable.js b/desci-contracts/typechain-types/OwnableUpgradeable.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/OwnableUpgradeable.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/PausableUpgradeable.ts b/desci-contracts/typechain-types/PausableUpgradeable.ts new file mode 100644 index 000000000..fd8f44dae --- /dev/null +++ b/desci-contracts/typechain-types/PausableUpgradeable.ts @@ -0,0 +1,105 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface PausableUpgradeableInterface extends utils.Interface { + contractName: "PausableUpgradeable"; + functions: { + "paused()": FunctionFragment; + }; + + encodeFunctionData(functionFragment: "paused", values?: undefined): string; + + decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result; + + events: { + "Initialized(uint8)": EventFragment; + "Paused(address)": EventFragment; + "Unpaused(address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment; +} + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + +export type PausedEvent = TypedEvent<[string], { account: string }>; + +export type PausedEventFilter = TypedEventFilter; + +export type UnpausedEvent = TypedEvent<[string], { account: string }>; + +export type UnpausedEventFilter = TypedEventFilter; + +export interface PausableUpgradeable extends BaseContract { + contractName: "PausableUpgradeable"; + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PausableUpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + paused(overrides?: CallOverrides): Promise<[boolean]>; + }; + + paused(overrides?: CallOverrides): Promise; + + callStatic: { + paused(overrides?: CallOverrides): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "Paused(address)"(account?: null): PausedEventFilter; + Paused(account?: null): PausedEventFilter; + + "Unpaused(address)"(account?: null): UnpausedEventFilter; + Unpaused(account?: null): UnpausedEventFilter; + }; + + estimateGas: { + paused(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + paused(overrides?: CallOverrides): Promise; + }; +} diff --git a/desci-contracts/typechain-types/ResearchObject.js b/desci-contracts/typechain-types/ResearchObject.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ResearchObject.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ResearchObjectMigrated.js b/desci-contracts/typechain-types/ResearchObjectMigrated.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ResearchObjectMigrated.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/ResearchObjectV2.js b/desci-contracts/typechain-types/ResearchObjectV2.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/ResearchObjectV2.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/TestERC721.js b/desci-contracts/typechain-types/TestERC721.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/TestERC721.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/VersionedERC721.js b/desci-contracts/typechain-types/VersionedERC721.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/VersionedERC721.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/VersionedERC721V2.js b/desci-contracts/typechain-types/VersionedERC721V2.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/VersionedERC721V2.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/common.js b/desci-contracts/typechain-types/common.js deleted file mode 100644 index 0e345787d..000000000 --- a/desci-contracts/typechain-types/common.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -exports.__esModule = true; diff --git a/desci-contracts/typechain-types/factories/ContextUpgradeable__factory.js b/desci-contracts/typechain-types/factories/ContextUpgradeable__factory.js deleted file mode 100644 index de6769d28..000000000 --- a/desci-contracts/typechain-types/factories/ContextUpgradeable__factory.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.ContextUpgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, -]; -var ContextUpgradeable__factory = /** @class */ (function () { - function ContextUpgradeable__factory() { - } - ContextUpgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ContextUpgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ContextUpgradeable__factory.abi = _abi; - return ContextUpgradeable__factory; -}()); -exports.ContextUpgradeable__factory = ContextUpgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts new file mode 100644 index 000000000..00181c90c --- /dev/null +++ b/desci-contracts/typechain-types/factories/DpidAliasRegistry__factory.ts @@ -0,0 +1,518 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + DpidAliasRegistry, + DpidAliasRegistryInterface, +} from "../DpidAliasRegistry"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + { + indexed: false, + internalType: "string", + name: "streamID", + type: "string", + }, + ], + name: "DpidMinted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + components: [ + { + internalType: "string", + name: "cid", + type: "string", + }, + { + internalType: "uint256", + name: "time", + type: "uint256", + }, + ], + internalType: "struct DpidAliasRegistry.LegacyVersion[]", + name: "versions", + type: "tuple[]", + }, + ], + indexed: false, + internalType: "struct DpidAliasRegistry.LegacyDpidEntry", + name: "entry", + type: "tuple", + }, + ], + name: "ImportedDpid", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "Paused", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "Unpaused", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + { + indexed: false, + internalType: "string", + name: "streamId", + type: "string", + }, + ], + name: "UpgradedDpid", + type: "event", + }, + { + inputs: [ + { + internalType: "string", + name: "streamId", + type: "string", + }, + ], + name: "find", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + components: [ + { + internalType: "string", + name: "cid", + type: "string", + }, + { + internalType: "uint256", + name: "time", + type: "uint256", + }, + ], + internalType: "struct DpidAliasRegistry.LegacyVersion[]", + name: "versions", + type: "tuple[]", + }, + ], + internalType: "struct DpidAliasRegistry.LegacyDpidEntry", + name: "entry", + type: "tuple", + }, + ], + name: "importLegacyDpid", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "legacy", + outputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + ], + name: "legacyLookup", + outputs: [ + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + components: [ + { + internalType: "string", + name: "cid", + type: "string", + }, + { + internalType: "uint256", + name: "time", + type: "uint256", + }, + ], + internalType: "struct DpidAliasRegistry.LegacyVersion[]", + name: "versions", + type: "tuple[]", + }, + ], + internalType: "struct DpidAliasRegistry.LegacyDpidEntry", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "streamId", + type: "string", + }, + ], + name: "mintDpid", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "nextDpid", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pause", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "paused", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "registry", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + ], + name: "resolve", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + name: "reverseRegistry", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_nextDpid", + type: "uint256", + }, + ], + name: "setNextDpid", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "unpause", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "dpid", + type: "uint256", + }, + { + internalType: "string", + name: "streamId", + type: "string", + }, + ], + name: "upgradeDpid", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b612b0480620001e36000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638129fc1c116100a2578063a5ad8ac611610071578063a5ad8ac6146102bb578063afc26911146102d7578063b724de3a146102f5578063ded8896b14610325578063f2fde38b1461034157610116565b80638129fc1c1461025957806382b7b500146102635780638456cb59146102935780638da5cb5b1461029d57610116565b80635893253c116100e95780635893253c146101a15780635c975abb146101d1578063715018a6146101ef578063788243d5146101f9578063810a9afa1461022957610116565b8063144ae8551461011b5780633f4ba83a146101375780634f896d4f14610141578063587a8cbf14610171575b600080fd5b6101356004803603810190610130919061146f565b61035d565b005b61013f6103c5565b005b61015b600480360381019061015691906113ee565b6103df565b60405161016891906119dc565b60405180910390f35b61018b600480360381019061018691906113ad565b610484565b6040516101989190611b40565b60405180910390f35b6101bb60048036038101906101b691906113ee565b6104b2565b6040516101c891906119dc565b60405180910390f35b6101d9610552565b6040516101e691906119a6565b60405180910390f35b6101f7610569565b005b610213600480360381019061020e91906113ee565b61057d565b604051610220919061198b565b60405180910390f35b610243600480360381019061023e91906113ee565b6105bb565b6040516102509190611b1e565b60405180910390f35b610261610739565b005b61027d60048036038101906102789190611368565b610887565b60405161028a9190611b40565b60405180910390f35b61029b6108b2565b005b6102a56108cc565b6040516102b2919061198b565b60405180910390f35b6102d560048036038101906102d091906113ee565b6108f6565b005b6102df610910565b6040516102ec9190611b40565b60405180910390f35b61030f600480360381019061030a9190611368565b610916565b60405161031c9190611b40565b60405180910390f35b61033f600480360381019061033a9190611417565b610a33565b005b61035b6004803603810190610356919061133f565b610caa565b005b610365610d2e565b80609a600084815260200190815260200160002081816103859190612a27565b9050507fa9c55ebaa1fada408bd72c2f0ea7c27f5444b105bcff12c5381baac912156ada82826040516103b9929190611b8d565b60405180910390a15050565b6103cd610d2e565b6103d5610dac565b6103dd610df5565b565b60606098600083815260200190815260200160002080546103ff906123b4565b80601f016020809104026020016040519081016040528092919081815260200182805461042b906123b4565b80156104785780601f1061044d57610100808354040283529160200191610478565b820191906000526020600020905b81548152906001019060200180831161045b57829003601f168201915b50505050509050919050565b6099818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b609860205280600052604060002060009150905080546104d1906123b4565b80601f01602080910402602001604051908101604052809291908181526020018280546104fd906123b4565b801561054a5780601f1061051f5761010080835404028352916020019161054a565b820191906000526020600020905b81548152906001019060200180831161052d57829003601f168201915b505050505081565b6000606560009054906101000a900460ff16905090565b610571610d2e565b61057b6000610e58565b565b609a6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b6105c3611175565b609a60008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805480602002602001604051908101604052809291908181526020016000905b8282101561072a578382906000526020600020906002020160405180604001604052908160008201805461068f906123b4565b80601f01602080910402602001604051908101604052809291908181526020018280546106bb906123b4565b80156107085780601f106106dd57610100808354040283529160200191610708565b820191906000526020600020905b8154815290600101906020018083116106eb57829003601f168201915b505050505081526020016001820154815250508152602001906001019061065c565b50505050815250509050919050565b60008060019054906101000a900460ff1615905080801561076a5750600160008054906101000a900460ff1660ff16105b80610797575061077930610f1e565b1580156107965750600160008054906101000a900460ff1660ff16145b5b6107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd90611a9e565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610813576001600060016101000a81548160ff0219169083151502179055505b61081b610f41565b610823610f9a565b61082b610ff3565b80156108845760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161087b91906119c1565b60405180910390a15b50565b60006099838360405161089b929190611972565b908152602001604051809103902054905092915050565b6108ba610d2e565b6108c2611056565b6108ca610ff3565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108fe610d2e565b610906610dac565b8060978190555050565b60975481565b6000828260006099838360405161092e929190611972565b9081526020016040518091039020541461097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097490611a7e565b60405180910390fd5b610985611056565b6000609754905085856098600084815260200190815260200160002091906109ae9291906111a5565b5080609987876040516109c2929190611972565b9081526020016040518091039020819055507f96a65efbb6991f67fc8a4c7550fcfd08f1968737d2f5adcded5cd937b3cc0f3d818787604051610a0793929190611b5b565b60405180910390a160976000815480929190610a2290612433565b919050555080935050505092915050565b8181600060998383604051610a49929190611972565b90815260200160405180910390205414610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90611a7e565b60405180910390fd5b610aa0611056565b6000609860008781526020019081526020016000208054610ac0906123b4565b90501480610b005750610ad16108cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690611a1e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16609a600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610be15750610bb26108cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790611afe565b60405180910390fd5b8383609860008881526020019081526020016000209190610c429291906111a5565b508460998585604051610c56929190611972565b9081526020016040518091039020819055507f442b41840a10393534508176faee6f70b1870707dc24573b67d49f28cbac7f1c858585604051610c9b93929190611b5b565b60405180910390a15050505050565b610cb2610d2e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990611a3e565b60405180910390fd5b610d2b81610e58565b50565b610d366110a0565b73ffffffffffffffffffffffffffffffffffffffff16610d546108cc565b73ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190611abe565b60405180910390fd5b565b610db4610552565b610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea906119fe565b60405180910390fd5b565b610dfd610dac565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e416110a0565b604051610e4e919061198b565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790611ade565b60405180910390fd5b610f986110a8565b565b600060019054906101000a900460ff16610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090611ade565b60405180910390fd5b610ff1611109565b565b610ffb611056565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861103f6110a0565b60405161104c919061198b565b60405180910390a1565b61105e610552565b1561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590611a5e565b60405180910390fd5b565b600033905090565b600060019054906101000a900460ff166110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90611ade565b60405180910390fd5b6111076111026110a0565b610e58565b565b600060019054906101000a900460ff16611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90611ade565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b8280546111b1906123b4565b90600052602060002090601f0160209004810192826111d3576000855561121a565b82601f106111ec57803560ff191683800117855561121a565b8280016001018555821561121a579182015b828111156112195782358255916020019190600101906111fe565b5b509050611227919061122b565b5090565b5b8082111561124457600081600090555060010161122c565b5090565b600061125b61125684611cb4565b611c8f565b90508281526020810184848401111561127357600080fd5b61127e8482856122e6565b509392505050565b60008135905061129581612a9b565b92915050565b60008083601f8401126112ad57600080fd5b8235905067ffffffffffffffff8111156112c657600080fd5b6020830191508360018202830111156112de57600080fd5b9250929050565b600082601f8301126112f657600080fd5b8135611306848260208601611248565b91505092915050565b60006040828403121561132157600080fd5b81905092915050565b60008135905061133981612ab2565b92915050565b60006020828403121561135157600080fd5b600061135f84828501611286565b91505092915050565b6000806020838503121561137b57600080fd5b600083013567ffffffffffffffff81111561139557600080fd5b6113a18582860161129b565b92509250509250929050565b6000602082840312156113bf57600080fd5b600082013567ffffffffffffffff8111156113d957600080fd5b6113e5848285016112e5565b91505092915050565b60006020828403121561140057600080fd5b600061140e8482850161132a565b91505092915050565b60008060006040848603121561142c57600080fd5b600061143a8682870161132a565b935050602084013567ffffffffffffffff81111561145757600080fd5b6114638682870161129b565b92509250509250925092565b6000806040838503121561148257600080fd5b60006114908582860161132a565b925050602083013567ffffffffffffffff8111156114ad57600080fd5b6114b98582860161130f565b9150509250929050565b60006114cf83836118c8565b905092915050565b60006114e38383611917565b905092915050565b6114f48161202e565b82525050565b6115038161202e565b82525050565b60006115158385611d91565b93508360208402850161152784611cfc565b8060005b8781101561156b5784840389526115428284611f99565b61154c85826114c3565b945061155783611d77565b925060208a0199505060018101905061152b565b50829750879450505050509392505050565b600061158882611d4b565b6115928185611d91565b9350836020820285016115a485611d06565b8060005b858110156115e057848403895281516115c185826114d7565b94506115cc83611d84565b925060208a019950506001810190506115a8565b50829750879550505050505092915050565b6115fb81612040565b82525050565b61160a81612129565b82525050565b600061161c8385611da2565b93506116298385846122e6565b6116328361268a565b840190509392505050565b60006116498385611db3565b93506116568385846122e6565b61165f8361268a565b840190509392505050565b60006116768385611dc4565b93506116838385846122e6565b82840190509392505050565b600061169a82611d6c565b6116a48185611da2565b93506116b48185602086016122f5565b6116bd8161268a565b840191505092915050565b60006116d382611d6c565b6116dd8185611db3565b93506116ed8185602086016122f5565b6116f68161268a565b840191505092915050565b600061170e601483611db3565b915061171982612716565b602082019050919050565b6000611731601583611db3565b915061173c8261273f565b602082019050919050565b6000611754602683611db3565b915061175f82612768565b604082019050919050565b6000611777601083611db3565b9150611782826127b7565b602082019050919050565b600061179a601983611db3565b91506117a5826127e0565b602082019050919050565b60006117bd602e83611db3565b91506117c882612809565b604082019050919050565b60006117e0602083611db3565b91506117eb82612858565b602082019050919050565b6000611803602b83611db3565b915061180e82612881565b604082019050919050565b6000611826601983611db3565b9150611831826128d0565b602082019050919050565b60006040830161184f6000840184611ed4565b61185c60008601826114eb565b5061186a6020840184611eeb565b858303602087015261187d838284611509565b925050508091505092915050565b60006040830160008301516118a360008601826114eb565b50602083015184820360208601526118bb828261157d565b9150508091505092915050565b6000604083016118db6000840184611f42565b85830360008701526118ee838284611610565b925050506118ff6020840184611fbd565b61190c6020860182611954565b508091505092915050565b60006040830160008301518482036000860152611934828261168f565b91505060208301516119496020860182611954565b508091505092915050565b61195d8161206c565b82525050565b61196c8161206c565b82525050565b600061197f82848661166a565b91508190509392505050565b60006020820190506119a060008301846114fa565b92915050565b60006020820190506119bb60008301846115f2565b92915050565b60006020820190506119d66000830184611601565b92915050565b600060208201905081810360008301526119f681846116c8565b905092915050565b60006020820190508181036000830152611a1781611701565b9050919050565b60006020820190508181036000830152611a3781611724565b9050919050565b60006020820190508181036000830152611a5781611747565b9050919050565b60006020820190508181036000830152611a778161176a565b9050919050565b60006020820190508181036000830152611a978161178d565b9050919050565b60006020820190508181036000830152611ab7816117b0565b9050919050565b60006020820190508181036000830152611ad7816117d3565b9050919050565b60006020820190508181036000830152611af7816117f6565b9050919050565b60006020820190508181036000830152611b1781611819565b9050919050565b60006020820190508181036000830152611b38818461188b565b905092915050565b6000602082019050611b556000830184611963565b92915050565b6000604082019050611b706000830186611963565b8181036020830152611b8381848661163d565b9050949350505050565b6000604082019050611ba26000830185611963565b8181036020830152611bb4818461183c565b90509392505050565b60008083356001602003843603038112611bd657600080fd5b80840192508235915067ffffffffffffffff821115611bf457600080fd5b602083019250602082023603831315611c0c57600080fd5b509250929050565b60008083356001602003843603038112611c2d57600080fd5b80840192508235915067ffffffffffffffff821115611c4b57600080fd5b602083019250600182023603831315611c6357600080fd5b509250929050565b600082356001604003833603038112611c8357600080fd5b80830191505092915050565b6000611c99611caa565b9050611ca58282612402565b919050565b6000604051905090565b600067ffffffffffffffff821115611ccf57611cce612527565b5b611cd88261268a565b9050602081019050919050565b6000819050611cf5826002611fd4565b9050919050565b6000819050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600082905092915050565b600081519050919050565b600081549050919050565b600082905092915050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6020841060008114611e2857601f841160018114611df857611df186856123e6565b8355611e22565b611e0183611d2b565b611e166020601f880104820160018301612091565b611e2087856128f9565b505b50611e71565b611e3182611d2b565b6020601f8701048101601f87168015611e5257611e518160018403612556565b5b611e646020601f890104840183612091565b6001886002021785555050505b5050505050565b6020831060008114611ec3576020851060008114611ea157611e9a86856123e6565b8355611ebd565b8360ff1916935083611eb284611d2b565b556001866002020183555b50611ecd565b6001856002020182555b5050505050565b6000611ee36020840184611286565b905092915050565b60008083356001602003843603038112611f0457600080fd5b83810192508235915060208301925067ffffffffffffffff821115611f2857600080fd5b602082023603841315611f3a57600080fd5b509250929050565b60008083356001602003843603038112611f5b57600080fd5b83810192508235915060208301925067ffffffffffffffff821115611f7f57600080fd5b600182023603841315611f9157600080fd5b509250929050565b600082356001604003833603038112611fb157600080fd5b82810191505092915050565b6000611fcc602084018461132a565b905092915050565b6000611fdf8261206c565b9150611fea8361206c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612023576120226124c9565b5b828202905092915050565b60006120398261204c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b61208e600082612635565b50565b5b818110156120b0576120a56000826126fe565b600181019050612092565b5050565b5b818110156120d3576120c86000826126e0565b6002810190506120b5565b5050565b818110156120f5576120ea6000826126fe565b6001810190506120d7565b5050565b61210660008083016126c2565b6121146000600183016126fe565b50565b60006121228261213b565b9050919050565b600061213482612076565b9050919050565b60006121468261214d565b9050919050565b60006121588261204c565b9050919050565b600061216a8261206c565b9050919050565b61217b8383611d40565b61218581836125d1565b61218e83611cfc565b61219783611d16565b6000805b848110156121d0576121ad8488611c6b565b6121b8818486612a58565b6020850194506002840193505060018101905061219b565b5050505050505050565b6121e48383611d61565b67ffffffffffffffff8111156121fd576121fc612527565b5b61220782546123b4565b600080601f8411601f841117156122245761222185611d2b565b90505b601f831115612257576020601f85010481016020851015612243578190505b6122556020601f860104830182612091565b505b601f8411600181146122845760008515612272578388013590505b61227c86826123e6565b8755506122dc565b601f1985168260005b828110156122b257858a0135825560018201915060208601955060208101905061228d565b878310156122cf57858a01356122cb601f8a168261247c565b8355505b6001600289020189555050505b5050505050505050565b82818337600083830152505050565b60005b838110156123135780820151818401526020810190506122f8565b83811115612322576000848401525b50505050565b60008101600083018061233a816125a5565b905061234681846129e4565b505050600181016020830161235b8185611bbd565b612366818386612a07565b505050505050565b60008101600083016123808185611c14565b61238b818386612a17565b505050506001810160208301806123a1816125bb565b90506123ad8184612a35565b5050505050565b600060028204905060018216806123cc57607f821691505b602082108114156123e0576123df6124f8565b5b50919050565b60006123f2838361247c565b9150826002028217905092915050565b61240b8261268a565b810181811067ffffffffffffffff8211171561242a57612429612527565b5b80604052505050565b600061243e8261206c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612471576124706124c9565b5b600182019050919050565b600061248d600019846008026126b5565b1980831691505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026126b5565b815481168255505050565b6000819050919050565b6000819050919050565b600081356125b281612a9b565b80915050919050565b600081356125c881612ab2565b80915050919050565b680100000000000000008211156125eb576125ea612527565b5b6125f481611d56565b828255808310156126305761260881611ce5565b61261184611ce5565b61261a84611d16565b81810183820161262a81836120b4565b50505050505b505050565b6801000000000000000082111561264f5761264e612527565b5b805461265a816123b4565b8084111561266f5761266e84828486611e78565b5b808410156126845761268384828486611dcf565b5b50505050565b6000601f19601f8301169050919050565b60008160001b9050919050565b600082821b905092915050565b600082821c905092915050565b600082146126d3576126d261249a565b5b6126dc81612083565b5050565b600082146126f1576126f061249a565b5b6126fa816120f9565b5050565b612706612ac9565b612711818484612a76565b505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f6470696420616c72656164792075706772616465640000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f73747265616d20616c7265616479206861732061206450494400000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f756e617574686f72697a65642064706964207570677261646500000000000000600082015250565b61290281611d2b565b61290d8382546123e6565b8083556000825550505050565b600073ffffffffffffffffffffffffffffffffffffffff61293a8461269b565b9350801983169250808416831791505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61297c8461269b565b9350801983169250808416831791505092915050565b6000600883026129c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826126a8565b6129cc86836126a8565b95508019841693508086168417925050509392505050565b6129ed82612117565b612a006129f982612591565b835461291a565b8255505050565b612a12838383612171565b505050565b612a228383836121da565b505050565b612a318282612328565b5050565b612a3e8261215f565b612a51612a4a8261259b565b8354612950565b8255505050565b8115612a6757612a6661249a565b5b612a71838261236e565b505050565b612a7f8361215f565b612a93612a8b8261259b565b848454612992565b825550505050565b612aa48161202e565b8114612aaf57600080fd5b50565b612abb8161206c565b8114612ac657600080fd5b50565b60009056fea26469706673582212204ecb8996bb39773559c74839e823c3312f16000e008595f44afba65328f7cb2464736f6c63430008040033"; + +type DpidAliasRegistryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: DpidAliasRegistryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class DpidAliasRegistry__factory extends ContractFactory { + constructor(...args: DpidAliasRegistryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "DpidAliasRegistry"; + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): DpidAliasRegistry { + return super.attach(address) as DpidAliasRegistry; + } + connect(signer: Signer): DpidAliasRegistry__factory { + return super.connect(signer) as DpidAliasRegistry__factory; + } + static readonly contractName: "DpidAliasRegistry"; + public readonly contractName: "DpidAliasRegistry"; + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): DpidAliasRegistryInterface { + return new utils.Interface(_abi) as DpidAliasRegistryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): DpidAliasRegistry { + return new Contract(address, _abi, signerOrProvider) as DpidAliasRegistry; + } +} diff --git a/desci-contracts/typechain-types/factories/DpidRegistry__factory.js b/desci-contracts/typechain-types/factories/DpidRegistry__factory.js deleted file mode 100644 index 0ad9e0770..000000000 --- a/desci-contracts/typechain-types/factories/DpidRegistry__factory.js +++ /dev/null @@ -1,483 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.DpidRegistry__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address" - }, - ], - name: "OwnershipTransferred", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - indexed: false, - internalType: "uint256", - name: "entryId", - type: "uint256" - }, - ], - name: "Register", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - indexed: false, - internalType: "address", - name: "registrant", - type: "address" - }, - { - indexed: false, - internalType: "address[]", - name: "tokenGate", - type: "address[]" - }, - ], - name: "RegisterOrganization", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - indexed: false, - internalType: "address", - name: "registrant", - type: "address" - }, - { - indexed: false, - internalType: "address[]", - name: "tokenGate", - type: "address[]" - }, - ], - name: "UpdateOrganization", - type: "event" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "entryId", - type: "uint256" - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "entryId", - type: "uint256" - }, - ], - name: "get", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "getFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "getOrgFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - ], - name: "getOrganization", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32" - }, - ], - name: "organizations", - outputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "address", - name: "registrant", - type: "address" - }, - { - internalType: "uint256", - name: "count", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "entry", - type: "uint256" - }, - ], - name: "put", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - ], - name: "registerOrg", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "address[]", - name: "tokenGate", - type: "address[]" - }, - ], - name: "registerOrgWithGate", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "gweiFee", - type: "uint256" - }, - ], - name: "setFee", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "gweiFee", - type: "uint256" - }, - ], - name: "setOrgFee", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "string", - name: "source", - type: "string" - }, - ], - name: "stringToBytes32", - outputs: [ - { - internalType: "bytes32", - name: "result", - type: "bytes32" - }, - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address" - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "address[]", - name: "tokenGate", - type: "address[]" - }, - ], - name: "updateOrg", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - ], - name: "validateCharacters", - outputs: [ - { - internalType: "bool", - name: "valid", - type: "bool" - }, - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [], - name: "withdraw", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b61230880620001e36000396000f3fe6080604052600436106101145760003560e01c80638129fc1c116100a0578063ced72f8711610064578063ced72f871461037f578063cef25dbc146103aa578063cfb51928146103c6578063da4a984214610403578063f2fde38b1461043357610114565b80638129fc1c146102aa57806381e104ca146102c15780638da5cb5b146102ec578063a40a990b14610317578063ba51b14e1461034057610114565b80634b22d5d0116100e75780634b22d5d0146101c75780634fb6020e146102045780635cb316351461022d57806369fe0e2d1461026a578063715018a61461029357610114565b80631785b6771461011957806318ae19c21461013557806322b3cd4e146101725780633ccfd60b146101b0575b600080fd5b610133600480360381019061012e9190611889565b61045c565b005b34801561014157600080fd5b5061015c60048036038101906101579190611906565b6104d8565b6040516101699190611e0a565b60405180910390f35b34801561017e57600080fd5b5061019960048036038101906101949190611889565b610568565b6040516101a7929190611e25565b60405180910390f35b3480156101bc57600080fd5b506101c561060e565b005b3480156101d357600080fd5b506101ee60048036038101906101e99190611889565b61066c565b6040516101fb9190611bfb565b60405180910390f35b34801561021057600080fd5b5061022b60048036038101906102269190611983565b610845565b005b34801561023957600080fd5b50610254600480360381019061024f9190611906565b610857565b6040516102619190611bfb565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190611983565b6108d8565b005b34801561029f57600080fd5b506102a86108ea565b005b3480156102b657600080fd5b506102bf6108fe565b005b3480156102cd57600080fd5b506102d6610cfa565b6040516102e39190611e0a565b60405180910390f35b3480156102f857600080fd5b50610301610d04565b60405161030e9190611be0565b60405180910390f35b34801561032357600080fd5b5061033e600480360381019061033991906118b2565b610d2e565b005b34801561034c57600080fd5b5061036760048036038101906103629190611889565b610e52565b60405161037693929190611c6f565b60405180910390f35b34801561038b57600080fd5b50610394610e9c565b6040516103a19190611e0a565b60405180910390f35b6103c460048036038101906103bf91906118b2565b610ea6565b005b3480156103d257600080fd5b506103ed60048036038101906103e89190611942565b610f41565b6040516103fa9190611c16565b60405180910390f35b61041d60048036038101906104189190611906565b610f6b565b60405161042a9190611e0a565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190611860565b611227565b005b6104d581600067ffffffffffffffff8111156104a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156104cf5781602001602082028036833780820191505090505b50610ea6565b50565b600082606560008581526020019081526020016000206000015414610532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052990611d6a565b60405180910390fd5b60006065600085815260200190815260200160002090508060030160008481526020019081526020016000205491505092915050565b600080826065600085815260200190815260200160002060000154146105c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ba90611d6a565b60405180910390fd5b600060656000858152602001908152602001600020905080600401548160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250925050915091565b6106166112ab565b6000610620610d04565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610668573d6000803e3d6000fd5b5050565b600080600090506000806040518060600160405280602781526020016122ac60279139905060005b602060ff1681101561082357600060f81b8682602081106106de577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561071257809250610823565b60005b825181101561080f57828181518110610757577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168783602081106107bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156107fc5784806107f490611fcb565b95505061080f565b808061080790611fcb565b915050610715565b50808061081b90611fcb565b915050610694565b50818310156108385760009350505050610840565b600193505050505b919050565b61084d6112ab565b8060678190555050565b6000826065600085815260200190815260200160002060000154146108b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a890611d6a565b60405180910390fd5b60006065600085815260200190815260200160002090508060040154831091505092915050565b6108e06112ab565b8060668190555050565b6108f26112ab565b6108fc6000611329565b565b60008060019054906101000a900460ff1615905080801561092f5750600160008054906101000a900460ff1660ff16105b8061095c575061093e306113ef565b15801561095b5750600160008054906101000a900460ff1660ff16145b5b61099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099290611d8a565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156109d8576001600060016101000a81548160ff0219169083151502179055505b6601c6bf526340006066819055506706f05b59d3b2000060678190555060008067ffffffffffffffff811115610a37577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610a655781602001602082028036833780820191505090505b509050610a73600082611412565b610a9d7f647069640000000000000000000000000000000000000000000000000000000082611412565b610ac77f646369746500000000000000000000000000000000000000000000000000000082611412565b610af17f646576000000000000000000000000000000000000000000000000000000000082611412565b610b1b7f737461676500000000000000000000000000000000000000000000000000000082611412565b610b457f626574610000000000000000000000000000000000000000000000000000000082611412565b610b6f7f646573636900000000000000000000000000000000000000000000000000000082611412565b610b997f6e6f64650000000000000000000000000000000000000000000000000000000082611412565b610bc37f6e6f64657300000000000000000000000000000000000000000000000000000082611412565b610bed7f646f69000000000000000000000000000000000000000000000000000000000082611412565b610c177f610000000000000000000000000000000000000000000000000000000000000082611412565b610c417f640000000000000000000000000000000000000000000000000000000000000082611412565b610c6b7f780000000000000000000000000000000000000000000000000000000000000082611412565b610c957f7a0000000000000000000000000000000000000000000000000000000000000082611412565b610c9d6115a5565b508015610cf75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610cee9190611ccf565b60405180910390a15b50565b6000606754905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b81610d376115fe565b73ffffffffffffffffffffffffffffffffffffffff166065600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd190611d4a565b60405180910390fd5b600060656000858152602001908152602001600020905082816002019080519060200190610e09929190611667565b507f2f78800ab5b47f6617eaf3124043ced0ee3ae49c0b4a77167ee4cd2fbc674f0484610e346115fe565b85604051610e4493929190611c31565b60405180910390a150505050565b60656020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b6000606654905090565b606754341015610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee290611dea565b60405180910390fd5b610ef48261066c565b610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a90611d6a565b60405180910390fd5b610f3d8282611412565b5050565b600080829050600081511415610f5d576000801b915050610f66565b60208301519150505b919050565b6000606654341015610fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa990611dea565b60405180910390fd5b8260656000858152602001908152602001600020600001541461100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190611d6a565b60405180910390fd5b60006065600085815260200190815260200160002090506000816002018054905011156111a6576000816002018054905090506000805b82811015611162576000846002018281548110611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a082316110da6115fe565b6040518263ffffffff1660e01b81526004016110f69190611be0565b60206040518083038186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114691906119ac565b1115611156576001925050611162565b81600101915050611041565b50806111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a90611d2a565b60405180910390fd5b50505b60008160040154905083826003016000838152602001908152602001600020819055507fd5fa0e9a716b3ec4895a48223ad309e2d3fa5e27f04d8dc9b3c33cc738a50eb085826040516111fa929190611ca6565b60405180910390a181600401600081548092919061121790611fcb565b9190505550809250505092915050565b61122f6112ab565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561129f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129690611d0a565b60405180910390fd5b6112a881611329565b50565b6112b36115fe565b73ffffffffffffffffffffffffffffffffffffffff166112d1610d04565b73ffffffffffffffffffffffffffffffffffffffff1614611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e90611daa565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000801b606560008481526020019081526020016000206000015414801561149c5750600073ffffffffffffffffffffffffffffffffffffffff166065600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290611cea565b60405180910390fd5b60006065600084815260200190815260200160002090506114fa6115fe565b8160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508281600001819055508181600201908051906020019061155d929190611667565b507f1603286ac6b9f753cbc1a1d33146ab15a401314d80d8553aa8fb1473df47f3ec836115886115fe565b8460405161159893929190611c31565b60405180910390a1505050565b600060019054906101000a900460ff166115f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb90611dca565b60405180910390fd5b6115fc611606565b565b600033905090565b600060019054906101000a900460ff16611655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164c90611dca565b60405180910390fd5b6116656116606115fe565b611329565b565b8280548282559060005260206000209081019282156116e0579160200282015b828111156116df5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611687565b5b5090506116ed91906116f1565b5090565b5b8082111561170a5760008160009055506001016116f2565b5090565b600061172161171c84611e73565b611e4e565b9050808382526020820190508285602086028201111561174057600080fd5b60005b85811015611770578161175688826117b8565b845260208401935060208301925050600181019050611743565b5050509392505050565b600061178d61178884611e9f565b611e4e565b9050828152602081018484840111156117a557600080fd5b6117b0848285611f8b565b509392505050565b6000813590506117c781612266565b92915050565b600082601f8301126117de57600080fd5b81356117ee84826020860161170e565b91505092915050565b6000813590506118068161227d565b92915050565b600082601f83011261181d57600080fd5b813561182d84826020860161177a565b91505092915050565b60008135905061184581612294565b92915050565b60008151905061185a81612294565b92915050565b60006020828403121561187257600080fd5b6000611880848285016117b8565b91505092915050565b60006020828403121561189b57600080fd5b60006118a9848285016117f7565b91505092915050565b600080604083850312156118c557600080fd5b60006118d3858286016117f7565b925050602083013567ffffffffffffffff8111156118f057600080fd5b6118fc858286016117cd565b9150509250929050565b6000806040838503121561191957600080fd5b6000611927858286016117f7565b925050602061193885828601611836565b9150509250929050565b60006020828403121561195457600080fd5b600082013567ffffffffffffffff81111561196e57600080fd5b61197a8482850161180c565b91505092915050565b60006020828403121561199557600080fd5b60006119a384828501611836565b91505092915050565b6000602082840312156119be57600080fd5b60006119cc8482850161184b565b91505092915050565b60006119e183836119ed565b60208301905092915050565b6119f681611f1a565b82525050565b611a0581611f1a565b82525050565b6000611a1682611ee0565b611a208185611ef8565b9350611a2b83611ed0565b8060005b83811015611a5c578151611a4388826119d5565b9750611a4e83611eeb565b925050600181019050611a2f565b5085935050505092915050565b611a7281611f2c565b82525050565b611a8181611f38565b82525050565b611a9081611f79565b82525050565b6000611aa3600c83611f09565b9150611aae82612083565b602082019050919050565b6000611ac6602683611f09565b9150611ad1826120ac565b604082019050919050565b6000611ae9601883611f09565b9150611af4826120fb565b602082019050919050565b6000611b0c601283611f09565b9150611b1782612124565b602082019050919050565b6000611b2f600e83611f09565b9150611b3a8261214d565b602082019050919050565b6000611b52602e83611f09565b9150611b5d82612176565b604082019050919050565b6000611b75602083611f09565b9150611b80826121c5565b602082019050919050565b6000611b98602b83611f09565b9150611ba3826121ee565b604082019050919050565b6000611bbb600c83611f09565b9150611bc68261223d565b602082019050919050565b611bda81611f62565b82525050565b6000602082019050611bf560008301846119fc565b92915050565b6000602082019050611c106000830184611a69565b92915050565b6000602082019050611c2b6000830184611a78565b92915050565b6000606082019050611c466000830186611a78565b611c5360208301856119fc565b8181036040830152611c658184611a0b565b9050949350505050565b6000606082019050611c846000830186611a78565b611c9160208301856119fc565b611c9e6040830184611bd1565b949350505050565b6000604082019050611cbb6000830185611a78565b611cc86020830184611bd1565b9392505050565b6000602082019050611ce46000830184611a87565b92915050565b60006020820190508181036000830152611d0381611a96565b9050919050565b60006020820190508181036000830152611d2381611ab9565b9050919050565b60006020820190508181036000830152611d4381611adc565b9050919050565b60006020820190508181036000830152611d6381611aff565b9050919050565b60006020820190508181036000830152611d8381611b22565b9050919050565b60006020820190508181036000830152611da381611b45565b9050919050565b60006020820190508181036000830152611dc381611b68565b9050919050565b60006020820190508181036000830152611de381611b8b565b9050919050565b60006020820190508181036000830152611e0381611bae565b9050919050565b6000602082019050611e1f6000830184611bd1565b92915050565b6000604082019050611e3a6000830185611bd1565b611e4760208301846119fc565b9392505050565b6000611e58611e69565b9050611e648282611f9a565b919050565b6000604051905090565b600067ffffffffffffffff821115611e8e57611e8d612043565b5b602082029050602081019050919050565b600067ffffffffffffffff821115611eba57611eb9612043565b5b611ec382612072565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611f2582611f42565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611f8482611f6c565b9050919050565b82818337600083830152505050565b611fa382612072565b810181811067ffffffffffffffff82111715611fc257611fc1612043565b5b80604052505050565b6000611fd682611f62565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561200957612008612014565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f5072656669782074616b656e0000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f556e617574686f72697a65643a20546f6b656e20676174650000000000000000600082015250565b7f4f6e6c79206f776e657220757064617465730000000000000000000000000000600082015250565b7f496e76616c696420707265666978000000000000000000000000000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f4665652072657175697265640000000000000000000000000000000000000000600082015250565b61226f81611f1a565b811461227a57600080fd5b50565b61228681611f38565b811461229157600080fd5b50565b61229d81611f62565b81146122a857600080fd5b5056fe6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f2ea2646970667358221220b8cac9a8d8f3de013face3e7fec9a14f0a1e3f3d09fe342a5252c76f07a42da364736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var DpidRegistry__factory = /** @class */ (function (_super) { - __extends(DpidRegistry__factory, _super); - function DpidRegistry__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "DpidRegistry"; - return _this; - } - DpidRegistry__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - DpidRegistry__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - DpidRegistry__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - DpidRegistry__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - DpidRegistry__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - DpidRegistry__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - DpidRegistry__factory.bytecode = _bytecode; - DpidRegistry__factory.abi = _abi; - return DpidRegistry__factory; -}(ethers_1.ContractFactory)); -exports.DpidRegistry__factory = DpidRegistry__factory; diff --git a/desci-contracts/typechain-types/factories/ERC165Upgradeable__factory.js b/desci-contracts/typechain-types/factories/ERC165Upgradeable__factory.js deleted file mode 100644 index 114cb68ca..000000000 --- a/desci-contracts/typechain-types/factories/ERC165Upgradeable__factory.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.ERC165Upgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, -]; -var ERC165Upgradeable__factory = /** @class */ (function () { - function ERC165Upgradeable__factory() { - } - ERC165Upgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ERC165Upgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ERC165Upgradeable__factory.abi = _abi; - return ERC165Upgradeable__factory; -}()); -exports.ERC165Upgradeable__factory = ERC165Upgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/ERC165__factory.js b/desci-contracts/typechain-types/factories/ERC165__factory.js deleted file mode 100644 index fcb345c01..000000000 --- a/desci-contracts/typechain-types/factories/ERC165__factory.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.ERC165__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, -]; -var ERC165__factory = /** @class */ (function () { - function ERC165__factory() { - } - ERC165__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ERC165__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ERC165__factory.abi = _abi; - return ERC165__factory; -}()); -exports.ERC165__factory = ERC165__factory; diff --git a/desci-contracts/typechain-types/factories/ERC721Upgradeable__factory.js b/desci-contracts/typechain-types/factories/ERC721Upgradeable__factory.js deleted file mode 100644 index 41edaf331..000000000 --- a/desci-contracts/typechain-types/factories/ERC721Upgradeable__factory.js +++ /dev/null @@ -1,409 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.ERC721Upgradeable__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address" - }, - { - indexed: false, - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "ApprovalForAll", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Transfer", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x608060405234801561001057600080fd5b5061216f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb46514610224578063b88d4fde14610240578063c87b56dd1461025c578063e985e9c51461028c576100cf565b80636352211e146101a657806370a08231146101d657806395d89b4114610206576100cf565b806301ffc9a7146100d457806306fdde0314610104578063081812fc14610122578063095ea7b31461015257806323b872dd1461016e57806342842e0e1461018a575b600080fd5b6100ee60048036038101906100e99190611625565b6102bc565b6040516100fb9190611936565b60405180910390f35b61010c61039e565b6040516101199190611951565b60405180910390f35b61013c60048036038101906101379190611677565b610430565b60405161014991906118cf565b60405180910390f35b61016c600480360381019061016791906115e9565b610476565b005b610188600480360381019061018391906114e3565b61058e565b005b6101a4600480360381019061019f91906114e3565b6105ee565b005b6101c060048036038101906101bb9190611677565b61060e565b6040516101cd91906118cf565b60405180910390f35b6101f060048036038101906101eb919061147e565b6106c0565b6040516101fd9190611a93565b60405180910390f35b61020e610778565b60405161021b9190611951565b60405180910390f35b61023e600480360381019061023991906115ad565b61080a565b005b61025a60048036038101906102559190611532565b610820565b005b61027660048036038101906102719190611677565b610882565b6040516102839190611951565b60405180910390f35b6102a660048036038101906102a191906114a7565b6108ea565b6040516102b39190611936565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061039757506103968261097e565b5b9050919050565b6060606580546103ad90611cb8565b80601f01602080910402602001604051908101604052809291908181526020018280546103d990611cb8565b80156104265780601f106103fb57610100808354040283529160200191610426565b820191906000526020600020905b81548152906001019060200180831161040957829003601f168201915b5050505050905090565b600061043b826109e8565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104818261060e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990611a53565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610511610a33565b73ffffffffffffffffffffffffffffffffffffffff161480610540575061053f8161053a610a33565b6108ea565b5b61057f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057690611a13565b60405180910390fd5b6105898383610a3b565b505050565b61059f610599610a33565b82610af4565b6105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d590611a73565b60405180910390fd5b6105e9838383610b89565b505050565b61060983838360405180602001604052806000815250610820565b505050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ae90611a33565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610731576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610728906119f3565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606066805461078790611cb8565b80601f01602080910402602001604051908101604052809291908181526020018280546107b390611cb8565b80156108005780601f106107d557610100808354040283529160200191610800565b820191906000526020600020905b8154815290600101906020018083116107e357829003601f168201915b5050505050905090565b61081c610815610a33565b8383610df0565b5050565b61083161082b610a33565b83610af4565b610870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086790611a73565b60405180910390fd5b61087c84848484610f5d565b50505050565b606061088d826109e8565b6000610897610fb9565b905060008151116108b757604051806020016040528060008152506108e2565b806108c184610fd0565b6040516020016108d29291906118ab565b6040516020818303038152906040525b915050919050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6109f18161117d565b610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790611a33565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610aae8361060e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610b008361060e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b425750610b4181856108ea565b5b80610b8057508373ffffffffffffffffffffffffffffffffffffffff16610b6884610430565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ba98261060e565b73ffffffffffffffffffffffffffffffffffffffff1614610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf690611993565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c66906119b3565b60405180910390fd5b610c7a8383836111e9565b610c85600082610a3b565b6001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610cd59190611bce565b925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d2c9190611b47565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610deb8383836111ee565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e56906119d3565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f509190611936565b60405180910390a3505050565b610f68848484610b89565b610f74848484846111f3565b610fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faa90611973565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000821415611018576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611178565b600082905060005b6000821461104a57808061103390611d1b565b915050600a826110439190611b9d565b9150611020565b60008167ffffffffffffffff81111561108c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156110be5781602001600182028036833780820191505090505b5090505b60008514611171576001826110d79190611bce565b9150600a856110e69190611d64565b60306110f29190611b47565b60f81b81838151811061112e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561116a9190611b9d565b94506110c2565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b60006112148473ffffffffffffffffffffffffffffffffffffffff1661138a565b1561137d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261123d610a33565b8786866040518563ffffffff1660e01b815260040161125f94939291906118ea565b602060405180830381600087803b15801561127957600080fd5b505af19250505080156112aa57506040513d601f19601f820116820180604052508101906112a7919061164e565b60015b61132d573d80600081146112da576040519150601f19603f3d011682016040523d82523d6000602084013e6112df565b606091505b50600081511415611325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131c90611973565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611382565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60006113c06113bb84611ad3565b611aae565b9050828152602081018484840111156113d857600080fd5b6113e3848285611c76565b509392505050565b6000813590506113fa816120dd565b92915050565b60008135905061140f816120f4565b92915050565b6000813590506114248161210b565b92915050565b6000815190506114398161210b565b92915050565b600082601f83011261145057600080fd5b81356114608482602086016113ad565b91505092915050565b60008135905061147881612122565b92915050565b60006020828403121561149057600080fd5b600061149e848285016113eb565b91505092915050565b600080604083850312156114ba57600080fd5b60006114c8858286016113eb565b92505060206114d9858286016113eb565b9150509250929050565b6000806000606084860312156114f857600080fd5b6000611506868287016113eb565b9350506020611517868287016113eb565b925050604061152886828701611469565b9150509250925092565b6000806000806080858703121561154857600080fd5b6000611556878288016113eb565b9450506020611567878288016113eb565b935050604061157887828801611469565b925050606085013567ffffffffffffffff81111561159557600080fd5b6115a18782880161143f565b91505092959194509250565b600080604083850312156115c057600080fd5b60006115ce858286016113eb565b92505060206115df85828601611400565b9150509250929050565b600080604083850312156115fc57600080fd5b600061160a858286016113eb565b925050602061161b85828601611469565b9150509250929050565b60006020828403121561163757600080fd5b600061164584828501611415565b91505092915050565b60006020828403121561166057600080fd5b600061166e8482850161142a565b91505092915050565b60006020828403121561168957600080fd5b600061169784828501611469565b91505092915050565b6116a981611c02565b82525050565b6116b881611c14565b82525050565b60006116c982611b04565b6116d38185611b1a565b93506116e3818560208601611c85565b6116ec81611e51565b840191505092915050565b600061170282611b0f565b61170c8185611b2b565b935061171c818560208601611c85565b61172581611e51565b840191505092915050565b600061173b82611b0f565b6117458185611b3c565b9350611755818560208601611c85565b80840191505092915050565b600061176e603283611b2b565b915061177982611e62565b604082019050919050565b6000611791602583611b2b565b915061179c82611eb1565b604082019050919050565b60006117b4602483611b2b565b91506117bf82611f00565b604082019050919050565b60006117d7601983611b2b565b91506117e282611f4f565b602082019050919050565b60006117fa602983611b2b565b915061180582611f78565b604082019050919050565b600061181d603e83611b2b565b915061182882611fc7565b604082019050919050565b6000611840601883611b2b565b915061184b82612016565b602082019050919050565b6000611863602183611b2b565b915061186e8261203f565b604082019050919050565b6000611886602e83611b2b565b91506118918261208e565b604082019050919050565b6118a581611c6c565b82525050565b60006118b78285611730565b91506118c38284611730565b91508190509392505050565b60006020820190506118e460008301846116a0565b92915050565b60006080820190506118ff60008301876116a0565b61190c60208301866116a0565b611919604083018561189c565b818103606083015261192b81846116be565b905095945050505050565b600060208201905061194b60008301846116af565b92915050565b6000602082019050818103600083015261196b81846116f7565b905092915050565b6000602082019050818103600083015261198c81611761565b9050919050565b600060208201905081810360008301526119ac81611784565b9050919050565b600060208201905081810360008301526119cc816117a7565b9050919050565b600060208201905081810360008301526119ec816117ca565b9050919050565b60006020820190508181036000830152611a0c816117ed565b9050919050565b60006020820190508181036000830152611a2c81611810565b9050919050565b60006020820190508181036000830152611a4c81611833565b9050919050565b60006020820190508181036000830152611a6c81611856565b9050919050565b60006020820190508181036000830152611a8c81611879565b9050919050565b6000602082019050611aa8600083018461189c565b92915050565b6000611ab8611ac9565b9050611ac48282611cea565b919050565b6000604051905090565b600067ffffffffffffffff821115611aee57611aed611e22565b5b611af782611e51565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000611b5282611c6c565b9150611b5d83611c6c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b9257611b91611d95565b5b828201905092915050565b6000611ba882611c6c565b9150611bb383611c6c565b925082611bc357611bc2611dc4565b5b828204905092915050565b6000611bd982611c6c565b9150611be483611c6c565b925082821015611bf757611bf6611d95565b5b828203905092915050565b6000611c0d82611c4c565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611ca3578082015181840152602081019050611c88565b83811115611cb2576000848401525b50505050565b60006002820490506001821680611cd057607f821691505b60208210811415611ce457611ce3611df3565b5b50919050565b611cf382611e51565b810181811067ffffffffffffffff82111715611d1257611d11611e22565b5b80604052505050565b6000611d2682611c6c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611d5957611d58611d95565b5b600182019050919050565b6000611d6f82611c6c565b9150611d7a83611c6c565b925082611d8a57611d89611dc4565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6120e681611c02565b81146120f157600080fd5b50565b6120fd81611c14565b811461210857600080fd5b50565b61211481611c20565b811461211f57600080fd5b50565b61212b81611c6c565b811461213657600080fd5b5056fea264697066735822122033c0e2c374b1f5e89ce566a3837920ba4aa13f7ad9687f77ce9ba6a56535776064736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var ERC721Upgradeable__factory = /** @class */ (function (_super) { - __extends(ERC721Upgradeable__factory, _super); - function ERC721Upgradeable__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "ERC721Upgradeable"; - return _this; - } - ERC721Upgradeable__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - ERC721Upgradeable__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - ERC721Upgradeable__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - ERC721Upgradeable__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - ERC721Upgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ERC721Upgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ERC721Upgradeable__factory.bytecode = _bytecode; - ERC721Upgradeable__factory.abi = _abi; - return ERC721Upgradeable__factory; -}(ethers_1.ContractFactory)); -exports.ERC721Upgradeable__factory = ERC721Upgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/ERC721__factory.js b/desci-contracts/typechain-types/factories/ERC721__factory.js deleted file mode 100644 index 0f23c0c07..000000000 --- a/desci-contracts/typechain-types/factories/ERC721__factory.js +++ /dev/null @@ -1,412 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.ERC721__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "string", - name: "name_", - type: "string" - }, - { - internalType: "string", - name: "symbol_", - type: "string" - }, - ], - stateMutability: "nonpayable", - type: "constructor" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address" - }, - { - indexed: false, - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "ApprovalForAll", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Transfer", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x60806040523480156200001157600080fd5b506040516200276538038062002765833981810160405281019062000037919062000193565b81600090805190602001906200004f92919062000071565b5080600190805190602001906200006892919062000071565b50505062000376565b8280546200007f906200029b565b90600052602060002090601f016020900481019282620000a35760008555620000ef565b82601f10620000be57805160ff1916838001178555620000ef565b82800160010185558215620000ef579182015b82811115620000ee578251825591602001919060010190620000d1565b5b509050620000fe919062000102565b5090565b5b808211156200011d57600081600090555060010162000103565b5090565b60006200013862000132846200022f565b62000206565b9050828152602081018484840111156200015157600080fd5b6200015e84828562000265565b509392505050565b600082601f8301126200017857600080fd5b81516200018a84826020860162000121565b91505092915050565b60008060408385031215620001a757600080fd5b600083015167ffffffffffffffff811115620001c257600080fd5b620001d08582860162000166565b925050602083015167ffffffffffffffff811115620001ee57600080fd5b620001fc8582860162000166565b9150509250929050565b60006200021262000225565b9050620002208282620002d1565b919050565b6000604051905090565b600067ffffffffffffffff8211156200024d576200024c62000336565b5b620002588262000365565b9050602081019050919050565b60005b838110156200028557808201518184015260208101905062000268565b8381111562000295576000848401525b50505050565b60006002820490506001821680620002b457607f821691505b60208210811415620002cb57620002ca62000307565b5b50919050565b620002dc8262000365565b810181811067ffffffffffffffff82111715620002fe57620002fd62000336565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6123df80620003866000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb46514610224578063b88d4fde14610240578063c87b56dd1461025c578063e985e9c51461028c576100cf565b80636352211e146101a657806370a08231146101d657806395d89b4114610206576100cf565b806301ffc9a7146100d457806306fdde0314610104578063081812fc14610122578063095ea7b31461015257806323b872dd1461016e57806342842e0e1461018a575b600080fd5b6100ee60048036038101906100e9919061196f565b6102bc565b6040516100fb9190611c80565b60405180910390f35b61010c61039e565b6040516101199190611c9b565b60405180910390f35b61013c600480360381019061013791906119c1565b610430565b6040516101499190611c19565b60405180910390f35b61016c60048036038101906101679190611933565b610476565b005b6101886004803603810190610183919061182d565b61058e565b005b6101a4600480360381019061019f919061182d565b6105ee565b005b6101c060048036038101906101bb91906119c1565b61060e565b6040516101cd9190611c19565b60405180910390f35b6101f060048036038101906101eb91906117c8565b610695565b6040516101fd9190611ddd565b60405180910390f35b61020e61074d565b60405161021b9190611c9b565b60405180910390f35b61023e600480360381019061023991906118f7565b6107df565b005b61025a6004803603810190610255919061187c565b6107f5565b005b610276600480360381019061027191906119c1565b610857565b6040516102839190611c9b565b60405180910390f35b6102a660048036038101906102a191906117f1565b6108bf565b6040516102b39190611c80565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610397575061039682610953565b5b9050919050565b6060600080546103ad90611fd1565b80601f01602080910402602001604051908101604052809291908181526020018280546103d990611fd1565b80156104265780601f106103fb57610100808354040283529160200191610426565b820191906000526020600020905b81548152906001019060200180831161040957829003601f168201915b5050505050905090565b600061043b826109bd565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104818261060e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e990611d9d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610511610a08565b73ffffffffffffffffffffffffffffffffffffffff161480610540575061053f8161053a610a08565b6108bf565b5b61057f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057690611dbd565b60405180910390fd5b6105898383610a10565b505050565b61059f610599610a08565b82610ac9565b6105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d590611cbd565b60405180910390fd5b6105e9838383610b5e565b505050565b610609838383604051806020016040528060008152506107f5565b505050565b60008061061a83610e58565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561068c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068390611d7d565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fd90611d5d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606001805461075c90611fd1565b80601f016020809104026020016040519081016040528092919081815260200182805461078890611fd1565b80156107d55780601f106107aa576101008083540402835291602001916107d5565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b5050505050905090565b6107f16107ea610a08565b8383610e95565b5050565b610806610800610a08565b83610ac9565b610845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c90611cbd565b60405180910390fd5b61085184848484611002565b50505050565b6060610862826109bd565b600061086c61105e565b9050600081511161088c57604051806020016040528060008152506108b7565b8061089684611075565b6040516020016108a7929190611bf5565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6109c681611199565b610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc90611d7d565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610a838361060e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610ad58361060e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b175750610b1681856108bf565b5b80610b5557508373ffffffffffffffffffffffffffffffffffffffff16610b3d84610430565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610b7e8261060e565b73ffffffffffffffffffffffffffffffffffffffff1614610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb90611cfd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b90611d1d565b60405180910390fd5b610c5183838360016111da565b8273ffffffffffffffffffffffffffffffffffffffff16610c718261060e565b73ffffffffffffffffffffffffffffffffffffffff1614610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe90611cfd565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610e538383836001611300565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90611d3d565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610ff59190611c80565b60405180910390a3505050565b61100d848484610b5e565b61101984848484611306565b611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90611cdd565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060600060016110848461149d565b01905060008167ffffffffffffffff8111156110c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156110fb5781602001600182028036833780820191505090505b509050600082602001820190505b60011561118e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611178577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b04945060008514156111895761118e565b611109565b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166111bb83610e58565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60018111156112fa57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461126e5780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112669190611ee7565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146112f95780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112f19190611e91565b925050819055505b5b50505050565b50505050565b60006113278473ffffffffffffffffffffffffffffffffffffffff166116d4565b15611490578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611350610a08565b8786866040518563ffffffff1660e01b81526004016113729493929190611c34565b602060405180830381600087803b15801561138c57600080fd5b505af19250505080156113bd57506040513d601f19601f820116820180604052508101906113ba9190611998565b60015b611440573d80600081146113ed576040519150601f19603f3d011682016040523d82523d6000602084013e6113f2565b606091505b50600081511415611438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142f90611cdd565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611495565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611521577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611517577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611584576d04ee2d6d415b85acef8100000000838161157a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506020810190505b662386f26fc1000083106115d957662386f26fc1000083816115cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506010810190505b6305f5e1008310611628576305f5e100838161161e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506008810190505b6127108310611673576127108381611669577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506004810190505b606483106116bc57606483816116b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506002810190505b600a83106116cb576001810190505b80915050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600061170a61170584611e1d565b611df8565b90508281526020810184848401111561172257600080fd5b61172d848285611f8f565b509392505050565b6000813590506117448161234d565b92915050565b60008135905061175981612364565b92915050565b60008135905061176e8161237b565b92915050565b6000815190506117838161237b565b92915050565b600082601f83011261179a57600080fd5b81356117aa8482602086016116f7565b91505092915050565b6000813590506117c281612392565b92915050565b6000602082840312156117da57600080fd5b60006117e884828501611735565b91505092915050565b6000806040838503121561180457600080fd5b600061181285828601611735565b925050602061182385828601611735565b9150509250929050565b60008060006060848603121561184257600080fd5b600061185086828701611735565b935050602061186186828701611735565b9250506040611872868287016117b3565b9150509250925092565b6000806000806080858703121561189257600080fd5b60006118a087828801611735565b94505060206118b187828801611735565b93505060406118c2878288016117b3565b925050606085013567ffffffffffffffff8111156118df57600080fd5b6118eb87828801611789565b91505092959194509250565b6000806040838503121561190a57600080fd5b600061191885828601611735565b92505060206119298582860161174a565b9150509250929050565b6000806040838503121561194657600080fd5b600061195485828601611735565b9250506020611965858286016117b3565b9150509250929050565b60006020828403121561198157600080fd5b600061198f8482850161175f565b91505092915050565b6000602082840312156119aa57600080fd5b60006119b884828501611774565b91505092915050565b6000602082840312156119d357600080fd5b60006119e1848285016117b3565b91505092915050565b6119f381611f1b565b82525050565b611a0281611f2d565b82525050565b6000611a1382611e4e565b611a1d8185611e64565b9350611a2d818560208601611f9e565b611a36816120c1565b840191505092915050565b6000611a4c82611e59565b611a568185611e75565b9350611a66818560208601611f9e565b611a6f816120c1565b840191505092915050565b6000611a8582611e59565b611a8f8185611e86565b9350611a9f818560208601611f9e565b80840191505092915050565b6000611ab8602d83611e75565b9150611ac3826120d2565b604082019050919050565b6000611adb603283611e75565b9150611ae682612121565b604082019050919050565b6000611afe602583611e75565b9150611b0982612170565b604082019050919050565b6000611b21602483611e75565b9150611b2c826121bf565b604082019050919050565b6000611b44601983611e75565b9150611b4f8261220e565b602082019050919050565b6000611b67602983611e75565b9150611b7282612237565b604082019050919050565b6000611b8a601883611e75565b9150611b9582612286565b602082019050919050565b6000611bad602183611e75565b9150611bb8826122af565b604082019050919050565b6000611bd0603d83611e75565b9150611bdb826122fe565b604082019050919050565b611bef81611f85565b82525050565b6000611c018285611a7a565b9150611c0d8284611a7a565b91508190509392505050565b6000602082019050611c2e60008301846119ea565b92915050565b6000608082019050611c4960008301876119ea565b611c5660208301866119ea565b611c636040830185611be6565b8181036060830152611c758184611a08565b905095945050505050565b6000602082019050611c9560008301846119f9565b92915050565b60006020820190508181036000830152611cb58184611a41565b905092915050565b60006020820190508181036000830152611cd681611aab565b9050919050565b60006020820190508181036000830152611cf681611ace565b9050919050565b60006020820190508181036000830152611d1681611af1565b9050919050565b60006020820190508181036000830152611d3681611b14565b9050919050565b60006020820190508181036000830152611d5681611b37565b9050919050565b60006020820190508181036000830152611d7681611b5a565b9050919050565b60006020820190508181036000830152611d9681611b7d565b9050919050565b60006020820190508181036000830152611db681611ba0565b9050919050565b60006020820190508181036000830152611dd681611bc3565b9050919050565b6000602082019050611df26000830184611be6565b92915050565b6000611e02611e13565b9050611e0e8282612003565b919050565b6000604051905090565b600067ffffffffffffffff821115611e3857611e37612092565b5b611e41826120c1565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000611e9c82611f85565b9150611ea783611f85565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611edc57611edb612034565b5b828201905092915050565b6000611ef282611f85565b9150611efd83611f85565b925082821015611f1057611f0f612034565b5b828203905092915050565b6000611f2682611f65565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611fbc578082015181840152602081019050611fa1565b83811115611fcb576000848401525b50505050565b60006002820490506001821680611fe957607f821691505b60208210811415611ffd57611ffc612063565b5b50919050565b61200c826120c1565b810181811067ffffffffffffffff8211171561202b5761202a612092565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b61235681611f1b565b811461236157600080fd5b50565b61236d81611f2d565b811461237857600080fd5b50565b61238481611f39565b811461238f57600080fd5b50565b61239b81611f85565b81146123a657600080fd5b5056fea2646970667358221220655f8874a44849536c27d3d91af607a2536bac828e59188fefce18ad471c90b164736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var ERC721__factory = /** @class */ (function (_super) { - __extends(ERC721__factory, _super); - function ERC721__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "ERC721"; - return _this; - } - ERC721__factory.prototype.deploy = function (name_, symbol_, overrides) { - return _super.prototype.deploy.call(this, name_, symbol_, overrides || {}); - }; - ERC721__factory.prototype.getDeployTransaction = function (name_, symbol_, overrides) { - return _super.prototype.getDeployTransaction.call(this, name_, symbol_, overrides || {}); - }; - ERC721__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - ERC721__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - ERC721__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ERC721__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ERC721__factory.bytecode = _bytecode; - ERC721__factory.abi = _abi; - return ERC721__factory; -}(ethers_1.ContractFactory)); -exports.ERC721__factory = ERC721__factory; diff --git a/desci-contracts/typechain-types/factories/IDpidRegistry__factory.js b/desci-contracts/typechain-types/factories/IDpidRegistry__factory.js deleted file mode 100644 index bdedaa146..000000000 --- a/desci-contracts/typechain-types/factories/IDpidRegistry__factory.js +++ /dev/null @@ -1,94 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IDpidRegistry__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "entryId", - type: "uint256" - }, - ], - name: "get", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - ], - name: "getOrganization", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "entry", - type: "uint256" - }, - ], - name: "put", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "payable", - type: "function" - }, -]; -var IDpidRegistry__factory = /** @class */ (function () { - function IDpidRegistry__factory() { - } - IDpidRegistry__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IDpidRegistry__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IDpidRegistry__factory.abi = _abi; - return IDpidRegistry__factory; -}()); -exports.IDpidRegistry__factory = IDpidRegistry__factory; diff --git a/desci-contracts/typechain-types/factories/IERC165Upgradeable__factory.js b/desci-contracts/typechain-types/factories/IERC165Upgradeable__factory.js deleted file mode 100644 index 623a8e0fd..000000000 --- a/desci-contracts/typechain-types/factories/IERC165Upgradeable__factory.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC165Upgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, -]; -var IERC165Upgradeable__factory = /** @class */ (function () { - function IERC165Upgradeable__factory() { - } - IERC165Upgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC165Upgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC165Upgradeable__factory.abi = _abi; - return IERC165Upgradeable__factory; -}()); -exports.IERC165Upgradeable__factory = IERC165Upgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/IERC165__factory.js b/desci-contracts/typechain-types/factories/IERC165__factory.js deleted file mode 100644 index 2957cbadc..000000000 --- a/desci-contracts/typechain-types/factories/IERC165__factory.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC165__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, -]; -var IERC165__factory = /** @class */ (function () { - function IERC165__factory() { - } - IERC165__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC165__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC165__factory.abi = _abi; - return IERC165__factory; -}()); -exports.IERC165__factory = IERC165__factory; diff --git a/desci-contracts/typechain-types/factories/IERC721MetadataUpgradeable__factory.js b/desci-contracts/typechain-types/factories/IERC721MetadataUpgradeable__factory.js deleted file mode 100644 index 9f0fbe49c..000000000 --- a/desci-contracts/typechain-types/factories/IERC721MetadataUpgradeable__factory.js +++ /dev/null @@ -1,352 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC721MetadataUpgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address" - }, - { - indexed: false, - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "ApprovalForAll", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Transfer", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "balance", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "bool", - name: "_approved", - type: "bool" - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var IERC721MetadataUpgradeable__factory = /** @class */ (function () { - function IERC721MetadataUpgradeable__factory() { - } - IERC721MetadataUpgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC721MetadataUpgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC721MetadataUpgradeable__factory.abi = _abi; - return IERC721MetadataUpgradeable__factory; -}()); -exports.IERC721MetadataUpgradeable__factory = IERC721MetadataUpgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/IERC721Metadata__factory.js b/desci-contracts/typechain-types/factories/IERC721Metadata__factory.js deleted file mode 100644 index fdebc69bd..000000000 --- a/desci-contracts/typechain-types/factories/IERC721Metadata__factory.js +++ /dev/null @@ -1,352 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC721Metadata__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address" - }, - { - indexed: false, - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "ApprovalForAll", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Transfer", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "balance", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "bool", - name: "_approved", - type: "bool" - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var IERC721Metadata__factory = /** @class */ (function () { - function IERC721Metadata__factory() { - } - IERC721Metadata__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC721Metadata__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC721Metadata__factory.abi = _abi; - return IERC721Metadata__factory; -}()); -exports.IERC721Metadata__factory = IERC721Metadata__factory; diff --git a/desci-contracts/typechain-types/factories/IERC721ReceiverUpgradeable__factory.js b/desci-contracts/typechain-types/factories/IERC721ReceiverUpgradeable__factory.js deleted file mode 100644 index 6dcbf9b1c..000000000 --- a/desci-contracts/typechain-types/factories/IERC721ReceiverUpgradeable__factory.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC721ReceiverUpgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "onERC721Received", - outputs: [ - { - internalType: "bytes4", - name: "", - type: "bytes4" - }, - ], - stateMutability: "nonpayable", - type: "function" - }, -]; -var IERC721ReceiverUpgradeable__factory = /** @class */ (function () { - function IERC721ReceiverUpgradeable__factory() { - } - IERC721ReceiverUpgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC721ReceiverUpgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC721ReceiverUpgradeable__factory.abi = _abi; - return IERC721ReceiverUpgradeable__factory; -}()); -exports.IERC721ReceiverUpgradeable__factory = IERC721ReceiverUpgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/IERC721Receiver__factory.js b/desci-contracts/typechain-types/factories/IERC721Receiver__factory.js deleted file mode 100644 index f6208cee7..000000000 --- a/desci-contracts/typechain-types/factories/IERC721Receiver__factory.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC721Receiver__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "onERC721Received", - outputs: [ - { - internalType: "bytes4", - name: "", - type: "bytes4" - }, - ], - stateMutability: "nonpayable", - type: "function" - }, -]; -var IERC721Receiver__factory = /** @class */ (function () { - function IERC721Receiver__factory() { - } - IERC721Receiver__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC721Receiver__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC721Receiver__factory.abi = _abi; - return IERC721Receiver__factory; -}()); -exports.IERC721Receiver__factory = IERC721Receiver__factory; diff --git a/desci-contracts/typechain-types/factories/IERC721Upgradeable__factory.js b/desci-contracts/typechain-types/factories/IERC721Upgradeable__factory.js deleted file mode 100644 index 2f144bf7d..000000000 --- a/desci-contracts/typechain-types/factories/IERC721Upgradeable__factory.js +++ /dev/null @@ -1,307 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC721Upgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address" - }, - { - indexed: false, - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "ApprovalForAll", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Transfer", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "balance", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "bool", - name: "_approved", - type: "bool" - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var IERC721Upgradeable__factory = /** @class */ (function () { - function IERC721Upgradeable__factory() { - } - IERC721Upgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC721Upgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC721Upgradeable__factory.abi = _abi; - return IERC721Upgradeable__factory; -}()); -exports.IERC721Upgradeable__factory = IERC721Upgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/IERC721__factory.js b/desci-contracts/typechain-types/factories/IERC721__factory.js deleted file mode 100644 index 5c9e78b91..000000000 --- a/desci-contracts/typechain-types/factories/IERC721__factory.js +++ /dev/null @@ -1,307 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.IERC721__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address" - }, - { - indexed: false, - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "ApprovalForAll", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Transfer", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "balance", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "bool", - name: "_approved", - type: "bool" - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var IERC721__factory = /** @class */ (function () { - function IERC721__factory() { - } - IERC721__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - IERC721__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - IERC721__factory.abi = _abi; - return IERC721__factory; -}()); -exports.IERC721__factory = IERC721__factory; diff --git a/desci-contracts/typechain-types/factories/Initializable__factory.js b/desci-contracts/typechain-types/factories/Initializable__factory.js deleted file mode 100644 index 04087930e..000000000 --- a/desci-contracts/typechain-types/factories/Initializable__factory.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.Initializable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, -]; -var Initializable__factory = /** @class */ (function () { - function Initializable__factory() { - } - Initializable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - Initializable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - Initializable__factory.abi = _abi; - return Initializable__factory; -}()); -exports.Initializable__factory = Initializable__factory; diff --git a/desci-contracts/typechain-types/factories/OwnableUpgradeable__factory.js b/desci-contracts/typechain-types/factories/OwnableUpgradeable__factory.js deleted file mode 100644 index 9b9ec6796..000000000 --- a/desci-contracts/typechain-types/factories/OwnableUpgradeable__factory.js +++ /dev/null @@ -1,87 +0,0 @@ -"use strict"; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -exports.__esModule = true; -exports.OwnableUpgradeable__factory = void 0; -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address" - }, - ], - name: "OwnershipTransferred", - type: "event" - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address" - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var OwnableUpgradeable__factory = /** @class */ (function () { - function OwnableUpgradeable__factory() { - } - OwnableUpgradeable__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - OwnableUpgradeable__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - OwnableUpgradeable__factory.abi = _abi; - return OwnableUpgradeable__factory; -}()); -exports.OwnableUpgradeable__factory = OwnableUpgradeable__factory; diff --git a/desci-contracts/typechain-types/factories/PausableUpgradeable__factory.ts b/desci-contracts/typechain-types/factories/PausableUpgradeable__factory.ts new file mode 100644 index 000000000..8fd62b94a --- /dev/null +++ b/desci-contracts/typechain-types/factories/PausableUpgradeable__factory.ts @@ -0,0 +1,78 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + PausableUpgradeable, + PausableUpgradeableInterface, +} from "../PausableUpgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "Paused", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "Unpaused", + type: "event", + }, + { + inputs: [], + name: "paused", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +export class PausableUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): PausableUpgradeableInterface { + return new utils.Interface(_abi) as PausableUpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): PausableUpgradeable { + return new Contract(address, _abi, signerOrProvider) as PausableUpgradeable; + } +} diff --git a/desci-contracts/typechain-types/factories/ResearchObjectMigrated__factory.js b/desci-contracts/typechain-types/factories/ResearchObjectMigrated__factory.js deleted file mode 100644 index 903ff476d..000000000 --- a/desci-contracts/typechain-types/factories/ResearchObjectMigrated__factory.js +++ /dev/null @@ -1,790 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.ResearchObjectMigrated__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address" - }, - { - indexed: false, - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "ApprovalForAll", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address" - }, - ], - name: "OwnershipTransferred", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Transfer", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "_uuid", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "_cid", - type: "bytes" - }, - ], - name: "VersionPush", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "_uuid", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "_cid", - type: "bytes" - }, - { - indexed: false, - internalType: "uint256", - name: "_migration_timestamp", - type: "uint256" - }, - ], - name: "VersionPushMigrated", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "__ResearchObjectV2_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - }, - ], - name: "__VersionedERC721V2_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "_dpidRegistry", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - { - internalType: "uint256", - name: "timestamp", - type: "uint256" - }, - { - internalType: "uint256", - name: "dpid", - type: "uint256" - }, - ], - internalType: "struct MigrationData[]", - name: "importData", - type: "tuple[]" - }, - { - internalType: "bytes32", - name: "defaultPrefix", - type: "bytes32" - }, - ], - name: "_importChunk", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "expectedDpid", - type: "uint256" - }, - { - internalType: "uint256", - name: "timestamp", - type: "uint256" - }, - { - internalType: "address", - name: "targetAccount", - type: "address" - }, - ], - name: "_importWithDpid", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - name: "_metadata", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "expectedDpid", - type: "uint256" - }, - ], - name: "mintWithDpid", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "setRegistry", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "string", - name: "uri", - type: "string" - }, - ], - name: "setURI", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address" - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "updateMetadata", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x60806040523480156200001157600080fd5b50620000226200003860201b60201c565b620000326200003860201b60201c565b620001e3565b600060019054906101000a900460ff16156200008b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000829062000137565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000fd5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000f4919062000159565b60405180910390a15b565b60006200010e60278362000176565b91506200011b8262000194565b604082019050919050565b620001318162000187565b82525050565b600060208201905081810360008301526200015281620000ff565b9050919050565b600060208201905062000170600083018462000126565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b6142be80620001f36000396000f3fe6080604052600436106101c25760003560e01c806385198761116100f7578063b88d4fde11610095578063db7fd40811610064578063db7fd40814610623578063e985e9c51461064c578063f2fde38b14610689578063ffe77b0f146106b2576101c2565b8063b88d4fde14610578578063c4d66de8146105a1578063c87b56dd146105ca578063c88efd1514610607576101c2565b80639a7fad40116100d15780639a7fad40146104d4578063a22cb465146104fd578063a91ee0dc14610526578063af3ba9c11461054f576101c2565b806385198761146104625780638da5cb5b1461047e57806395d89b41146104a9576101c2565b80633dcd3236116101645780634f558e791161013e5780634f558e79146103945780636352211e146103d157806370a082311461040e578063715018a61461044b576101c2565b80633dcd3236146103245780633e8513181461034f57806342842e0e1461036b576101c2565b8063081812fc116101a0578063081812fc14610258578063095ea7b31461029557806313859f46146102be57806323b872dd146102fb576101c2565b806301ffc9a7146101c757806302fe53051461020457806306fdde031461022d575b600080fd5b3480156101d357600080fd5b506101ee60048036038101906101e99190612f42565b6106db565b6040516101fb919061364f565b60405180910390f35b34801561021057600080fd5b5061022b60048036038101906102269190612f94565b6107bd565b005b34801561023957600080fd5b506102426107df565b60405161024f9190613700565b60405180910390f35b34801561026457600080fd5b5061027f600480360381019061027a9190613041565b610871565b60405161028c91906135e8565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b79190612eb2565b6108b7565b005b3480156102ca57600080fd5b506102e560048036038101906102e09190613041565b6109cf565b6040516102f29190613693565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d9190612dac565b610a6f565b005b34801561033057600080fd5b50610339610acf565b60405161034691906135e8565b60405180910390f35b610369600480360381019061036491906131bf565b610af5565b005b34801561037757600080fd5b50610392600480360381019061038d9190612dac565b610d1e565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190613041565b610d3e565b6040516103c8919061364f565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190613041565b610d50565b60405161040591906135e8565b60405180910390f35b34801561041a57600080fd5b5061043560048036038101906104309190612d47565b610e02565b6040516104429190613962565b60405180910390f35b34801561045757600080fd5b50610460610eba565b005b61047c60048036038101906104779190612eee565b610ece565b005b34801561048a57600080fd5b50610493610f62565b6040516104a091906135e8565b60405180910390f35b3480156104b557600080fd5b506104be610f8c565b6040516104cb9190613700565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f6919061316b565b61101e565b005b34801561050957600080fd5b50610524600480360381019061051f9190612e76565b61113c565b005b34801561053257600080fd5b5061054d60048036038101906105489190612d47565b611152565b005b34801561055b57600080fd5b5061057660048036038101906105719190612fd5565b61119e565b005b34801561058457600080fd5b5061059f600480360381019061059a9190612dfb565b6111fb565b005b3480156105ad57600080fd5b506105c860048036038101906105c39190612d47565b61125d565b005b3480156105d657600080fd5b506105f160048036038101906105ec9190613041565b6113e6565b6040516105fe9190613700565b60405180910390f35b610621600480360381019061061c91906130eb565b61144e565b005b34801561062f57600080fd5b5061064a60048036038101906106459190613093565b61155d565b005b34801561065857600080fd5b50610673600480360381019061066e9190612d70565b6115cd565b604051610680919061364f565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab9190612d47565b611661565b005b3480156106be57600080fd5b506106d960048036038101906106d49190612d47565b6116e5565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107a657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107b657506107b5826118d9565b5b9050919050565b6107c5611943565b8060ca90805190602001906107db929190612921565b5050565b6060606580546107ee90613c0d565b80601f016020809104026020016040519081016040528092919081815260200182805461081a90613c0d565b80156108675780601f1061083c57610100808354040283529160200191610867565b820191906000526020600020905b81548152906001019060200180831161084a57829003601f168201915b5050505050905090565b600061087c826119c1565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108c282610d50565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a90613902565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610952611a0c565b73ffffffffffffffffffffffffffffffffffffffff16148061098157506109808161097b611a0c565b6115cd565b5b6109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b790613862565b60405180910390fd5b6109ca8383611a14565b505050565b609760205280600052604060002060009150905080546109ee90613c0d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1a90613c0d565b8015610a675780601f10610a3c57610100808354040283529160200191610a67565b820191906000526020600020905b815481529060010190602001808311610a4a57829003601f168201915b505050505081565b610a80610a7a611a0c565b82611acd565b610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab690613942565b60405180910390fd5b610aca838383611b62565b505050565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610afd611943565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166318ae19c287876040518363ffffffff1660e01b8152600401610b6192919061366a565b60206040518083038186803b158015610b7957600080fd5b505afa158015610b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb1919061306a565b9050600083905060008990506000831415610cb75760008473ffffffffffffffffffffffffffffffffffffffff1663da4a9842348b8e6040518463ffffffff1660e01b8152600401610c0492919061366a565b6020604051808303818588803b158015610c1d57600080fd5b505af1158015610c31573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c56919061306a565b9050808814610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c91906137a2565b60405180910390fd5b610ca48383611dc9565b610cb5610caf611a0c565b83611a14565b505b610cc18a8a61101e565b808273ffffffffffffffffffffffffffffffffffffffff167f4c2f0fd1019fdc5963138c1513932ae5dca836a3b35e8bd71a68803dec00ea1d8b89604051610d0a9291906136b5565b60405180910390a350505050505050505050565b610d39838383604051806020016040528060008152506111fb565b505050565b6000610d4982611de7565b9050919050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df0906138e2565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90613822565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec2611943565b610ecc6000611e53565b565b610ed6611943565b60005b8251811015610f5d576000838281518110610f1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050610f498160200151826040015185846080015185606001518660000151610af5565b508080610f5590613c70565b915050610ed9565b505050565b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060668054610f9b90613c0d565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc790613c0d565b80156110145780601f10610fe957610100808354040283529160200191611014565b820191906000526020600020905b815481529060010190602001808311610ff757829003601f168201915b5050505050905090565b816000611029611a0c565b905060008173ffffffffffffffffffffffffffffffffffffffff1661104d84610d50565b73ffffffffffffffffffffffffffffffffffffffff16148061107557506110748284611acd565b5b9050806110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ae906138a2565b60405180910390fd5b836097600087815260200190815260200160002090805190602001906110de9291906129a7565b50846110e8611a0c565b73ffffffffffffffffffffffffffffffffffffffff167fabddf73bfc8efbf8287a09ea355e43cf6c0c22880ce0470affeba5271c0a76948660405161112d9190613693565b60405180910390a35050505050565b61114e611147611a0c565b8383611f19565b5050565b61115a611943565b8060cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060019054906101000a900460ff166111ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e490613922565b60405180910390fd5b6111f78282612086565b5050565b61120c611206611a0c565b83611acd565b61124b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124290613942565b60405180910390fd5b611257848484846120e3565b50505050565b60008060019054906101000a900460ff1615905080801561128e5750600160008054906101000a900460ff1660ff16105b806112bb575061129d3061213f565b1580156112ba5750600160008054906101000a900460ff1660ff16145b5b6112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613842565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611337576001600060016101000a81548160ff0219169083151502179055505b611340826116e5565b611348612162565b8160cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156113e25760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516113d991906136e5565b60405180910390a15b5050565b60606113f1826119c1565b60006113fb6121bb565b9050600081511161141b5760405180602001604052806000815250611446565b806114258461224d565b6040516020016114369291906135c4565b6040516020818303038152906040525b915050919050565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663da4a984234868a6040518463ffffffff1660e01b81526004016114b392919061366a565b6020604051808303818588803b1580156114cc57600080fd5b505af11580156114e0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611505919061306a565b9050808314611549576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611540906137a2565b60405180910390fd5b61155487878761155d565b50505050505050565b6000611567611a0c565b905060008490506115788282611dc9565b6115c68585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061101e565b5050505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611669611943565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d090613742565b60405180910390fd5b6116e281611e53565b50565b60008060019054906101000a900460ff161590508080156117165750600160008054906101000a900460ff1660ff16105b8061174357506117253061213f565b1580156117425750600160008054906101000a900460ff1660ff16145b5b611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177990613842565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156117bf576001600060016101000a81548160ff0219169083151502179055505b6118336040518060400160405280601581526020017f4465536369205265736561726368204f626a65637400000000000000000000008152506040518060400160405280600a81526020017f44655363692d4e6f64650000000000000000000000000000000000000000000081525061119e565b61183b612162565b8160cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156118d55760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516118cc91906136e5565b60405180910390a15b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61194b611a0c565b73ffffffffffffffffffffffffffffffffffffffff16611969610f62565b73ffffffffffffffffffffffffffffffffffffffff16146119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b6906138c2565b60405180910390fd5b565b6119ca81611de7565b611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a00906138e2565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a8783610d50565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611ad983610d50565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b1b5750611b1a81856115cd565b5b80611b5957508373ffffffffffffffffffffffffffffffffffffffff16611b4184610871565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b8282610d50565b73ffffffffffffffffffffffffffffffffffffffff1614611bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcf90613762565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3f906137c2565b60405180910390fd5b611c538383836123fa565b611c5e600082611a14565b6001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cae9190613afa565b925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d059190613a73565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611dc483838361246e565b505050565b611de3828260405180602001604052806000815250612473565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f906137e2565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612079919061364f565b60405180910390a3505050565b600060019054906101000a900460ff166120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc90613922565b60405180910390fd5b6120df82826124ce565b5050565b6120ee848484611b62565b6120fa8484848461254f565b612139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213090613722565b60405180910390fd5b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a890613922565b60405180910390fd5b6121b96126e6565b565b606060ca80546121ca90613c0d565b80601f01602080910402602001604051908101604052809291908181526020018280546121f690613c0d565b80156122435780601f1061221857610100808354040283529160200191612243565b820191906000526020600020905b81548152906001019060200180831161222657829003601f168201915b5050505050905090565b60606000821415612295576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506123f5565b600082905060005b600082146122c75780806122b090613c70565b915050600a826122c09190613ac9565b915061229d565b60008167ffffffffffffffff811115612309577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561233b5781602001600182028036833780820191505090505b5090505b600085146123ee576001826123549190613afa565b9150600a856123639190613cb9565b603061236f9190613a73565b60f81b8183815181106123ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856123e79190613ac9565b945061233f565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246090613802565b60405180910390fd5b505050565b505050565b61247d8383612747565b61248a600084848461254f565b6124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c090613722565b60405180910390fd5b505050565b600060019054906101000a900460ff1661251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251490613922565b60405180910390fd5b8160659080519060200190612533929190612921565b50806066908051906020019061254a929190612921565b505050565b60006125708473ffffffffffffffffffffffffffffffffffffffff1661213f565b156126d9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612599611a0c565b8786866040518563ffffffff1660e01b81526004016125bb9493929190613603565b602060405180830381600087803b1580156125d557600080fd5b505af192505050801561260657506040513d601f19601f820116820180604052508101906126039190612f6b565b60015b612689573d8060008114612636576040519150601f19603f3d011682016040523d82523d6000602084013e61263b565b606091505b50600081511415612681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267890613722565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506126de565b600190505b949350505050565b600060019054906101000a900460ff16612735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272c90613922565b60405180910390fd5b612745612740611a0c565b611e53565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ae90613882565b60405180910390fd5b6127c081611de7565b15612800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f790613782565b60405180910390fd5b61280c600083836123fa565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461285c9190613a73565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461291d6000838361246e565b5050565b82805461292d90613c0d565b90600052602060002090601f01602090048101928261294f5760008555612996565b82601f1061296857805160ff1916838001178555612996565b82800160010185558215612996579182015b8281111561299557825182559160200191906001019061297a565b5b5090506129a39190612a2d565b5090565b8280546129b390613c0d565b90600052602060002090601f0160209004810192826129d55760008555612a1c565b82601f106129ee57805160ff1916838001178555612a1c565b82800160010185558215612a1c579182015b82811115612a1b578251825591602001919060010190612a00565b5b509050612a299190612a2d565b5090565b5b80821115612a46576000816000905550600101612a2e565b5090565b6000612a5d612a58846139a2565b61397d565b90508083825260208201905082856020860282011115612a7c57600080fd5b60005b85811015612ac657813567ffffffffffffffff811115612a9e57600080fd5b808601612aab8982612c7d565b85526020850194506020840193505050600181019050612a7f565b5050509392505050565b6000612ae3612ade846139ce565b61397d565b905082815260208101848484011115612afb57600080fd5b612b06848285613bcb565b509392505050565b6000612b21612b1c846139ff565b61397d565b905082815260208101848484011115612b3957600080fd5b612b44848285613bcb565b509392505050565b600081359050612b5b81614215565b92915050565b600082601f830112612b7257600080fd5b8135612b82848260208601612a4a565b91505092915050565b600081359050612b9a8161422c565b92915050565b600081359050612baf81614243565b92915050565b600081359050612bc48161425a565b92915050565b600081519050612bd98161425a565b92915050565b60008083601f840112612bf157600080fd5b8235905067ffffffffffffffff811115612c0a57600080fd5b602083019150836001820283011115612c2257600080fd5b9250929050565b600082601f830112612c3a57600080fd5b8135612c4a848260208601612ad0565b91505092915050565b600082601f830112612c6457600080fd5b8135612c74848260208601612b0e565b91505092915050565b600060a08284031215612c8f57600080fd5b612c9960a061397d565b90506000612ca984828501612b4c565b6000830152506020612cbd84828501612d1d565b602083015250604082013567ffffffffffffffff811115612cdd57600080fd5b612ce984828501612c29565b6040830152506060612cfd84828501612d1d565b6060830152506080612d1184828501612d1d565b60808301525092915050565b600081359050612d2c81614271565b92915050565b600081519050612d4181614271565b92915050565b600060208284031215612d5957600080fd5b6000612d6784828501612b4c565b91505092915050565b60008060408385031215612d8357600080fd5b6000612d9185828601612b4c565b9250506020612da285828601612b4c565b9150509250929050565b600080600060608486031215612dc157600080fd5b6000612dcf86828701612b4c565b9350506020612de086828701612b4c565b9250506040612df186828701612d1d565b9150509250925092565b60008060008060808587031215612e1157600080fd5b6000612e1f87828801612b4c565b9450506020612e3087828801612b4c565b9350506040612e4187828801612d1d565b925050606085013567ffffffffffffffff811115612e5e57600080fd5b612e6a87828801612c29565b91505092959194509250565b60008060408385031215612e8957600080fd5b6000612e9785828601612b4c565b9250506020612ea885828601612b8b565b9150509250929050565b60008060408385031215612ec557600080fd5b6000612ed385828601612b4c565b9250506020612ee485828601612d1d565b9150509250929050565b60008060408385031215612f0157600080fd5b600083013567ffffffffffffffff811115612f1b57600080fd5b612f2785828601612b61565b9250506020612f3885828601612ba0565b9150509250929050565b600060208284031215612f5457600080fd5b6000612f6284828501612bb5565b91505092915050565b600060208284031215612f7d57600080fd5b6000612f8b84828501612bca565b91505092915050565b600060208284031215612fa657600080fd5b600082013567ffffffffffffffff811115612fc057600080fd5b612fcc84828501612c53565b91505092915050565b60008060408385031215612fe857600080fd5b600083013567ffffffffffffffff81111561300257600080fd5b61300e85828601612c53565b925050602083013567ffffffffffffffff81111561302b57600080fd5b61303785828601612c53565b9150509250929050565b60006020828403121561305357600080fd5b600061306184828501612d1d565b91505092915050565b60006020828403121561307c57600080fd5b600061308a84828501612d32565b91505092915050565b6000806000604084860312156130a857600080fd5b60006130b686828701612d1d565b935050602084013567ffffffffffffffff8111156130d357600080fd5b6130df86828701612bdf565b92509250509250925092565b60008060008060006080868803121561310357600080fd5b600061311188828901612d1d565b955050602086013567ffffffffffffffff81111561312e57600080fd5b61313a88828901612bdf565b9450945050604061314d88828901612ba0565b925050606061315e88828901612d1d565b9150509295509295909350565b6000806040838503121561317e57600080fd5b600061318c85828601612d1d565b925050602083013567ffffffffffffffff8111156131a957600080fd5b6131b585828601612c29565b9150509250929050565b60008060008060008060c087890312156131d857600080fd5b60006131e689828a01612d1d565b965050602087013567ffffffffffffffff81111561320357600080fd5b61320f89828a01612c29565b955050604061322089828a01612ba0565b945050606061323189828a01612d1d565b935050608061324289828a01612d1d565b92505060a061325389828a01612b4c565b9150509295509295509295565b61326981613b2e565b82525050565b61327881613b40565b82525050565b61328781613b4c565b82525050565b600061329882613a30565b6132a28185613a46565b93506132b2818560208601613bda565b6132bb81613da6565b840191505092915050565b6132cf81613bb9565b82525050565b60006132e082613a3b565b6132ea8185613a57565b93506132fa818560208601613bda565b61330381613da6565b840191505092915050565b600061331982613a3b565b6133238185613a68565b9350613333818560208601613bda565b80840191505092915050565b600061334c603283613a57565b915061335782613db7565b604082019050919050565b600061336f602683613a57565b915061337a82613e06565b604082019050919050565b6000613392602583613a57565b915061339d82613e55565b604082019050919050565b60006133b5601c83613a57565b91506133c082613ea4565b602082019050919050565b60006133d8600f83613a57565b91506133e382613ecd565b602082019050919050565b60006133fb602483613a57565b915061340682613ef6565b604082019050919050565b600061341e601983613a57565b915061342982613f45565b602082019050919050565b6000613441600b83613a57565b915061344c82613f6e565b602082019050919050565b6000613464602983613a57565b915061346f82613f97565b604082019050919050565b6000613487602e83613a57565b915061349282613fe6565b604082019050919050565b60006134aa603e83613a57565b91506134b582614035565b604082019050919050565b60006134cd602083613a57565b91506134d882614084565b602082019050919050565b60006134f0600d83613a57565b91506134fb826140ad565b602082019050919050565b6000613513602083613a57565b915061351e826140d6565b602082019050919050565b6000613536601883613a57565b9150613541826140ff565b602082019050919050565b6000613559602183613a57565b915061356482614128565b604082019050919050565b600061357c602b83613a57565b915061358782614177565b604082019050919050565b600061359f602e83613a57565b91506135aa826141c6565b604082019050919050565b6135be81613ba2565b82525050565b60006135d0828561330e565b91506135dc828461330e565b91508190509392505050565b60006020820190506135fd6000830184613260565b92915050565b60006080820190506136186000830187613260565b6136256020830186613260565b61363260408301856135b5565b8181036060830152613644818461328d565b905095945050505050565b6000602082019050613664600083018461326f565b92915050565b600060408201905061367f600083018561327e565b61368c60208301846135b5565b9392505050565b600060208201905081810360008301526136ad818461328d565b905092915050565b600060408201905081810360008301526136cf818561328d565b90506136de60208301846135b5565b9392505050565b60006020820190506136fa60008301846132c6565b92915050565b6000602082019050818103600083015261371a81846132d5565b905092915050565b6000602082019050818103600083015261373b8161333f565b9050919050565b6000602082019050818103600083015261375b81613362565b9050919050565b6000602082019050818103600083015261377b81613385565b9050919050565b6000602082019050818103600083015261379b816133a8565b9050919050565b600060208201905081810360008301526137bb816133cb565b9050919050565b600060208201905081810360008301526137db816133ee565b9050919050565b600060208201905081810360008301526137fb81613411565b9050919050565b6000602082019050818103600083015261381b81613434565b9050919050565b6000602082019050818103600083015261383b81613457565b9050919050565b6000602082019050818103600083015261385b8161347a565b9050919050565b6000602082019050818103600083015261387b8161349d565b9050919050565b6000602082019050818103600083015261389b816134c0565b9050919050565b600060208201905081810360008301526138bb816134e3565b9050919050565b600060208201905081810360008301526138db81613506565b9050919050565b600060208201905081810360008301526138fb81613529565b9050919050565b6000602082019050818103600083015261391b8161354c565b9050919050565b6000602082019050818103600083015261393b8161356f565b9050919050565b6000602082019050818103600083015261395b81613592565b9050919050565b600060208201905061397760008301846135b5565b92915050565b6000613987613998565b90506139938282613c3f565b919050565b6000604051905090565b600067ffffffffffffffff8211156139bd576139bc613d77565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156139e9576139e8613d77565b5b6139f282613da6565b9050602081019050919050565b600067ffffffffffffffff821115613a1a57613a19613d77565b5b613a2382613da6565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613a7e82613ba2565b9150613a8983613ba2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613abe57613abd613cea565b5b828201905092915050565b6000613ad482613ba2565b9150613adf83613ba2565b925082613aef57613aee613d19565b5b828204905092915050565b6000613b0582613ba2565b9150613b1083613ba2565b925082821015613b2357613b22613cea565b5b828203905092915050565b6000613b3982613b82565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613bc482613bac565b9050919050565b82818337600083830152505050565b60005b83811015613bf8578082015181840152602081019050613bdd565b83811115613c07576000848401525b50505050565b60006002820490506001821680613c2557607f821691505b60208210811415613c3957613c38613d48565b5b50919050565b613c4882613da6565b810181811067ffffffffffffffff82111715613c6757613c66613d77565b5b80604052505050565b6000613c7b82613ba2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613cae57613cad613cea565b5b600182019050919050565b6000613cc482613ba2565b9150613ccf83613ba2565b925082613cdf57613cde613d19565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f556e657870656374656420645049440000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f6e6f207472616e73666572000000000000000000000000000000000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4e6f207065726d697373696f6e00000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b61421e81613b2e565b811461422957600080fd5b50565b61423581613b40565b811461424057600080fd5b50565b61424c81613b4c565b811461425757600080fd5b50565b61426381613b56565b811461426e57600080fd5b50565b61427a81613ba2565b811461428557600080fd5b5056fea2646970667358221220e147c9d6b61e5e0fe6fd6c5970956c393da31e1955617ef35149fc909ab6e77a64736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var ResearchObjectMigrated__factory = /** @class */ (function (_super) { - __extends(ResearchObjectMigrated__factory, _super); - function ResearchObjectMigrated__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "ResearchObjectMigrated"; - return _this; - } - ResearchObjectMigrated__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - ResearchObjectMigrated__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - ResearchObjectMigrated__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - ResearchObjectMigrated__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - ResearchObjectMigrated__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ResearchObjectMigrated__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ResearchObjectMigrated__factory.bytecode = _bytecode; - ResearchObjectMigrated__factory.abi = _abi; - return ResearchObjectMigrated__factory; -}(ethers_1.ContractFactory)); -exports.ResearchObjectMigrated__factory = ResearchObjectMigrated__factory; diff --git a/desci-contracts/typechain-types/factories/ResearchObjectV2__factory.js b/desci-contracts/typechain-types/factories/ResearchObjectV2__factory.js deleted file mode 100644 index 8abcd7065..000000000 --- a/desci-contracts/typechain-types/factories/ResearchObjectV2__factory.js +++ /dev/null @@ -1,663 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.ResearchObjectV2__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address" - }, - { - indexed: false, - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "ApprovalForAll", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address" - }, - ], - name: "OwnershipTransferred", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Transfer", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "_uuid", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "_cid", - type: "bytes" - }, - ], - name: "VersionPush", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "__ResearchObjectV2_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - }, - ], - name: "__VersionedERC721V2_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "_dpidRegistry", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - name: "_metadata", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "expectedDpid", - type: "uint256" - }, - ], - name: "mintWithDpid", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "setRegistry", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "string", - name: "uri", - type: "string" - }, - ], - name: "setURI", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address" - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "updateMetadata", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b613b3580620001e36000396000f3fe6080604052600436106101815760003560e01c80638da5cb5b116100d1578063b88d4fde1161008a578063db7fd40811610064578063db7fd40814610581578063e985e9c5146105aa578063f2fde38b146105e7578063ffe77b0f1461061057610181565b8063b88d4fde146104ff578063c87b56dd14610528578063c88efd151461056557610181565b80638da5cb5b1461040557806395d89b41146104305780639a7fad401461045b578063a22cb46514610484578063a91ee0dc146104ad578063af3ba9c1146104d657610181565b806323b872dd1161013e5780634f558e79116101185780634f558e79146103375780636352211e1461037457806370a08231146103b1578063715018a6146103ee57610181565b806323b872dd146102ba5780633dcd3236146102e357806342842e0e1461030e57610181565b806301ffc9a71461018657806302fe5305146101c357806306fdde03146101ec578063081812fc14610217578063095ea7b31461025457806313859f461461027d575b600080fd5b34801561019257600080fd5b506101ad60048036038101906101a891906128b6565b610639565b6040516101ba9190612f22565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e59190612908565b61071b565b005b3480156101f857600080fd5b5061020161073d565b60405161020e9190612fa3565b60405180910390f35b34801561022357600080fd5b5061023e600480360381019061023991906129b5565b6107cf565b60405161024b9190612ebb565b60405180910390f35b34801561026057600080fd5b5061027b6004803603810190610276919061287a565b610815565b005b34801561028957600080fd5b506102a4600480360381019061029f91906129b5565b61092d565b6040516102b19190612f66565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190612774565b6109cd565b005b3480156102ef57600080fd5b506102f8610a2d565b6040516103059190612ebb565b60405180910390f35b34801561031a57600080fd5b5061033560048036038101906103309190612774565b610a53565b005b34801561034357600080fd5b5061035e600480360381019061035991906129b5565b610a73565b60405161036b9190612f22565b60405180910390f35b34801561038057600080fd5b5061039b600480360381019061039691906129b5565b610a85565b6040516103a89190612ebb565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d3919061270f565b610b37565b6040516103e59190613205565b60405180910390f35b3480156103fa57600080fd5b50610403610bef565b005b34801561041157600080fd5b5061041a610c03565b6040516104279190612ebb565b60405180910390f35b34801561043c57600080fd5b50610445610c2d565b6040516104529190612fa3565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d9190612adf565b610cbf565b005b34801561049057600080fd5b506104ab60048036038101906104a6919061283e565b610ddd565b005b3480156104b957600080fd5b506104d460048036038101906104cf919061270f565b610df3565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190612949565b610e3f565b005b34801561050b57600080fd5b50610526600480360381019061052191906127c3565b610e9c565b005b34801561053457600080fd5b5061054f600480360381019061054a91906129b5565b610efe565b60405161055c9190612fa3565b60405180910390f35b61057f600480360381019061057a9190612a5f565b610f66565b005b34801561058d57600080fd5b506105a860048036038101906105a39190612a07565b611075565b005b3480156105b657600080fd5b506105d160048036038101906105cc9190612738565b6110e5565b6040516105de9190612f22565b60405180910390f35b3480156105f357600080fd5b5061060e6004803603810190610609919061270f565b611179565b005b34801561061c57600080fd5b506106376004803603810190610632919061270f565b6111fd565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061070457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107145750610713826113f1565b5b9050919050565b61072361145b565b8060ca9080519060200190610739929190612439565b5050565b60606065805461074c90613484565b80601f016020809104026020016040519081016040528092919081815260200182805461077890613484565b80156107c55780601f1061079a576101008083540402835291602001916107c5565b820191906000526020600020905b8154815290600101906020018083116107a857829003601f168201915b5050505050905090565b60006107da826114d9565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061082082610a85565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610888906131a5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108b0611524565b73ffffffffffffffffffffffffffffffffffffffff1614806108df57506108de816108d9611524565b6110e5565b5b61091e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091590613105565b60405180910390fd5b610928838361152c565b505050565b6097602052806000526040600020600091509050805461094c90613484565b80601f016020809104026020016040519081016040528092919081815260200182805461097890613484565b80156109c55780601f1061099a576101008083540402835291602001916109c5565b820191906000526020600020905b8154815290600101906020018083116109a857829003601f168201915b505050505081565b6109de6109d8611524565b826115e5565b610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a14906131e5565b60405180910390fd5b610a2883838361167a565b505050565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a6e83838360405180602001604052806000815250610e9c565b505050565b6000610a7e826118e1565b9050919050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2590613185565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f906130c5565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bf761145b565b610c01600061194d565b565b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060668054610c3c90613484565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6890613484565b8015610cb55780601f10610c8a57610100808354040283529160200191610cb5565b820191906000526020600020905b815481529060010190602001808311610c9857829003601f168201915b5050505050905090565b816000610cca611524565b905060008173ffffffffffffffffffffffffffffffffffffffff16610cee84610a85565b73ffffffffffffffffffffffffffffffffffffffff161480610d165750610d1582846115e5565b5b905080610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613145565b60405180910390fd5b83609760008781526020019081526020016000209080519060200190610d7f9291906124bf565b5084610d89611524565b73ffffffffffffffffffffffffffffffffffffffff167fabddf73bfc8efbf8287a09ea355e43cf6c0c22880ce0470affeba5271c0a769486604051610dce9190612f66565b60405180910390a35050505050565b610def610de8611524565b8383611a13565b5050565b610dfb61145b565b8060cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060019054906101000a900460ff16610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e85906131c5565b60405180910390fd5b610e988282611b80565b5050565b610ead610ea7611524565b836115e5565b610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906131e5565b60405180910390fd5b610ef884848484611bdd565b50505050565b6060610f09826114d9565b6000610f13611c39565b90506000815111610f335760405180602001604052806000815250610f5e565b80610f3d84611ccb565b604051602001610f4e929190612e97565b6040516020818303038152906040525b915050919050565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663da4a984234868a6040518463ffffffff1660e01b8152600401610fcb929190612f3d565b6020604051808303818588803b158015610fe457600080fd5b505af1158015610ff8573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061101d91906129de565b9050808314611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890613045565b60405180910390fd5b61106c878787611075565b50505050505050565b600061107f611524565b905060008490506110908282611e78565b6110de8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610cbf565b5050505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61118161145b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e890612fe5565b60405180910390fd5b6111fa8161194d565b50565b60008060019054906101000a900460ff1615905080801561122e5750600160008054906101000a900460ff1660ff16105b8061125b575061123d30611e96565b15801561125a5750600160008054906101000a900460ff1660ff16145b5b61129a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611291906130e5565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156112d7576001600060016101000a81548160ff0219169083151502179055505b61134b6040518060400160405280601581526020017f4465536369205265736561726368204f626a65637400000000000000000000008152506040518060400160405280600a81526020017f44655363692d4e6f646500000000000000000000000000000000000000000000815250610e3f565b611353611eb9565b8160cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156113ed5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516113e49190612f88565b60405180910390a15b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611463611524565b73ffffffffffffffffffffffffffffffffffffffff16611481610c03565b73ffffffffffffffffffffffffffffffffffffffff16146114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce90613165565b60405180910390fd5b565b6114e2816118e1565b611521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151890613185565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661159f83610a85565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806115f183610a85565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611633575061163281856110e5565b5b8061167157508373ffffffffffffffffffffffffffffffffffffffff16611659846107cf565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661169a82610a85565b73ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790613005565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175790613065565b60405180910390fd5b61176b838383611f12565b61177660008261152c565b6001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117c69190613371565b925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461181d91906132ea565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46118dc838383611f86565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7990613085565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611b739190612f22565b60405180910390a3505050565b600060019054906101000a900460ff16611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc6906131c5565b60405180910390fd5b611bd98282611f8b565b5050565b611be884848461167a565b611bf48484848461200c565b611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90612fc5565b60405180910390fd5b50505050565b606060ca8054611c4890613484565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7490613484565b8015611cc15780601f10611c9657610100808354040283529160200191611cc1565b820191906000526020600020905b815481529060010190602001808311611ca457829003601f168201915b5050505050905090565b60606000821415611d13576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611e73565b600082905060005b60008214611d45578080611d2e906134e7565b915050600a82611d3e9190613340565b9150611d1b565b60008167ffffffffffffffff811115611d87577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611db95781602001600182028036833780820191505090505b5090505b60008514611e6c57600182611dd29190613371565b9150600a85611de19190613530565b6030611ded91906132ea565b60f81b818381518110611e29577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611e659190613340565b9450611dbd565b8093505050505b919050565b611e928282604051806020016040528060008152506121a3565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eff906131c5565b60405180910390fd5b611f106121fe565b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f78906130a5565b60405180910390fd5b505050565b505050565b600060019054906101000a900460ff16611fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd1906131c5565b60405180910390fd5b8160659080519060200190611ff0929190612439565b508060669080519060200190612007929190612439565b505050565b600061202d8473ffffffffffffffffffffffffffffffffffffffff16611e96565b15612196578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612056611524565b8786866040518563ffffffff1660e01b81526004016120789493929190612ed6565b602060405180830381600087803b15801561209257600080fd5b505af19250505080156120c357506040513d601f19601f820116820180604052508101906120c091906128df565b60015b612146573d80600081146120f3576040519150601f19603f3d011682016040523d82523d6000602084013e6120f8565b606091505b5060008151141561213e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213590612fc5565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061219b565b600190505b949350505050565b6121ad838361225f565b6121ba600084848461200c565b6121f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f090612fc5565b60405180910390fd5b505050565b600060019054906101000a900460ff1661224d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612244906131c5565b60405180910390fd5b61225d612258611524565b61194d565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c690613125565b60405180910390fd5b6122d8816118e1565b15612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f90613025565b60405180910390fd5b61232460008383611f12565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461237491906132ea565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461243560008383611f86565b5050565b82805461244590613484565b90600052602060002090601f01602090048101928261246757600085556124ae565b82601f1061248057805160ff19168380011785556124ae565b828001600101855582156124ae579182015b828111156124ad578251825591602001919060010190612492565b5b5090506124bb9190612545565b5090565b8280546124cb90613484565b90600052602060002090601f0160209004810192826124ed5760008555612534565b82601f1061250657805160ff1916838001178555612534565b82800160010185558215612534579182015b82811115612533578251825591602001919060010190612518565b5b5090506125419190612545565b5090565b5b8082111561255e576000816000905550600101612546565b5090565b600061257561257084613245565b613220565b90508281526020810184848401111561258d57600080fd5b612598848285613442565b509392505050565b60006125b36125ae84613276565b613220565b9050828152602081018484840111156125cb57600080fd5b6125d6848285613442565b509392505050565b6000813590506125ed81613a8c565b92915050565b60008135905061260281613aa3565b92915050565b60008135905061261781613aba565b92915050565b60008135905061262c81613ad1565b92915050565b60008151905061264181613ad1565b92915050565b60008083601f84011261265957600080fd5b8235905067ffffffffffffffff81111561267257600080fd5b60208301915083600182028301111561268a57600080fd5b9250929050565b600082601f8301126126a257600080fd5b81356126b2848260208601612562565b91505092915050565b600082601f8301126126cc57600080fd5b81356126dc8482602086016125a0565b91505092915050565b6000813590506126f481613ae8565b92915050565b60008151905061270981613ae8565b92915050565b60006020828403121561272157600080fd5b600061272f848285016125de565b91505092915050565b6000806040838503121561274b57600080fd5b6000612759858286016125de565b925050602061276a858286016125de565b9150509250929050565b60008060006060848603121561278957600080fd5b6000612797868287016125de565b93505060206127a8868287016125de565b92505060406127b9868287016126e5565b9150509250925092565b600080600080608085870312156127d957600080fd5b60006127e7878288016125de565b94505060206127f8878288016125de565b9350506040612809878288016126e5565b925050606085013567ffffffffffffffff81111561282657600080fd5b61283287828801612691565b91505092959194509250565b6000806040838503121561285157600080fd5b600061285f858286016125de565b9250506020612870858286016125f3565b9150509250929050565b6000806040838503121561288d57600080fd5b600061289b858286016125de565b92505060206128ac858286016126e5565b9150509250929050565b6000602082840312156128c857600080fd5b60006128d68482850161261d565b91505092915050565b6000602082840312156128f157600080fd5b60006128ff84828501612632565b91505092915050565b60006020828403121561291a57600080fd5b600082013567ffffffffffffffff81111561293457600080fd5b612940848285016126bb565b91505092915050565b6000806040838503121561295c57600080fd5b600083013567ffffffffffffffff81111561297657600080fd5b612982858286016126bb565b925050602083013567ffffffffffffffff81111561299f57600080fd5b6129ab858286016126bb565b9150509250929050565b6000602082840312156129c757600080fd5b60006129d5848285016126e5565b91505092915050565b6000602082840312156129f057600080fd5b60006129fe848285016126fa565b91505092915050565b600080600060408486031215612a1c57600080fd5b6000612a2a868287016126e5565b935050602084013567ffffffffffffffff811115612a4757600080fd5b612a5386828701612647565b92509250509250925092565b600080600080600060808688031215612a7757600080fd5b6000612a85888289016126e5565b955050602086013567ffffffffffffffff811115612aa257600080fd5b612aae88828901612647565b94509450506040612ac188828901612608565b9250506060612ad2888289016126e5565b9150509295509295909350565b60008060408385031215612af257600080fd5b6000612b00858286016126e5565b925050602083013567ffffffffffffffff811115612b1d57600080fd5b612b2985828601612691565b9150509250929050565b612b3c816133a5565b82525050565b612b4b816133b7565b82525050565b612b5a816133c3565b82525050565b6000612b6b826132a7565b612b7581856132bd565b9350612b85818560208601613451565b612b8e8161361d565b840191505092915050565b612ba281613430565b82525050565b6000612bb3826132b2565b612bbd81856132ce565b9350612bcd818560208601613451565b612bd68161361d565b840191505092915050565b6000612bec826132b2565b612bf681856132df565b9350612c06818560208601613451565b80840191505092915050565b6000612c1f6032836132ce565b9150612c2a8261362e565b604082019050919050565b6000612c426026836132ce565b9150612c4d8261367d565b604082019050919050565b6000612c656025836132ce565b9150612c70826136cc565b604082019050919050565b6000612c88601c836132ce565b9150612c938261371b565b602082019050919050565b6000612cab600f836132ce565b9150612cb682613744565b602082019050919050565b6000612cce6024836132ce565b9150612cd98261376d565b604082019050919050565b6000612cf16019836132ce565b9150612cfc826137bc565b602082019050919050565b6000612d14600b836132ce565b9150612d1f826137e5565b602082019050919050565b6000612d376029836132ce565b9150612d428261380e565b604082019050919050565b6000612d5a602e836132ce565b9150612d658261385d565b604082019050919050565b6000612d7d603e836132ce565b9150612d88826138ac565b604082019050919050565b6000612da06020836132ce565b9150612dab826138fb565b602082019050919050565b6000612dc3600d836132ce565b9150612dce82613924565b602082019050919050565b6000612de66020836132ce565b9150612df18261394d565b602082019050919050565b6000612e096018836132ce565b9150612e1482613976565b602082019050919050565b6000612e2c6021836132ce565b9150612e378261399f565b604082019050919050565b6000612e4f602b836132ce565b9150612e5a826139ee565b604082019050919050565b6000612e72602e836132ce565b9150612e7d82613a3d565b604082019050919050565b612e9181613419565b82525050565b6000612ea38285612be1565b9150612eaf8284612be1565b91508190509392505050565b6000602082019050612ed06000830184612b33565b92915050565b6000608082019050612eeb6000830187612b33565b612ef86020830186612b33565b612f056040830185612e88565b8181036060830152612f178184612b60565b905095945050505050565b6000602082019050612f376000830184612b42565b92915050565b6000604082019050612f526000830185612b51565b612f5f6020830184612e88565b9392505050565b60006020820190508181036000830152612f808184612b60565b905092915050565b6000602082019050612f9d6000830184612b99565b92915050565b60006020820190508181036000830152612fbd8184612ba8565b905092915050565b60006020820190508181036000830152612fde81612c12565b9050919050565b60006020820190508181036000830152612ffe81612c35565b9050919050565b6000602082019050818103600083015261301e81612c58565b9050919050565b6000602082019050818103600083015261303e81612c7b565b9050919050565b6000602082019050818103600083015261305e81612c9e565b9050919050565b6000602082019050818103600083015261307e81612cc1565b9050919050565b6000602082019050818103600083015261309e81612ce4565b9050919050565b600060208201905081810360008301526130be81612d07565b9050919050565b600060208201905081810360008301526130de81612d2a565b9050919050565b600060208201905081810360008301526130fe81612d4d565b9050919050565b6000602082019050818103600083015261311e81612d70565b9050919050565b6000602082019050818103600083015261313e81612d93565b9050919050565b6000602082019050818103600083015261315e81612db6565b9050919050565b6000602082019050818103600083015261317e81612dd9565b9050919050565b6000602082019050818103600083015261319e81612dfc565b9050919050565b600060208201905081810360008301526131be81612e1f565b9050919050565b600060208201905081810360008301526131de81612e42565b9050919050565b600060208201905081810360008301526131fe81612e65565b9050919050565b600060208201905061321a6000830184612e88565b92915050565b600061322a61323b565b905061323682826134b6565b919050565b6000604051905090565b600067ffffffffffffffff8211156132605761325f6135ee565b5b6132698261361d565b9050602081019050919050565b600067ffffffffffffffff821115613291576132906135ee565b5b61329a8261361d565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006132f582613419565b915061330083613419565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561333557613334613561565b5b828201905092915050565b600061334b82613419565b915061335683613419565b92508261336657613365613590565b5b828204905092915050565b600061337c82613419565b915061338783613419565b92508282101561339a57613399613561565b5b828203905092915050565b60006133b0826133f9565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061343b82613423565b9050919050565b82818337600083830152505050565b60005b8381101561346f578082015181840152602081019050613454565b8381111561347e576000848401525b50505050565b6000600282049050600182168061349c57607f821691505b602082108114156134b0576134af6135bf565b5b50919050565b6134bf8261361d565b810181811067ffffffffffffffff821117156134de576134dd6135ee565b5b80604052505050565b60006134f282613419565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561352557613524613561565b5b600182019050919050565b600061353b82613419565b915061354683613419565b92508261355657613555613590565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f556e657870656374656420645049440000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f6e6f207472616e73666572000000000000000000000000000000000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4e6f207065726d697373696f6e00000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b613a95816133a5565b8114613aa057600080fd5b50565b613aac816133b7565b8114613ab757600080fd5b50565b613ac3816133c3565b8114613ace57600080fd5b50565b613ada816133cd565b8114613ae557600080fd5b50565b613af181613419565b8114613afc57600080fd5b5056fea2646970667358221220448f67f11695953978b8db1358e26068f93ba3d14c1086e8e7334058afa9d92664736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var ResearchObjectV2__factory = /** @class */ (function (_super) { - __extends(ResearchObjectV2__factory, _super); - function ResearchObjectV2__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "ResearchObjectV2"; - return _this; - } - ResearchObjectV2__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - ResearchObjectV2__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - ResearchObjectV2__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - ResearchObjectV2__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - ResearchObjectV2__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ResearchObjectV2__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ResearchObjectV2__factory.bytecode = _bytecode; - ResearchObjectV2__factory.abi = _abi; - return ResearchObjectV2__factory; -}(ethers_1.ContractFactory)); -exports.ResearchObjectV2__factory = ResearchObjectV2__factory; diff --git a/desci-contracts/typechain-types/factories/ResearchObject__factory.js b/desci-contracts/typechain-types/factories/ResearchObject__factory.js deleted file mode 100644 index 36bd9bcb5..000000000 --- a/desci-contracts/typechain-types/factories/ResearchObject__factory.js +++ /dev/null @@ -1,663 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.ResearchObject__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address" - }, - { - indexed: false, - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "ApprovalForAll", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address" - }, - ], - name: "OwnershipTransferred", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Transfer", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "_uuid", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "_cid", - type: "bytes" - }, - ], - name: "VersionPush", - type: "event" - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - }, - ], - name: "__VersionedERC721_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "_dpidRegistry", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - name: "_metadata", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "uuid", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - { - internalType: "bytes32", - name: "prefix", - type: "bytes32" - }, - { - internalType: "uint256", - name: "expectedDpid", - type: "uint256" - }, - ], - name: "mintWithDpid", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "dpidRegistry", - type: "address" - }, - ], - name: "setRegistry", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "string", - name: "uri", - type: "string" - }, - ], - name: "setURI", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address" - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "updateMetadata", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000127565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e4919062000149565b60405180910390a15b565b6000620000fe60278362000166565b91506200010b8262000184565b604082019050919050565b620001218162000177565b82525050565b600060208201905081810360008301526200014281620000ef565b9050919050565b600060208201905062000160600083018462000116565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b613b2480620001e36000396000f3fe6080604052600436106101815760003560e01c8063715018a6116100d1578063b88d4fde1161008a578063c88efd1511610064578063c88efd151461058e578063db7fd408146105aa578063e985e9c5146105d3578063f2fde38b1461061057610181565b8063b88d4fde146104ff578063c4d66de814610528578063c87b56dd1461055157610181565b8063715018a6146104175780638da5cb5b1461042e57806395d89b41146104595780639a7fad4014610484578063a22cb465146104ad578063a91ee0dc146104d657610181565b806323b872dd1161013e5780634f558e79116101185780634f558e7914610337578063599ad936146103745780636352211e1461039d57806370a08231146103da57610181565b806323b872dd146102ba5780633dcd3236146102e357806342842e0e1461030e57610181565b806301ffc9a71461018657806302fe5305146101c357806306fdde03146101ec578063081812fc14610217578063095ea7b31461025457806313859f461461027d575b600080fd5b34801561019257600080fd5b506101ad60048036038101906101a891906128a5565b610639565b6040516101ba9190612f11565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e591906128f7565b61071b565b005b3480156101f857600080fd5b5061020161073d565b60405161020e9190612f92565b60405180910390f35b34801561022357600080fd5b5061023e600480360381019061023991906129a4565b6107cf565b60405161024b9190612eaa565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190612869565b610815565b005b34801561028957600080fd5b506102a4600480360381019061029f91906129a4565b61092d565b6040516102b19190612f55565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190612763565b6109cd565b005b3480156102ef57600080fd5b506102f8610a2d565b6040516103059190612eaa565b60405180910390f35b34801561031a57600080fd5b5061033560048036038101906103309190612763565b610a53565b005b34801561034357600080fd5b5061035e600480360381019061035991906129a4565b610a73565b60405161036b9190612f11565b60405180910390f35b34801561038057600080fd5b5061039b60048036038101906103969190612938565b610a85565b005b3480156103a957600080fd5b506103c460048036038101906103bf91906129a4565b610ae2565b6040516103d19190612eaa565b60405180910390f35b3480156103e657600080fd5b5061040160048036038101906103fc91906126fe565b610b94565b60405161040e91906131f4565b60405180910390f35b34801561042357600080fd5b5061042c610c4c565b005b34801561043a57600080fd5b50610443610c60565b6040516104509190612eaa565b60405180910390f35b34801561046557600080fd5b5061046e610c8a565b60405161047b9190612f92565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190612ace565b610d1c565b005b3480156104b957600080fd5b506104d460048036038101906104cf919061282d565b610e29565b005b3480156104e257600080fd5b506104fd60048036038101906104f891906126fe565b610e3f565b005b34801561050b57600080fd5b50610526600480360381019061052191906127b2565b610e8b565b005b34801561053457600080fd5b5061054f600480360381019061054a91906126fe565b610eed565b005b34801561055d57600080fd5b50610578600480360381019061057391906129a4565b6110e1565b6040516105859190612f92565b60405180910390f35b6105a860048036038101906105a39190612a4e565b611149565b005b3480156105b657600080fd5b506105d160048036038101906105cc91906129f6565b611258565b005b3480156105df57600080fd5b506105fa60048036038101906105f59190612727565b6112c8565b6040516106079190612f11565b60405180910390f35b34801561061c57600080fd5b50610637600480360381019061063291906126fe565b61135c565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061070457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107145750610713826113e0565b5b9050919050565b61072361144a565b8060ca9080519060200190610739929190612428565b5050565b60606065805461074c90613473565b80601f016020809104026020016040519081016040528092919081815260200182805461077890613473565b80156107c55780601f1061079a576101008083540402835291602001916107c5565b820191906000526020600020905b8154815290600101906020018083116107a857829003601f168201915b5050505050905090565b60006107da826114c8565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061082082610ae2565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088890613194565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108b0611513565b73ffffffffffffffffffffffffffffffffffffffff1614806108df57506108de816108d9611513565b6112c8565b5b61091e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610915906130f4565b60405180910390fd5b610928838361151b565b505050565b6097602052806000526040600020600091509050805461094c90613473565b80601f016020809104026020016040519081016040528092919081815260200182805461097890613473565b80156109c55780601f1061099a576101008083540402835291602001916109c5565b820191906000526020600020905b8154815290600101906020018083116109a857829003601f168201915b505050505081565b6109de6109d8611513565b826115d4565b610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a14906131d4565b60405180910390fd5b610a28838383611669565b505050565b60cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a6e83838360405180602001604052806000815250610e8b565b505050565b6000610a7e826118d0565b9050919050565b600060019054906101000a900460ff16610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb906131b4565b60405180910390fd5b610ade828261193c565b5050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8290613174565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc906130b4565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c5461144a565b610c5e6000611999565b565b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060668054610c9990613473565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc590613473565b8015610d125780601f10610ce757610100808354040283529160200191610d12565b820191906000526020600020905b815481529060010190602001808311610cf557829003601f168201915b5050505050905090565b816000610d27611513565b905060008173ffffffffffffffffffffffffffffffffffffffff16610d4b84610ae2565b73ffffffffffffffffffffffffffffffffffffffff1614905080610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90613134565b60405180910390fd5b83609760008781526020019081526020016000209080519060200190610dcb9291906124ae565b5084610dd5611513565b73ffffffffffffffffffffffffffffffffffffffff167fabddf73bfc8efbf8287a09ea355e43cf6c0c22880ce0470affeba5271c0a769486604051610e1a9190612f55565b60405180910390a35050505050565b610e3b610e34611513565b8383611a5f565b5050565b610e4761144a565b8060cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610e9c610e96611513565b836115d4565b610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed2906131d4565b60405180910390fd5b610ee784848484611bcc565b50505050565b60008060019054906101000a900460ff16159050808015610f1e5750600160008054906101000a900460ff1660ff16105b80610f4b5750610f2d30611c28565b158015610f4a5750600160008054906101000a900460ff1660ff16145b5b610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f81906130d4565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610fc7576001600060016101000a81548160ff0219169083151502179055505b61103b6040518060400160405280601581526020017f4465536369205265736561726368204f626a65637400000000000000000000008152506040518060400160405280600a81526020017f44655363692d4e6f646500000000000000000000000000000000000000000000815250610a85565b611043611c4b565b8160cb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156110dd5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516110d49190612f77565b60405180910390a15b5050565b60606110ec826114c8565b60006110f6611ca4565b905060008151116111165760405180602001604052806000815250611141565b8061112084611d36565b604051602001611131929190612e86565b6040516020818303038152906040525b915050919050565b600060cb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663da4a984234868a6040518463ffffffff1660e01b81526004016111ae929190612f2c565b6020604051808303818588803b1580156111c757600080fd5b505af11580156111db573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061120091906129cd565b9050808314611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b90613034565b60405180910390fd5b61124f878787611258565b50505050505050565b6000611262611513565b905060008490506112738282611ee3565b6112c18585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610d1c565b5050505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61136461144a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90612fd4565b60405180910390fd5b6113dd81611999565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611452611513565b73ffffffffffffffffffffffffffffffffffffffff16611470610c60565b73ffffffffffffffffffffffffffffffffffffffff16146114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd90613154565b60405180910390fd5b565b6114d1816118d0565b611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790613174565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661158e83610ae2565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806115e083610ae2565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611622575061162181856112c8565b5b8061166057508373ffffffffffffffffffffffffffffffffffffffff16611648846107cf565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661168982610ae2565b73ffffffffffffffffffffffffffffffffffffffff16146116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d690612ff4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561174f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174690613054565b60405180910390fd5b61175a838383611f01565b61176560008261151b565b6001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117b59190613360565b925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461180c91906132d9565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46118cb838383611f75565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600060019054906101000a900460ff1661198b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611982906131b4565b60405180910390fd5b6119958282611f7a565b5050565b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac590613074565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611bbf9190612f11565b60405180910390a3505050565b611bd7848484611669565b611be384848484611ffb565b611c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1990612fb4565b60405180910390fd5b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c91906131b4565b60405180910390fd5b611ca2612192565b565b606060ca8054611cb390613473565b80601f0160208091040260200160405190810160405280929190818152602001828054611cdf90613473565b8015611d2c5780601f10611d0157610100808354040283529160200191611d2c565b820191906000526020600020905b815481529060010190602001808311611d0f57829003601f168201915b5050505050905090565b60606000821415611d7e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611ede565b600082905060005b60008214611db0578080611d99906134d6565b915050600a82611da9919061332f565b9150611d86565b60008167ffffffffffffffff811115611df2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611e245781602001600182028036833780820191505090505b5090505b60008514611ed757600182611e3d9190613360565b9150600a85611e4c919061351f565b6030611e5891906132d9565b60f81b818381518110611e94577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611ed0919061332f565b9450611e28565b8093505050505b919050565b611efd8282604051806020016040528060008152506121f3565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6790613094565b60405180910390fd5b505050565b505050565b600060019054906101000a900460ff16611fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc0906131b4565b60405180910390fd5b8160659080519060200190611fdf929190612428565b508060669080519060200190611ff6929190612428565b505050565b600061201c8473ffffffffffffffffffffffffffffffffffffffff16611c28565b15612185578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612045611513565b8786866040518563ffffffff1660e01b81526004016120679493929190612ec5565b602060405180830381600087803b15801561208157600080fd5b505af19250505080156120b257506040513d601f19601f820116820180604052508101906120af91906128ce565b60015b612135573d80600081146120e2576040519150601f19603f3d011682016040523d82523d6000602084013e6120e7565b606091505b5060008151141561212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212490612fb4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061218a565b600190505b949350505050565b600060019054906101000a900460ff166121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d8906131b4565b60405180910390fd5b6121f16121ec611513565b611999565b565b6121fd838361224e565b61220a6000848484611ffb565b612249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224090612fb4565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b590613114565b60405180910390fd5b6122c7816118d0565b15612307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fe90613014565b60405180910390fd5b61231360008383611f01565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461236391906132d9565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461242460008383611f75565b5050565b82805461243490613473565b90600052602060002090601f016020900481019282612456576000855561249d565b82601f1061246f57805160ff191683800117855561249d565b8280016001018555821561249d579182015b8281111561249c578251825591602001919060010190612481565b5b5090506124aa9190612534565b5090565b8280546124ba90613473565b90600052602060002090601f0160209004810192826124dc5760008555612523565b82601f106124f557805160ff1916838001178555612523565b82800160010185558215612523579182015b82811115612522578251825591602001919060010190612507565b5b5090506125309190612534565b5090565b5b8082111561254d576000816000905550600101612535565b5090565b600061256461255f84613234565b61320f565b90508281526020810184848401111561257c57600080fd5b612587848285613431565b509392505050565b60006125a261259d84613265565b61320f565b9050828152602081018484840111156125ba57600080fd5b6125c5848285613431565b509392505050565b6000813590506125dc81613a7b565b92915050565b6000813590506125f181613a92565b92915050565b60008135905061260681613aa9565b92915050565b60008135905061261b81613ac0565b92915050565b60008151905061263081613ac0565b92915050565b60008083601f84011261264857600080fd5b8235905067ffffffffffffffff81111561266157600080fd5b60208301915083600182028301111561267957600080fd5b9250929050565b600082601f83011261269157600080fd5b81356126a1848260208601612551565b91505092915050565b600082601f8301126126bb57600080fd5b81356126cb84826020860161258f565b91505092915050565b6000813590506126e381613ad7565b92915050565b6000815190506126f881613ad7565b92915050565b60006020828403121561271057600080fd5b600061271e848285016125cd565b91505092915050565b6000806040838503121561273a57600080fd5b6000612748858286016125cd565b9250506020612759858286016125cd565b9150509250929050565b60008060006060848603121561277857600080fd5b6000612786868287016125cd565b9350506020612797868287016125cd565b92505060406127a8868287016126d4565b9150509250925092565b600080600080608085870312156127c857600080fd5b60006127d6878288016125cd565b94505060206127e7878288016125cd565b93505060406127f8878288016126d4565b925050606085013567ffffffffffffffff81111561281557600080fd5b61282187828801612680565b91505092959194509250565b6000806040838503121561284057600080fd5b600061284e858286016125cd565b925050602061285f858286016125e2565b9150509250929050565b6000806040838503121561287c57600080fd5b600061288a858286016125cd565b925050602061289b858286016126d4565b9150509250929050565b6000602082840312156128b757600080fd5b60006128c58482850161260c565b91505092915050565b6000602082840312156128e057600080fd5b60006128ee84828501612621565b91505092915050565b60006020828403121561290957600080fd5b600082013567ffffffffffffffff81111561292357600080fd5b61292f848285016126aa565b91505092915050565b6000806040838503121561294b57600080fd5b600083013567ffffffffffffffff81111561296557600080fd5b612971858286016126aa565b925050602083013567ffffffffffffffff81111561298e57600080fd5b61299a858286016126aa565b9150509250929050565b6000602082840312156129b657600080fd5b60006129c4848285016126d4565b91505092915050565b6000602082840312156129df57600080fd5b60006129ed848285016126e9565b91505092915050565b600080600060408486031215612a0b57600080fd5b6000612a19868287016126d4565b935050602084013567ffffffffffffffff811115612a3657600080fd5b612a4286828701612636565b92509250509250925092565b600080600080600060808688031215612a6657600080fd5b6000612a74888289016126d4565b955050602086013567ffffffffffffffff811115612a9157600080fd5b612a9d88828901612636565b94509450506040612ab0888289016125f7565b9250506060612ac1888289016126d4565b9150509295509295909350565b60008060408385031215612ae157600080fd5b6000612aef858286016126d4565b925050602083013567ffffffffffffffff811115612b0c57600080fd5b612b1885828601612680565b9150509250929050565b612b2b81613394565b82525050565b612b3a816133a6565b82525050565b612b49816133b2565b82525050565b6000612b5a82613296565b612b6481856132ac565b9350612b74818560208601613440565b612b7d8161360c565b840191505092915050565b612b918161341f565b82525050565b6000612ba2826132a1565b612bac81856132bd565b9350612bbc818560208601613440565b612bc58161360c565b840191505092915050565b6000612bdb826132a1565b612be581856132ce565b9350612bf5818560208601613440565b80840191505092915050565b6000612c0e6032836132bd565b9150612c198261361d565b604082019050919050565b6000612c316026836132bd565b9150612c3c8261366c565b604082019050919050565b6000612c546025836132bd565b9150612c5f826136bb565b604082019050919050565b6000612c77601c836132bd565b9150612c828261370a565b602082019050919050565b6000612c9a600f836132bd565b9150612ca582613733565b602082019050919050565b6000612cbd6024836132bd565b9150612cc88261375c565b604082019050919050565b6000612ce06019836132bd565b9150612ceb826137ab565b602082019050919050565b6000612d03600b836132bd565b9150612d0e826137d4565b602082019050919050565b6000612d266029836132bd565b9150612d31826137fd565b604082019050919050565b6000612d49602e836132bd565b9150612d548261384c565b604082019050919050565b6000612d6c603e836132bd565b9150612d778261389b565b604082019050919050565b6000612d8f6020836132bd565b9150612d9a826138ea565b602082019050919050565b6000612db2600d836132bd565b9150612dbd82613913565b602082019050919050565b6000612dd56020836132bd565b9150612de08261393c565b602082019050919050565b6000612df86018836132bd565b9150612e0382613965565b602082019050919050565b6000612e1b6021836132bd565b9150612e268261398e565b604082019050919050565b6000612e3e602b836132bd565b9150612e49826139dd565b604082019050919050565b6000612e61602e836132bd565b9150612e6c82613a2c565b604082019050919050565b612e8081613408565b82525050565b6000612e928285612bd0565b9150612e9e8284612bd0565b91508190509392505050565b6000602082019050612ebf6000830184612b22565b92915050565b6000608082019050612eda6000830187612b22565b612ee76020830186612b22565b612ef46040830185612e77565b8181036060830152612f068184612b4f565b905095945050505050565b6000602082019050612f266000830184612b31565b92915050565b6000604082019050612f416000830185612b40565b612f4e6020830184612e77565b9392505050565b60006020820190508181036000830152612f6f8184612b4f565b905092915050565b6000602082019050612f8c6000830184612b88565b92915050565b60006020820190508181036000830152612fac8184612b97565b905092915050565b60006020820190508181036000830152612fcd81612c01565b9050919050565b60006020820190508181036000830152612fed81612c24565b9050919050565b6000602082019050818103600083015261300d81612c47565b9050919050565b6000602082019050818103600083015261302d81612c6a565b9050919050565b6000602082019050818103600083015261304d81612c8d565b9050919050565b6000602082019050818103600083015261306d81612cb0565b9050919050565b6000602082019050818103600083015261308d81612cd3565b9050919050565b600060208201905081810360008301526130ad81612cf6565b9050919050565b600060208201905081810360008301526130cd81612d19565b9050919050565b600060208201905081810360008301526130ed81612d3c565b9050919050565b6000602082019050818103600083015261310d81612d5f565b9050919050565b6000602082019050818103600083015261312d81612d82565b9050919050565b6000602082019050818103600083015261314d81612da5565b9050919050565b6000602082019050818103600083015261316d81612dc8565b9050919050565b6000602082019050818103600083015261318d81612deb565b9050919050565b600060208201905081810360008301526131ad81612e0e565b9050919050565b600060208201905081810360008301526131cd81612e31565b9050919050565b600060208201905081810360008301526131ed81612e54565b9050919050565b60006020820190506132096000830184612e77565b92915050565b600061321961322a565b905061322582826134a5565b919050565b6000604051905090565b600067ffffffffffffffff82111561324f5761324e6135dd565b5b6132588261360c565b9050602081019050919050565b600067ffffffffffffffff8211156132805761327f6135dd565b5b6132898261360c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006132e482613408565b91506132ef83613408565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561332457613323613550565b5b828201905092915050565b600061333a82613408565b915061334583613408565b9250826133555761335461357f565b5b828204905092915050565b600061336b82613408565b915061337683613408565b92508282101561338957613388613550565b5b828203905092915050565b600061339f826133e8565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061342a82613412565b9050919050565b82818337600083830152505050565b60005b8381101561345e578082015181840152602081019050613443565b8381111561346d576000848401525b50505050565b6000600282049050600182168061348b57607f821691505b6020821081141561349f5761349e6135ae565b5b50919050565b6134ae8261360c565b810181811067ffffffffffffffff821117156134cd576134cc6135dd565b5b80604052505050565b60006134e182613408565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561351457613513613550565b5b600182019050919050565b600061352a82613408565b915061353583613408565b9250826135455761354461357f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f556e657870656374656420645049440000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f6e6f207472616e73666572000000000000000000000000000000000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4e6f207065726d697373696f6e00000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b613a8481613394565b8114613a8f57600080fd5b50565b613a9b816133a6565b8114613aa657600080fd5b50565b613ab2816133b2565b8114613abd57600080fd5b50565b613ac9816133bc565b8114613ad457600080fd5b50565b613ae081613408565b8114613aeb57600080fd5b5056fea2646970667358221220fd45769375da65a7b72b174103a35892b9105a217010be05d215a49590f1c9f564736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var ResearchObject__factory = /** @class */ (function (_super) { - __extends(ResearchObject__factory, _super); - function ResearchObject__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "ResearchObject"; - return _this; - } - ResearchObject__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - ResearchObject__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - ResearchObject__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - ResearchObject__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - ResearchObject__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - ResearchObject__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - ResearchObject__factory.bytecode = _bytecode; - ResearchObject__factory.abi = _abi; - return ResearchObject__factory; -}(ethers_1.ContractFactory)); -exports.ResearchObject__factory = ResearchObject__factory; diff --git a/desci-contracts/typechain-types/factories/TestERC721__factory.js b/desci-contracts/typechain-types/factories/TestERC721__factory.js deleted file mode 100644 index 89d7ac74f..000000000 --- a/desci-contracts/typechain-types/factories/TestERC721__factory.js +++ /dev/null @@ -1,425 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.TestERC721__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - }, - ], - stateMutability: "nonpayable", - type: "constructor" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address" - }, - { - indexed: false, - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "ApprovalForAll", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Transfer", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x608060405260006006553480156200001657600080fd5b5060405162002b8038038062002b8083398181016040528101906200003c91906200019c565b81818160009080519060200190620000569291906200007a565b5080600190805190602001906200006f9291906200007a565b50505050506200037f565b8280546200008890620002a4565b90600052602060002090601f016020900481019282620000ac5760008555620000f8565b82601f10620000c757805160ff1916838001178555620000f8565b82800160010185558215620000f8579182015b82811115620000f7578251825591602001919060010190620000da565b5b5090506200010791906200010b565b5090565b5b80821115620001265760008160009055506001016200010c565b5090565b6000620001416200013b8462000238565b6200020f565b9050828152602081018484840111156200015a57600080fd5b620001678482856200026e565b509392505050565b600082601f8301126200018157600080fd5b8151620001938482602086016200012a565b91505092915050565b60008060408385031215620001b057600080fd5b600083015167ffffffffffffffff811115620001cb57600080fd5b620001d9858286016200016f565b925050602083015167ffffffffffffffff811115620001f757600080fd5b62000205858286016200016f565b9150509250929050565b60006200021b6200022e565b9050620002298282620002da565b919050565b6000604051905090565b600067ffffffffffffffff8211156200025657620002556200033f565b5b62000261826200036e565b9050602081019050919050565b60005b838110156200028e57808201518184015260208101905062000271565b838111156200029e576000848401525b50505050565b60006002820490506001821680620002bd57607f821691505b60208210811415620002d457620002d362000310565b5b50919050565b620002e5826200036e565b810181811067ffffffffffffffff821117156200030757620003066200033f565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6127f1806200038f6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636a6278421161008c578063a22cb46511610066578063a22cb4651461025b578063b88d4fde14610277578063c87b56dd14610293578063e985e9c5146102c3576100ea565b80636a627842146101f157806370a082311461020d57806395d89b411461023d576100ea565b8063095ea7b3116100c8578063095ea7b31461016d57806323b872dd1461018957806342842e0e146101a55780636352211e146101c1576100ea565b806301ffc9a7146100ef57806306fdde031461011f578063081812fc1461013d575b600080fd5b61010960048036038101906101049190611c60565b6102f3565b6040516101169190611fb7565b60405180910390f35b6101276103d5565b6040516101349190611fd2565b60405180910390f35b61015760048036038101906101529190611cb2565b610467565b6040516101649190611f50565b60405180910390f35b61018760048036038101906101829190611c24565b6104ad565b005b6101a3600480360381019061019e9190611b1e565b6105c5565b005b6101bf60048036038101906101ba9190611b1e565b610625565b005b6101db60048036038101906101d69190611cb2565b610645565b6040516101e89190611f50565b60405180910390f35b61020b60048036038101906102069190611ab9565b6106cc565b005b61022760048036038101906102229190611ab9565b6106ef565b6040516102349190612154565b60405180910390f35b6102456107a7565b6040516102529190611fd2565b60405180910390f35b61027560048036038101906102709190611be8565b610839565b005b610291600480360381019061028c9190611b6d565b61084f565b005b6102ad60048036038101906102a89190611cb2565b6108b1565b6040516102ba9190611fd2565b60405180910390f35b6102dd60048036038101906102d89190611ae2565b610919565b6040516102ea9190611fb7565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103be57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103ce57506103cd826109ad565b5b9050919050565b6060600080546103e490612348565b80601f016020809104026020016040519081016040528092919081815260200182805461041090612348565b801561045d5780601f106104325761010080835404028352916020019161045d565b820191906000526020600020905b81548152906001019060200180831161044057829003601f168201915b5050505050905090565b600061047282610a17565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104b882610645565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052090612114565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610548610a62565b73ffffffffffffffffffffffffffffffffffffffff161480610577575061057681610571610a62565b610919565b5b6105b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ad90612134565b60405180910390fd5b6105c08383610a6a565b505050565b6105d66105d0610a62565b82610b23565b610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c90611ff4565b60405180910390fd5b610620838383610bb8565b505050565b6106408383836040518060200160405280600081525061084f565b505050565b60008061065183610eb2565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ba906120f4565b60405180910390fd5b80915050919050565b6106ec81600660008154809291906106e3906123ab565b91905055610eef565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610760576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610757906120b4565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107b690612348565b80601f01602080910402602001604051908101604052809291908181526020018280546107e290612348565b801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b5050505050905090565b61084b610844610a62565b8383610f0d565b5050565b61086061085a610a62565b83610b23565b61089f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089690611ff4565b60405180910390fd5b6108ab8484848461107a565b50505050565b60606108bc82610a17565b60006108c66110d6565b905060008151116108e65760405180602001604052806000815250610911565b806108f0846110ed565b604051602001610901929190611f2c565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610a2081611211565b610a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a56906120f4565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610add83610645565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610b2f83610645565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b715750610b708185610919565b5b80610baf57508373ffffffffffffffffffffffffffffffffffffffff16610b9784610467565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610bd882610645565b73ffffffffffffffffffffffffffffffffffffffff1614610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590612034565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590612074565b60405180910390fd5b610cab8383836001611252565b8273ffffffffffffffffffffffffffffffffffffffff16610ccb82610645565b73ffffffffffffffffffffffffffffffffffffffff1614610d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1890612034565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610ead8383836001611378565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610f0982826040518060200160405280600081525061137e565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7390612094565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161106d9190611fb7565b60405180910390a3505050565b611085848484610bb8565b611091848484846113d9565b6110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790612014565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060600060016110fc84611570565b01905060008167ffffffffffffffff811115611141577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156111735781602001600182028036833780820191505090505b509050600082602001820190505b600115611206578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816111f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b049450600085141561120157611206565b611181565b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff1661123383610eb2565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600181111561137257600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146112e65780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112de919061225e565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146113715780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113699190612208565b925050819055505b5b50505050565b50505050565b61138883836117a7565b61139560008484846113d9565b6113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90612014565b60405180910390fd5b505050565b60006113fa8473ffffffffffffffffffffffffffffffffffffffff166119c5565b15611563578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611423610a62565b8786866040518563ffffffff1660e01b81526004016114459493929190611f6b565b602060405180830381600087803b15801561145f57600080fd5b505af192505050801561149057506040513d601f19601f8201168201806040525081019061148d9190611c89565b60015b611513573d80600081146114c0576040519150601f19603f3d011682016040523d82523d6000602084013e6114c5565b606091505b5060008151141561150b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150290612014565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611568565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106115f4577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816115ea577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611657576d04ee2d6d415b85acef8100000000838161164d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506020810190505b662386f26fc1000083106116ac57662386f26fc1000083816116a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506010810190505b6305f5e10083106116fb576305f5e10083816116f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506008810190505b612710831061174657612710838161173c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506004810190505b6064831061178f5760648381611785577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506002810190505b600a831061179e576001810190505b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e906120d4565b60405180910390fd5b61182081611211565b15611860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185790612054565b60405180910390fd5b61186e600083836001611252565b61187781611211565b156118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ae90612054565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46119c1600083836001611378565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60006119fb6119f684612194565b61216f565b905082815260208101848484011115611a1357600080fd5b611a1e848285612306565b509392505050565b600081359050611a358161275f565b92915050565b600081359050611a4a81612776565b92915050565b600081359050611a5f8161278d565b92915050565b600081519050611a748161278d565b92915050565b600082601f830112611a8b57600080fd5b8135611a9b8482602086016119e8565b91505092915050565b600081359050611ab3816127a4565b92915050565b600060208284031215611acb57600080fd5b6000611ad984828501611a26565b91505092915050565b60008060408385031215611af557600080fd5b6000611b0385828601611a26565b9250506020611b1485828601611a26565b9150509250929050565b600080600060608486031215611b3357600080fd5b6000611b4186828701611a26565b9350506020611b5286828701611a26565b9250506040611b6386828701611aa4565b9150509250925092565b60008060008060808587031215611b8357600080fd5b6000611b9187828801611a26565b9450506020611ba287828801611a26565b9350506040611bb387828801611aa4565b925050606085013567ffffffffffffffff811115611bd057600080fd5b611bdc87828801611a7a565b91505092959194509250565b60008060408385031215611bfb57600080fd5b6000611c0985828601611a26565b9250506020611c1a85828601611a3b565b9150509250929050565b60008060408385031215611c3757600080fd5b6000611c4585828601611a26565b9250506020611c5685828601611aa4565b9150509250929050565b600060208284031215611c7257600080fd5b6000611c8084828501611a50565b91505092915050565b600060208284031215611c9b57600080fd5b6000611ca984828501611a65565b91505092915050565b600060208284031215611cc457600080fd5b6000611cd284828501611aa4565b91505092915050565b611ce481612292565b82525050565b611cf3816122a4565b82525050565b6000611d04826121c5565b611d0e81856121db565b9350611d1e818560208601612315565b611d2781612481565b840191505092915050565b6000611d3d826121d0565b611d4781856121ec565b9350611d57818560208601612315565b611d6081612481565b840191505092915050565b6000611d76826121d0565b611d8081856121fd565b9350611d90818560208601612315565b80840191505092915050565b6000611da9602d836121ec565b9150611db482612492565b604082019050919050565b6000611dcc6032836121ec565b9150611dd7826124e1565b604082019050919050565b6000611def6025836121ec565b9150611dfa82612530565b604082019050919050565b6000611e12601c836121ec565b9150611e1d8261257f565b602082019050919050565b6000611e356024836121ec565b9150611e40826125a8565b604082019050919050565b6000611e586019836121ec565b9150611e63826125f7565b602082019050919050565b6000611e7b6029836121ec565b9150611e8682612620565b604082019050919050565b6000611e9e6020836121ec565b9150611ea98261266f565b602082019050919050565b6000611ec16018836121ec565b9150611ecc82612698565b602082019050919050565b6000611ee46021836121ec565b9150611eef826126c1565b604082019050919050565b6000611f07603d836121ec565b9150611f1282612710565b604082019050919050565b611f26816122fc565b82525050565b6000611f388285611d6b565b9150611f448284611d6b565b91508190509392505050565b6000602082019050611f656000830184611cdb565b92915050565b6000608082019050611f806000830187611cdb565b611f8d6020830186611cdb565b611f9a6040830185611f1d565b8181036060830152611fac8184611cf9565b905095945050505050565b6000602082019050611fcc6000830184611cea565b92915050565b60006020820190508181036000830152611fec8184611d32565b905092915050565b6000602082019050818103600083015261200d81611d9c565b9050919050565b6000602082019050818103600083015261202d81611dbf565b9050919050565b6000602082019050818103600083015261204d81611de2565b9050919050565b6000602082019050818103600083015261206d81611e05565b9050919050565b6000602082019050818103600083015261208d81611e28565b9050919050565b600060208201905081810360008301526120ad81611e4b565b9050919050565b600060208201905081810360008301526120cd81611e6e565b9050919050565b600060208201905081810360008301526120ed81611e91565b9050919050565b6000602082019050818103600083015261210d81611eb4565b9050919050565b6000602082019050818103600083015261212d81611ed7565b9050919050565b6000602082019050818103600083015261214d81611efa565b9050919050565b60006020820190506121696000830184611f1d565b92915050565b600061217961218a565b9050612185828261237a565b919050565b6000604051905090565b600067ffffffffffffffff8211156121af576121ae612452565b5b6121b882612481565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612213826122fc565b915061221e836122fc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612253576122526123f4565b5b828201905092915050565b6000612269826122fc565b9150612274836122fc565b925082821015612287576122866123f4565b5b828203905092915050565b600061229d826122dc565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612333578082015181840152602081019050612318565b83811115612342576000848401525b50505050565b6000600282049050600182168061236057607f821691505b6020821081141561237457612373612423565b5b50919050565b61238382612481565b810181811067ffffffffffffffff821117156123a2576123a1612452565b5b80604052505050565b60006123b6826122fc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156123e9576123e86123f4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b61276881612292565b811461277357600080fd5b50565b61277f816122a4565b811461278a57600080fd5b50565b612796816122b0565b81146127a157600080fd5b50565b6127ad816122fc565b81146127b857600080fd5b5056fea264697066735822122081cc551bc6d29594eaf36ece0da52af221587575fe93fcb37decc025948e4fc364736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var TestERC721__factory = /** @class */ (function (_super) { - __extends(TestERC721__factory, _super); - function TestERC721__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "TestERC721"; - return _this; - } - TestERC721__factory.prototype.deploy = function (name, symbol, overrides) { - return _super.prototype.deploy.call(this, name, symbol, overrides || {}); - }; - TestERC721__factory.prototype.getDeployTransaction = function (name, symbol, overrides) { - return _super.prototype.getDeployTransaction.call(this, name, symbol, overrides || {}); - }; - TestERC721__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - TestERC721__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - TestERC721__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - TestERC721__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - TestERC721__factory.bytecode = _bytecode; - TestERC721__factory.abi = _abi; - return TestERC721__factory; -}(ethers_1.ContractFactory)); -exports.TestERC721__factory = TestERC721__factory; diff --git a/desci-contracts/typechain-types/factories/VersionedERC721V2__factory.js b/desci-contracts/typechain-types/factories/VersionedERC721V2__factory.js deleted file mode 100644 index da52e72d3..000000000 --- a/desci-contracts/typechain-types/factories/VersionedERC721V2__factory.js +++ /dev/null @@ -1,508 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.VersionedERC721V2__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address" - }, - { - indexed: false, - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "ApprovalForAll", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Transfer", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "_uuid", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "_cid", - type: "bytes" - }, - ], - name: "VersionPush", - type: "event" - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - }, - ], - name: "__VersionedERC721V2_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - name: "_metadata", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "updateMetadata", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x608060405234801561001057600080fd5b506128f0806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80636352211e116100a2578063a22cb46511610071578063a22cb465146102dc578063af3ba9c1146102f8578063b88d4fde14610314578063c87b56dd14610330578063e985e9c5146103605761010b565b80636352211e1461024257806370a082311461027257806395d89b41146102a25780639a7fad40146102c05761010b565b806313859f46116100de57806313859f46146101aa57806323b872dd146101da57806342842e0e146101f65780634f558e79146102125761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190611b95565b610390565b6040516101379190611fac565b60405180910390f35b610148610472565b6040516101559190611fe9565b60405180910390f35b61017860048036038101906101739190611c53565b610504565b6040516101859190611f45565b60405180910390f35b6101a860048036038101906101a39190611b59565b61054a565b005b6101c460048036038101906101bf9190611c53565b610662565b6040516101d19190611fc7565b60405180910390f35b6101f460048036038101906101ef9190611a53565b610702565b005b610210600480360381019061020b9190611a53565b610762565b005b61022c60048036038101906102279190611c53565b610782565b6040516102399190611fac565b60405180910390f35b61025c60048036038101906102579190611c53565b610794565b6040516102699190611f45565b60405180910390f35b61028c600480360381019061028791906119ee565b610846565b604051610299919061216b565b60405180910390f35b6102aa6108fe565b6040516102b79190611fe9565b60405180910390f35b6102da60048036038101906102d59190611c7c565b610990565b005b6102f660048036038101906102f19190611b1d565b610aae565b005b610312600480360381019061030d9190611be7565b610ac4565b005b61032e60048036038101906103299190611aa2565b610b21565b005b61034a60048036038101906103459190611c53565b610b83565b6040516103579190611fe9565b60405180910390f35b61037a60048036038101906103759190611a17565b610beb565b6040516103879190611fac565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061045b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061046b575061046a82610c7f565b5b9050919050565b606060658054610481906123c1565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad906123c1565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b5050505050905090565b600061050f82610ce9565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061055582610794565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd9061210b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105e5610d34565b73ffffffffffffffffffffffffffffffffffffffff16148061061457506106138161060e610d34565b610beb565b5b610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a906120ab565b60405180910390fd5b61065d8383610d3c565b505050565b60976020528060005260406000206000915090508054610681906123c1565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad906123c1565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b505050505081565b61071361070d610d34565b82610df5565b610752576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107499061214b565b60405180910390fd5b61075d838383610e8a565b505050565b61077d83838360405180602001604052806000815250610b21565b505050565b600061078d826110f1565b9050919050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561083d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610834906120eb565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae9061208b565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606066805461090d906123c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610939906123c1565b80156109865780601f1061095b57610100808354040283529160200191610986565b820191906000526020600020905b81548152906001019060200180831161096957829003601f168201915b5050505050905090565b81600061099b610d34565b905060008173ffffffffffffffffffffffffffffffffffffffff166109bf84610794565b73ffffffffffffffffffffffffffffffffffffffff1614806109e757506109e68284610df5565b5b905080610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a20906120cb565b60405180910390fd5b83609760008781526020019081526020016000209080519060200190610a5092919061178c565b5084610a5a610d34565b73ffffffffffffffffffffffffffffffffffffffff167fabddf73bfc8efbf8287a09ea355e43cf6c0c22880ce0470affeba5271c0a769486604051610a9f9190611fc7565b60405180910390a35050505050565b610ac0610ab9610d34565b838361115d565b5050565b600060019054906101000a900460ff16610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a9061212b565b60405180910390fd5b610b1d82826112ca565b5050565b610b32610b2c610d34565b83610df5565b610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b689061214b565b60405180910390fd5b610b7d84848484611327565b50505050565b6060610b8e82610ce9565b6000610b98611383565b90506000815111610bb85760405180602001604052806000815250610be3565b80610bc28461139a565b604051602001610bd3929190611f21565b6040516020818303038152906040525b915050919050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610cf2816110f1565b610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d28906120eb565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610daf83610794565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610e0183610794565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610e435750610e428185610beb565b5b80610e8157508373ffffffffffffffffffffffffffffffffffffffff16610e6984610504565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610eaa82610794565b73ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef79061202b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f679061204b565b60405180910390fd5b610f7b838383611547565b610f86600082610d3c565b6001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fd691906122d7565b925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461102d9190612250565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46110ec83838361154c565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c39061206b565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112bd9190611fac565b60405180910390a3505050565b600060019054906101000a900460ff16611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113109061212b565b60405180910390fd5b6113238282611551565b5050565b611332848484610e8a565b61133e848484846115d2565b61137d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113749061200b565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606060008214156113e2576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611542565b600082905060005b600082146114145780806113fd90612424565b915050600a8261140d91906122a6565b91506113ea565b60008167ffffffffffffffff811115611456577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114885781602001600182028036833780820191505090505b5090505b6000851461153b576001826114a191906122d7565b9150600a856114b0919061246d565b60306114bc9190612250565b60f81b8183815181106114f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561153491906122a6565b945061148c565b8093505050505b919050565b505050565b505050565b600060019054906101000a900460ff166115a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115979061212b565b60405180910390fd5b81606590805190602001906115b6929190611812565b5080606690805190602001906115cd929190611812565b505050565b60006115f38473ffffffffffffffffffffffffffffffffffffffff16611769565b1561175c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261161c610d34565b8786866040518563ffffffff1660e01b815260040161163e9493929190611f60565b602060405180830381600087803b15801561165857600080fd5b505af192505050801561168957506040513d601f19601f820116820180604052508101906116869190611bbe565b60015b61170c573d80600081146116b9576040519150601f19603f3d011682016040523d82523d6000602084013e6116be565b606091505b50600081511415611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb9061200b565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611761565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054611798906123c1565b90600052602060002090601f0160209004810192826117ba5760008555611801565b82601f106117d357805160ff1916838001178555611801565b82800160010185558215611801579182015b828111156118005782518255916020019190600101906117e5565b5b50905061180e9190611898565b5090565b82805461181e906123c1565b90600052602060002090601f0160209004810192826118405760008555611887565b82601f1061185957805160ff1916838001178555611887565b82800160010185558215611887579182015b8281111561188657825182559160200191906001019061186b565b5b5090506118949190611898565b5090565b5b808211156118b1576000816000905550600101611899565b5090565b60006118c86118c3846121ab565b612186565b9050828152602081018484840111156118e057600080fd5b6118eb84828561237f565b509392505050565b6000611906611901846121dc565b612186565b90508281526020810184848401111561191e57600080fd5b61192984828561237f565b509392505050565b6000813590506119408161285e565b92915050565b60008135905061195581612875565b92915050565b60008135905061196a8161288c565b92915050565b60008151905061197f8161288c565b92915050565b600082601f83011261199657600080fd5b81356119a68482602086016118b5565b91505092915050565b600082601f8301126119c057600080fd5b81356119d08482602086016118f3565b91505092915050565b6000813590506119e8816128a3565b92915050565b600060208284031215611a0057600080fd5b6000611a0e84828501611931565b91505092915050565b60008060408385031215611a2a57600080fd5b6000611a3885828601611931565b9250506020611a4985828601611931565b9150509250929050565b600080600060608486031215611a6857600080fd5b6000611a7686828701611931565b9350506020611a8786828701611931565b9250506040611a98868287016119d9565b9150509250925092565b60008060008060808587031215611ab857600080fd5b6000611ac687828801611931565b9450506020611ad787828801611931565b9350506040611ae8878288016119d9565b925050606085013567ffffffffffffffff811115611b0557600080fd5b611b1187828801611985565b91505092959194509250565b60008060408385031215611b3057600080fd5b6000611b3e85828601611931565b9250506020611b4f85828601611946565b9150509250929050565b60008060408385031215611b6c57600080fd5b6000611b7a85828601611931565b9250506020611b8b858286016119d9565b9150509250929050565b600060208284031215611ba757600080fd5b6000611bb58482850161195b565b91505092915050565b600060208284031215611bd057600080fd5b6000611bde84828501611970565b91505092915050565b60008060408385031215611bfa57600080fd5b600083013567ffffffffffffffff811115611c1457600080fd5b611c20858286016119af565b925050602083013567ffffffffffffffff811115611c3d57600080fd5b611c49858286016119af565b9150509250929050565b600060208284031215611c6557600080fd5b6000611c73848285016119d9565b91505092915050565b60008060408385031215611c8f57600080fd5b6000611c9d858286016119d9565b925050602083013567ffffffffffffffff811115611cba57600080fd5b611cc685828601611985565b9150509250929050565b611cd98161230b565b82525050565b611ce88161231d565b82525050565b6000611cf98261220d565b611d038185612223565b9350611d1381856020860161238e565b611d1c8161255a565b840191505092915050565b6000611d3282612218565b611d3c8185612234565b9350611d4c81856020860161238e565b611d558161255a565b840191505092915050565b6000611d6b82612218565b611d758185612245565b9350611d8581856020860161238e565b80840191505092915050565b6000611d9e603283612234565b9150611da98261256b565b604082019050919050565b6000611dc1602583612234565b9150611dcc826125ba565b604082019050919050565b6000611de4602483612234565b9150611def82612609565b604082019050919050565b6000611e07601983612234565b9150611e1282612658565b602082019050919050565b6000611e2a602983612234565b9150611e3582612681565b604082019050919050565b6000611e4d603e83612234565b9150611e58826126d0565b604082019050919050565b6000611e70600d83612234565b9150611e7b8261271f565b602082019050919050565b6000611e93601883612234565b9150611e9e82612748565b602082019050919050565b6000611eb6602183612234565b9150611ec182612771565b604082019050919050565b6000611ed9602b83612234565b9150611ee4826127c0565b604082019050919050565b6000611efc602e83612234565b9150611f078261280f565b604082019050919050565b611f1b81612375565b82525050565b6000611f2d8285611d60565b9150611f398284611d60565b91508190509392505050565b6000602082019050611f5a6000830184611cd0565b92915050565b6000608082019050611f756000830187611cd0565b611f826020830186611cd0565b611f8f6040830185611f12565b8181036060830152611fa18184611cee565b905095945050505050565b6000602082019050611fc16000830184611cdf565b92915050565b60006020820190508181036000830152611fe18184611cee565b905092915050565b600060208201905081810360008301526120038184611d27565b905092915050565b6000602082019050818103600083015261202481611d91565b9050919050565b6000602082019050818103600083015261204481611db4565b9050919050565b6000602082019050818103600083015261206481611dd7565b9050919050565b6000602082019050818103600083015261208481611dfa565b9050919050565b600060208201905081810360008301526120a481611e1d565b9050919050565b600060208201905081810360008301526120c481611e40565b9050919050565b600060208201905081810360008301526120e481611e63565b9050919050565b6000602082019050818103600083015261210481611e86565b9050919050565b6000602082019050818103600083015261212481611ea9565b9050919050565b6000602082019050818103600083015261214481611ecc565b9050919050565b6000602082019050818103600083015261216481611eef565b9050919050565b60006020820190506121806000830184611f12565b92915050565b60006121906121a1565b905061219c82826123f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156121c6576121c561252b565b5b6121cf8261255a565b9050602081019050919050565b600067ffffffffffffffff8211156121f7576121f661252b565b5b6122008261255a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061225b82612375565b915061226683612375565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561229b5761229a61249e565b5b828201905092915050565b60006122b182612375565b91506122bc83612375565b9250826122cc576122cb6124cd565b5b828204905092915050565b60006122e282612375565b91506122ed83612375565b925082821015612300576122ff61249e565b5b828203905092915050565b600061231682612355565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156123ac578082015181840152602081019050612391565b838111156123bb576000848401525b50505050565b600060028204905060018216806123d957607f821691505b602082108114156123ed576123ec6124fc565b5b50919050565b6123fc8261255a565b810181811067ffffffffffffffff8211171561241b5761241a61252b565b5b80604052505050565b600061242f82612375565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156124625761246161249e565b5b600182019050919050565b600061247882612375565b915061248383612375565b925082612493576124926124cd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4e6f207065726d697373696f6e00000000000000000000000000000000000000600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6128678161230b565b811461287257600080fd5b50565b61287e8161231d565b811461288957600080fd5b50565b61289581612329565b81146128a057600080fd5b50565b6128ac81612375565b81146128b757600080fd5b5056fea2646970667358221220912681ee982aac98ba6e5a66c351c0104fd0af441115dab6d9ad9423598c793364736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var VersionedERC721V2__factory = /** @class */ (function (_super) { - __extends(VersionedERC721V2__factory, _super); - function VersionedERC721V2__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "VersionedERC721V2"; - return _this; - } - VersionedERC721V2__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - VersionedERC721V2__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - VersionedERC721V2__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - VersionedERC721V2__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - VersionedERC721V2__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - VersionedERC721V2__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - VersionedERC721V2__factory.bytecode = _bytecode; - VersionedERC721V2__factory.abi = _abi; - return VersionedERC721V2__factory; -}(ethers_1.ContractFactory)); -exports.VersionedERC721V2__factory = VersionedERC721V2__factory; diff --git a/desci-contracts/typechain-types/factories/VersionedERC721__factory.js b/desci-contracts/typechain-types/factories/VersionedERC721__factory.js deleted file mode 100644 index 25f3262de..000000000 --- a/desci-contracts/typechain-types/factories/VersionedERC721__factory.js +++ /dev/null @@ -1,508 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -exports.VersionedERC721__factory = void 0; -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -var ethers_1 = require("ethers"); -var _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address" - }, - { - indexed: false, - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "ApprovalForAll", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8" - }, - ], - name: "Initialized", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "Transfer", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_from", - type: "address" - }, - { - indexed: true, - internalType: "uint256", - name: "_uuid", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "_cid", - type: "bytes" - }, - ], - name: "VersionPush", - type: "event" - }, - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - }, - ], - name: "__VersionedERC721_init", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - name: "_metadata", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "exists", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "operator", - type: "address" - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - }, - { - internalType: "bool", - name: "approved", - type: "bool" - }, - ], - name: "setApprovalForAll", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4" - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - }, - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256" - }, - { - internalType: "bytes", - name: "cid", - type: "bytes" - }, - ], - name: "updateMetadata", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, -]; -var _bytecode = "0x608060405234801561001057600080fd5b506128df806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063599ad936116100a25780639a7fad40116100715780639a7fad40146102dc578063a22cb465146102f8578063b88d4fde14610314578063c87b56dd14610330578063e985e9c5146103605761010b565b8063599ad936146102425780636352211e1461025e57806370a082311461028e57806395d89b41146102be5761010b565b806313859f46116100de57806313859f46146101aa57806323b872dd146101da57806342842e0e146101f65780634f558e79146102125761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190611b84565b610390565b6040516101379190611f9b565b60405180910390f35b610148610472565b6040516101559190611fd8565b60405180910390f35b61017860048036038101906101739190611c42565b610504565b6040516101859190611f34565b60405180910390f35b6101a860048036038101906101a39190611b48565b61054a565b005b6101c460048036038101906101bf9190611c42565b610662565b6040516101d19190611fb6565b60405180910390f35b6101f460048036038101906101ef9190611a42565b610702565b005b610210600480360381019061020b9190611a42565b610762565b005b61022c60048036038101906102279190611c42565b610782565b6040516102399190611f9b565b60405180910390f35b61025c60048036038101906102579190611bd6565b610794565b005b61027860048036038101906102739190611c42565b6107f1565b6040516102859190611f34565b60405180910390f35b6102a860048036038101906102a391906119dd565b6108a3565b6040516102b5919061215a565b60405180910390f35b6102c661095b565b6040516102d39190611fd8565b60405180910390f35b6102f660048036038101906102f19190611c6b565b6109ed565b005b610312600480360381019061030d9190611b0c565b610afa565b005b61032e60048036038101906103299190611a91565b610b10565b005b61034a60048036038101906103459190611c42565b610b72565b6040516103579190611fd8565b60405180910390f35b61037a60048036038101906103759190611a06565b610bda565b6040516103879190611f9b565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061045b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061046b575061046a82610c6e565b5b9050919050565b606060658054610481906123b0565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad906123b0565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b5050505050905090565b600061050f82610cd8565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610555826107f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd906120fa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105e5610d23565b73ffffffffffffffffffffffffffffffffffffffff16148061061457506106138161060e610d23565b610bda565b5b610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a9061209a565b60405180910390fd5b61065d8383610d2b565b505050565b60976020528060005260406000206000915090508054610681906123b0565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad906123b0565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b505050505081565b61071361070d610d23565b82610de4565b610752576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107499061213a565b60405180910390fd5b61075d838383610e79565b505050565b61077d83838360405180602001604052806000815250610b10565b505050565b600061078d826110e0565b9050919050565b600060019054906101000a900460ff166107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107da9061211a565b60405180910390fd5b6107ed828261114c565b5050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561089a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610891906120da565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090b9061207a565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606066805461096a906123b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610996906123b0565b80156109e35780601f106109b8576101008083540402835291602001916109e3565b820191906000526020600020905b8154815290600101906020018083116109c657829003601f168201915b5050505050905090565b8160006109f8610d23565b905060008173ffffffffffffffffffffffffffffffffffffffff16610a1c846107f1565b73ffffffffffffffffffffffffffffffffffffffff1614905080610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c906120ba565b60405180910390fd5b83609760008781526020019081526020016000209080519060200190610a9c92919061177b565b5084610aa6610d23565b73ffffffffffffffffffffffffffffffffffffffff167fabddf73bfc8efbf8287a09ea355e43cf6c0c22880ce0470affeba5271c0a769486604051610aeb9190611fb6565b60405180910390a35050505050565b610b0c610b05610d23565b83836111a9565b5050565b610b21610b1b610d23565b83610de4565b610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b579061213a565b60405180910390fd5b610b6c84848484611316565b50505050565b6060610b7d82610cd8565b6000610b87611372565b90506000815111610ba75760405180602001604052806000815250610bd2565b80610bb184611389565b604051602001610bc2929190611f10565b6040516020818303038152906040525b915050919050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610ce1816110e0565b610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d17906120da565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610d9e836107f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610df0836107f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610e325750610e318185610bda565b5b80610e7057508373ffffffffffffffffffffffffffffffffffffffff16610e5884610504565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610e99826107f1565b73ffffffffffffffffffffffffffffffffffffffff1614610eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee69061201a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f569061203a565b60405180910390fd5b610f6a838383611536565b610f75600082610d2b565b6001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fc591906122c6565b925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461101c919061223f565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46110db83838361153b565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600060019054906101000a900460ff1661119b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111929061211a565b60405180910390fd5b6111a58282611540565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f9061205a565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113099190611f9b565b60405180910390a3505050565b611321848484610e79565b61132d848484846115c1565b61136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136390611ffa565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606060008214156113d1576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611531565b600082905060005b600082146114035780806113ec90612413565b915050600a826113fc9190612295565b91506113d9565b60008167ffffffffffffffff811115611445577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114775781602001600182028036833780820191505090505b5090505b6000851461152a5760018261149091906122c6565b9150600a8561149f919061245c565b60306114ab919061223f565b60f81b8183815181106114e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856115239190612295565b945061147b565b8093505050505b919050565b505050565b505050565b600060019054906101000a900460ff1661158f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115869061211a565b60405180910390fd5b81606590805190602001906115a5929190611801565b5080606690805190602001906115bc929190611801565b505050565b60006115e28473ffffffffffffffffffffffffffffffffffffffff16611758565b1561174b578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261160b610d23565b8786866040518563ffffffff1660e01b815260040161162d9493929190611f4f565b602060405180830381600087803b15801561164757600080fd5b505af192505050801561167857506040513d601f19601f820116820180604052508101906116759190611bad565b60015b6116fb573d80600081146116a8576040519150601f19603f3d011682016040523d82523d6000602084013e6116ad565b606091505b506000815114156116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90611ffa565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611750565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054611787906123b0565b90600052602060002090601f0160209004810192826117a957600085556117f0565b82601f106117c257805160ff19168380011785556117f0565b828001600101855582156117f0579182015b828111156117ef5782518255916020019190600101906117d4565b5b5090506117fd9190611887565b5090565b82805461180d906123b0565b90600052602060002090601f01602090048101928261182f5760008555611876565b82601f1061184857805160ff1916838001178555611876565b82800160010185558215611876579182015b8281111561187557825182559160200191906001019061185a565b5b5090506118839190611887565b5090565b5b808211156118a0576000816000905550600101611888565b5090565b60006118b76118b28461219a565b612175565b9050828152602081018484840111156118cf57600080fd5b6118da84828561236e565b509392505050565b60006118f56118f0846121cb565b612175565b90508281526020810184848401111561190d57600080fd5b61191884828561236e565b509392505050565b60008135905061192f8161284d565b92915050565b60008135905061194481612864565b92915050565b6000813590506119598161287b565b92915050565b60008151905061196e8161287b565b92915050565b600082601f83011261198557600080fd5b81356119958482602086016118a4565b91505092915050565b600082601f8301126119af57600080fd5b81356119bf8482602086016118e2565b91505092915050565b6000813590506119d781612892565b92915050565b6000602082840312156119ef57600080fd5b60006119fd84828501611920565b91505092915050565b60008060408385031215611a1957600080fd5b6000611a2785828601611920565b9250506020611a3885828601611920565b9150509250929050565b600080600060608486031215611a5757600080fd5b6000611a6586828701611920565b9350506020611a7686828701611920565b9250506040611a87868287016119c8565b9150509250925092565b60008060008060808587031215611aa757600080fd5b6000611ab587828801611920565b9450506020611ac687828801611920565b9350506040611ad7878288016119c8565b925050606085013567ffffffffffffffff811115611af457600080fd5b611b0087828801611974565b91505092959194509250565b60008060408385031215611b1f57600080fd5b6000611b2d85828601611920565b9250506020611b3e85828601611935565b9150509250929050565b60008060408385031215611b5b57600080fd5b6000611b6985828601611920565b9250506020611b7a858286016119c8565b9150509250929050565b600060208284031215611b9657600080fd5b6000611ba48482850161194a565b91505092915050565b600060208284031215611bbf57600080fd5b6000611bcd8482850161195f565b91505092915050565b60008060408385031215611be957600080fd5b600083013567ffffffffffffffff811115611c0357600080fd5b611c0f8582860161199e565b925050602083013567ffffffffffffffff811115611c2c57600080fd5b611c388582860161199e565b9150509250929050565b600060208284031215611c5457600080fd5b6000611c62848285016119c8565b91505092915050565b60008060408385031215611c7e57600080fd5b6000611c8c858286016119c8565b925050602083013567ffffffffffffffff811115611ca957600080fd5b611cb585828601611974565b9150509250929050565b611cc8816122fa565b82525050565b611cd78161230c565b82525050565b6000611ce8826121fc565b611cf28185612212565b9350611d0281856020860161237d565b611d0b81612549565b840191505092915050565b6000611d2182612207565b611d2b8185612223565b9350611d3b81856020860161237d565b611d4481612549565b840191505092915050565b6000611d5a82612207565b611d648185612234565b9350611d7481856020860161237d565b80840191505092915050565b6000611d8d603283612223565b9150611d988261255a565b604082019050919050565b6000611db0602583612223565b9150611dbb826125a9565b604082019050919050565b6000611dd3602483612223565b9150611dde826125f8565b604082019050919050565b6000611df6601983612223565b9150611e0182612647565b602082019050919050565b6000611e19602983612223565b9150611e2482612670565b604082019050919050565b6000611e3c603e83612223565b9150611e47826126bf565b604082019050919050565b6000611e5f600d83612223565b9150611e6a8261270e565b602082019050919050565b6000611e82601883612223565b9150611e8d82612737565b602082019050919050565b6000611ea5602183612223565b9150611eb082612760565b604082019050919050565b6000611ec8602b83612223565b9150611ed3826127af565b604082019050919050565b6000611eeb602e83612223565b9150611ef6826127fe565b604082019050919050565b611f0a81612364565b82525050565b6000611f1c8285611d4f565b9150611f288284611d4f565b91508190509392505050565b6000602082019050611f496000830184611cbf565b92915050565b6000608082019050611f646000830187611cbf565b611f716020830186611cbf565b611f7e6040830185611f01565b8181036060830152611f908184611cdd565b905095945050505050565b6000602082019050611fb06000830184611cce565b92915050565b60006020820190508181036000830152611fd08184611cdd565b905092915050565b60006020820190508181036000830152611ff28184611d16565b905092915050565b6000602082019050818103600083015261201381611d80565b9050919050565b6000602082019050818103600083015261203381611da3565b9050919050565b6000602082019050818103600083015261205381611dc6565b9050919050565b6000602082019050818103600083015261207381611de9565b9050919050565b6000602082019050818103600083015261209381611e0c565b9050919050565b600060208201905081810360008301526120b381611e2f565b9050919050565b600060208201905081810360008301526120d381611e52565b9050919050565b600060208201905081810360008301526120f381611e75565b9050919050565b6000602082019050818103600083015261211381611e98565b9050919050565b6000602082019050818103600083015261213381611ebb565b9050919050565b6000602082019050818103600083015261215381611ede565b9050919050565b600060208201905061216f6000830184611f01565b92915050565b600061217f612190565b905061218b82826123e2565b919050565b6000604051905090565b600067ffffffffffffffff8211156121b5576121b461251a565b5b6121be82612549565b9050602081019050919050565b600067ffffffffffffffff8211156121e6576121e561251a565b5b6121ef82612549565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061224a82612364565b915061225583612364565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561228a5761228961248d565b5b828201905092915050565b60006122a082612364565b91506122ab83612364565b9250826122bb576122ba6124bc565b5b828204905092915050565b60006122d182612364565b91506122dc83612364565b9250828210156122ef576122ee61248d565b5b828203905092915050565b600061230582612344565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561239b578082015181840152602081019050612380565b838111156123aa576000848401525b50505050565b600060028204905060018216806123c857607f821691505b602082108114156123dc576123db6124eb565b5b50919050565b6123eb82612549565b810181811067ffffffffffffffff8211171561240a5761240961251a565b5b80604052505050565b600061241e82612364565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156124515761245061248d565b5b600182019050919050565b600061246782612364565b915061247283612364565b925082612482576124816124bc565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4e6f207065726d697373696f6e00000000000000000000000000000000000000600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b612856816122fa565b811461286157600080fd5b50565b61286d8161230c565b811461287857600080fd5b50565b61288481612318565b811461288f57600080fd5b50565b61289b81612364565b81146128a657600080fd5b5056fea26469706673582212208816f35c3f39abe99ae49479034773b9cac55a86f0dc13f69dab11aa58a03d2f64736f6c63430008040033"; -var isSuperArgs = function (xs) { return xs.length > 1; }; -var VersionedERC721__factory = /** @class */ (function (_super) { - __extends(VersionedERC721__factory, _super); - function VersionedERC721__factory() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var _this = this; - if (isSuperArgs(args)) { - _this = _super.apply(this, args) || this; - } - else { - _this = _super.call(this, _abi, _bytecode, args[0]) || this; - } - _this.contractName = "VersionedERC721"; - return _this; - } - VersionedERC721__factory.prototype.deploy = function (overrides) { - return _super.prototype.deploy.call(this, overrides || {}); - }; - VersionedERC721__factory.prototype.getDeployTransaction = function (overrides) { - return _super.prototype.getDeployTransaction.call(this, overrides || {}); - }; - VersionedERC721__factory.prototype.attach = function (address) { - return _super.prototype.attach.call(this, address); - }; - VersionedERC721__factory.prototype.connect = function (signer) { - return _super.prototype.connect.call(this, signer); - }; - VersionedERC721__factory.createInterface = function () { - return new ethers_1.utils.Interface(_abi); - }; - VersionedERC721__factory.connect = function (address, signerOrProvider) { - return new ethers_1.Contract(address, _abi, signerOrProvider); - }; - VersionedERC721__factory.bytecode = _bytecode; - VersionedERC721__factory.abi = _abi; - return VersionedERC721__factory; -}(ethers_1.ContractFactory)); -exports.VersionedERC721__factory = VersionedERC721__factory; diff --git a/desci-contracts/typechain-types/hardhat.d.ts b/desci-contracts/typechain-types/hardhat.d.ts index 49fd57e36..b99c3c379 100644 --- a/desci-contracts/typechain-types/hardhat.d.ts +++ b/desci-contracts/typechain-types/hardhat.d.ts @@ -20,6 +20,10 @@ declare module "hardhat/types/runtime" { name: "Initializable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "PausableUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ERC721Upgradeable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -72,6 +76,10 @@ declare module "hardhat/types/runtime" { name: "IERC165", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "DpidAliasRegistry", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "DpidRegistry", signerOrOptions?: ethers.Signer | FactoryOptions @@ -115,6 +123,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "PausableUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ERC721Upgradeable", address: string, @@ -180,6 +193,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "DpidAliasRegistry", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "DpidRegistry", address: string, diff --git a/desci-contracts/typechain-types/index.js b/desci-contracts/typechain-types/index.js deleted file mode 100644 index 62939d509..000000000 --- a/desci-contracts/typechain-types/index.js +++ /dev/null @@ -1,60 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -exports.__esModule = true; -exports.VersionedERC721V2__factory = exports.VersionedERC721__factory = exports.TestERC721__factory = exports.ResearchObjectV2__factory = exports.ResearchObject__factory = exports.ResearchObjectMigrated__factory = exports.IDpidRegistry__factory = exports.DpidRegistry__factory = exports.IERC165__factory = exports.ERC165__factory = exports.IERC721Receiver__factory = exports.IERC721__factory = exports.IERC721Metadata__factory = exports.ERC721__factory = exports.IERC165Upgradeable__factory = exports.ERC165Upgradeable__factory = exports.ContextUpgradeable__factory = exports.IERC721Upgradeable__factory = exports.IERC721ReceiverUpgradeable__factory = exports.IERC721MetadataUpgradeable__factory = exports.ERC721Upgradeable__factory = exports.Initializable__factory = exports.OwnableUpgradeable__factory = void 0; -var OwnableUpgradeable__factory_1 = require("./factories/OwnableUpgradeable__factory"); -__createBinding(exports, OwnableUpgradeable__factory_1, "OwnableUpgradeable__factory"); -var Initializable__factory_1 = require("./factories/Initializable__factory"); -__createBinding(exports, Initializable__factory_1, "Initializable__factory"); -var ERC721Upgradeable__factory_1 = require("./factories/ERC721Upgradeable__factory"); -__createBinding(exports, ERC721Upgradeable__factory_1, "ERC721Upgradeable__factory"); -var IERC721MetadataUpgradeable__factory_1 = require("./factories/IERC721MetadataUpgradeable__factory"); -__createBinding(exports, IERC721MetadataUpgradeable__factory_1, "IERC721MetadataUpgradeable__factory"); -var IERC721ReceiverUpgradeable__factory_1 = require("./factories/IERC721ReceiverUpgradeable__factory"); -__createBinding(exports, IERC721ReceiverUpgradeable__factory_1, "IERC721ReceiverUpgradeable__factory"); -var IERC721Upgradeable__factory_1 = require("./factories/IERC721Upgradeable__factory"); -__createBinding(exports, IERC721Upgradeable__factory_1, "IERC721Upgradeable__factory"); -var ContextUpgradeable__factory_1 = require("./factories/ContextUpgradeable__factory"); -__createBinding(exports, ContextUpgradeable__factory_1, "ContextUpgradeable__factory"); -var ERC165Upgradeable__factory_1 = require("./factories/ERC165Upgradeable__factory"); -__createBinding(exports, ERC165Upgradeable__factory_1, "ERC165Upgradeable__factory"); -var IERC165Upgradeable__factory_1 = require("./factories/IERC165Upgradeable__factory"); -__createBinding(exports, IERC165Upgradeable__factory_1, "IERC165Upgradeable__factory"); -var ERC721__factory_1 = require("./factories/ERC721__factory"); -__createBinding(exports, ERC721__factory_1, "ERC721__factory"); -var IERC721Metadata__factory_1 = require("./factories/IERC721Metadata__factory"); -__createBinding(exports, IERC721Metadata__factory_1, "IERC721Metadata__factory"); -var IERC721__factory_1 = require("./factories/IERC721__factory"); -__createBinding(exports, IERC721__factory_1, "IERC721__factory"); -var IERC721Receiver__factory_1 = require("./factories/IERC721Receiver__factory"); -__createBinding(exports, IERC721Receiver__factory_1, "IERC721Receiver__factory"); -var ERC165__factory_1 = require("./factories/ERC165__factory"); -__createBinding(exports, ERC165__factory_1, "ERC165__factory"); -var IERC165__factory_1 = require("./factories/IERC165__factory"); -__createBinding(exports, IERC165__factory_1, "IERC165__factory"); -var DpidRegistry__factory_1 = require("./factories/DpidRegistry__factory"); -__createBinding(exports, DpidRegistry__factory_1, "DpidRegistry__factory"); -var IDpidRegistry__factory_1 = require("./factories/IDpidRegistry__factory"); -__createBinding(exports, IDpidRegistry__factory_1, "IDpidRegistry__factory"); -var ResearchObjectMigrated__factory_1 = require("./factories/ResearchObjectMigrated__factory"); -__createBinding(exports, ResearchObjectMigrated__factory_1, "ResearchObjectMigrated__factory"); -var ResearchObject__factory_1 = require("./factories/ResearchObject__factory"); -__createBinding(exports, ResearchObject__factory_1, "ResearchObject__factory"); -var ResearchObjectV2__factory_1 = require("./factories/ResearchObjectV2__factory"); -__createBinding(exports, ResearchObjectV2__factory_1, "ResearchObjectV2__factory"); -var TestERC721__factory_1 = require("./factories/TestERC721__factory"); -__createBinding(exports, TestERC721__factory_1, "TestERC721__factory"); -var VersionedERC721__factory_1 = require("./factories/VersionedERC721__factory"); -__createBinding(exports, VersionedERC721__factory_1, "VersionedERC721__factory"); -var VersionedERC721V2__factory_1 = require("./factories/VersionedERC721V2__factory"); -__createBinding(exports, VersionedERC721V2__factory_1, "VersionedERC721V2__factory"); diff --git a/desci-contracts/typechain-types/index.ts b/desci-contracts/typechain-types/index.ts index 82c5030b0..ce39e83c7 100644 --- a/desci-contracts/typechain-types/index.ts +++ b/desci-contracts/typechain-types/index.ts @@ -3,6 +3,7 @@ /* eslint-disable */ export type { OwnableUpgradeable } from "./OwnableUpgradeable"; export type { Initializable } from "./Initializable"; +export type { PausableUpgradeable } from "./PausableUpgradeable"; export type { ERC721Upgradeable } from "./ERC721Upgradeable"; export type { IERC721MetadataUpgradeable } from "./IERC721MetadataUpgradeable"; export type { IERC721ReceiverUpgradeable } from "./IERC721ReceiverUpgradeable"; @@ -16,6 +17,7 @@ export type { IERC721 } from "./IERC721"; export type { IERC721Receiver } from "./IERC721Receiver"; export type { ERC165 } from "./ERC165"; export type { IERC165 } from "./IERC165"; +export type { DpidAliasRegistry } from "./DpidAliasRegistry"; export type { DpidRegistry } from "./DpidRegistry"; export type { IDpidRegistry } from "./IDpidRegistry"; export type { ResearchObjectMigrated } from "./ResearchObjectMigrated"; @@ -27,6 +29,7 @@ export type { VersionedERC721V2 } from "./VersionedERC721V2"; export { OwnableUpgradeable__factory } from "./factories/OwnableUpgradeable__factory"; export { Initializable__factory } from "./factories/Initializable__factory"; +export { PausableUpgradeable__factory } from "./factories/PausableUpgradeable__factory"; export { ERC721Upgradeable__factory } from "./factories/ERC721Upgradeable__factory"; export { IERC721MetadataUpgradeable__factory } from "./factories/IERC721MetadataUpgradeable__factory"; export { IERC721ReceiverUpgradeable__factory } from "./factories/IERC721ReceiverUpgradeable__factory"; @@ -40,6 +43,7 @@ export { IERC721__factory } from "./factories/IERC721__factory"; export { IERC721Receiver__factory } from "./factories/IERC721Receiver__factory"; export { ERC165__factory } from "./factories/ERC165__factory"; export { IERC165__factory } from "./factories/IERC165__factory"; +export { DpidAliasRegistry__factory } from "./factories/DpidAliasRegistry__factory"; export { DpidRegistry__factory } from "./factories/DpidRegistry__factory"; export { IDpidRegistry__factory } from "./factories/IDpidRegistry__factory"; export { ResearchObjectMigrated__factory } from "./factories/ResearchObjectMigrated__factory"; diff --git a/desci-contracts/yarn.lock b/desci-contracts/yarn.lock index 978088aa4..5ba7f6ae2 100644 --- a/desci-contracts/yarn.lock +++ b/desci-contracts/yarn.lock @@ -1784,6 +1784,13 @@ "@types/node" "*" "@types/responselike" "^1.0.0" +"@types/chai-as-promised@^7.1.8": + version "7.1.8" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz#f2b3d82d53c59626b5d6bbc087667ccb4b677fe9" + integrity sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw== + dependencies: + "@types/chai" "*" + "@types/chai@*", "@types/chai@^4.2.21": version "4.3.14" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.14.tgz#ae3055ea2be43c91c9fd700a36d67820026d96e6" @@ -3613,6 +3620,13 @@ cborg@^1.5.4, cborg@^1.6.0: resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" integrity sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug== +chai-as-promised@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.2.tgz#70cd73b74afd519754161386421fb71832c6d041" + integrity sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw== + dependencies: + check-error "^1.0.2" + chai@^4.3.4: version "4.4.1" resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" @@ -3667,7 +3681,7 @@ chalk@^4, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== -check-error@^1.0.3: +check-error@^1.0.2, check-error@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== diff --git a/desci-media-isolated/Dockerfile b/desci-media-isolated/Dockerfile index 49d31968c..d6442e2f1 100644 --- a/desci-media-isolated/Dockerfile +++ b/desci-media-isolated/Dockerfile @@ -3,7 +3,7 @@ FROM docker.io/node:20.9.0 as base # Install dumb-init so we can use it as PID 1 -RUN apt-get update && apt-get install -y dumb-init ghostscript unoconv ffmpeg imagemagick curl && \ +RUN apt-get update && apt-get install -y dumb-init ghostscript unoconv ffmpeg imagemagick graphicsmagick curl && \ rm -rf /var/lib/apt/lists/* # Modify ImageMagick policy to allow PDF processing @@ -25,6 +25,7 @@ RUN --mount=type=cache,target=/usr/src/app/.npm \ COPY . . + # Expose debugger port EXPOSE 9777 @@ -41,7 +42,8 @@ ENV NODE_ENV production # 'node' user is created by the node image, prevent perm issues, run with reduced privs RUN mkdir -p /usr/src/app/dist && chown node:node /usr/src/app/dist USER node -COPY --chown=node:node ./src/ ./src/ +COPY --chown=node:node ./src/ ./src/ +COPY --chown=node:node ./public/ ./public/ USER root RUN chown -R node:node /usr/src/app USER node diff --git a/desci-media-isolated/kubernetes/deployment_dev.yaml b/desci-media-isolated/kubernetes/deployment_dev.yaml index 812ea016b..cf2b6ae08 100644 --- a/desci-media-isolated/kubernetes/deployment_dev.yaml +++ b/desci-media-isolated/kubernetes/deployment_dev.yaml @@ -48,9 +48,9 @@ spec: value: 'https://ipfs.desci.com/ipfs' resources: limits: - cpu: '0.5' - memory: 2Gi + cpu: '4' + memory: 4Gi requests: - cpu: 250m - memory: 1Gi + cpu: '1' + memory: 2Gi serviceAccountName: 'default' diff --git a/desci-media-isolated/package-lock.json b/desci-media-isolated/package-lock.json index 551d9f750..6c5118c3f 100644 --- a/desci-media-isolated/package-lock.json +++ b/desci-media-isolated/package-lock.json @@ -9,10 +9,17 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@types/multer": "^1.4.11", "axios": "^1.6.7", "express": "^4.18.2", "filepreview_ts": "^1.0.0", "helmet": "^7.1.0", + "multer": "^1.4.5-lts.1", + "pdf-lib": "^1.17.1", + "pdf2pic": "^3.1.1", + "pdflib-fontkit": "^1.8.11", + "pino": "^9.2.0", + "pino-pretty": "^7.0.0", "tsx": "^4.7.1" }, "devDependencies": { @@ -267,6 +274,22 @@ "node": ">= 8" } }, + "node_modules/@pdf-lib/standard-fonts": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@pdf-lib/standard-fonts/-/standard-fonts-1.0.0.tgz", + "integrity": "sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==", + "dependencies": { + "pako": "^1.0.6" + } + }, + "node_modules/@pdf-lib/upng": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@pdf-lib/upng/-/upng-1.0.1.tgz", + "integrity": "sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==", + "dependencies": { + "pako": "^1.0.10" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -295,7 +318,6 @@ "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dev": true, "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -305,7 +327,6 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, "dependencies": { "@types/node": "*" } @@ -314,7 +335,6 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dev": true, "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -326,7 +346,6 @@ "version": "4.17.43", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", - "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -337,8 +356,7 @@ "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" }, "node_modules/@types/json-schema": { "version": "7.0.15", @@ -349,14 +367,20 @@ "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "node_modules/@types/multer": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.11.tgz", + "integrity": "sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w==", + "dependencies": { + "@types/express": "*" + } }, "node_modules/@types/node": { "version": "20.11.19", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", - "dev": true, "dependencies": { "undici-types": "~5.26.4" } @@ -364,14 +388,12 @@ "node_modules/@types/qs": { "version": "6.9.11", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", - "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", - "dev": true + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, "node_modules/@types/semver": { "version": "7.5.7", @@ -383,7 +405,6 @@ "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dev": true, "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -393,7 +414,6 @@ "version": "1.15.5", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", - "dev": true, "dependencies": { "@types/http-errors": "*", "@types/mime": "*", @@ -724,6 +744,17 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -819,6 +850,11 @@ "node": ">= 8" } }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -831,11 +867,99 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/args": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz", + "integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==", + "dependencies": { + "camelcase": "5.0.0", + "chalk": "2.4.2", + "leven": "2.1.0", + "mri": "1.1.4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/args/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/args/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/args/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/args/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/args/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/args/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/args/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/array-parallel": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/array-parallel/-/array-parallel-0.1.3.tgz", + "integrity": "sha512-TDPTwSWW5E4oiFiKmz6RGJ/a80Y91GuLgUYuLd49+XBS75tYo8PNgaT2K/OxuQYqkoI852MDGBorg9OcUSTQ8w==" + }, + "node_modules/array-series": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/array-series/-/array-series-0.1.5.tgz", + "integrity": "sha512-L0XlBwfx9QetHOsbLDrE/vh2t018w9462HM3iaFfxRiK83aJjAt/Ja3NMkOW7FICwWTlQBa3ZbL5FKhuQWkDrg==" + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -850,6 +974,14 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/axios": { "version": "1.6.7", "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", @@ -866,6 +998,25 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -920,11 +1071,44 @@ "node": ">=8" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } }, "node_modules/bytes": { "version": "3.1.2", @@ -961,6 +1145,14 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "engines": { + "node": ">=6" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1019,6 +1211,11 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1036,6 +1233,20 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -1068,6 +1279,11 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -1088,6 +1304,14 @@ "node": ">= 8" } }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "engines": { + "node": "*" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -1198,6 +1422,14 @@ "node": ">= 0.8" } }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", @@ -1456,6 +1688,22 @@ "node": ">= 0.6" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -1531,6 +1779,19 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -1795,6 +2056,67 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gm": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/gm/-/gm-1.25.0.tgz", + "integrity": "sha512-4kKdWXTtgQ4biIo7hZA396HT062nDVVHPjQcurNZ3o/voYN+o5FUC5kOwuORbpExp3XbTJ3SU7iRipiIhQtovw==", + "dependencies": { + "array-parallel": "~0.1.3", + "array-series": "~0.1.5", + "cross-spawn": "^4.0.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gm/node_modules/cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", + "dependencies": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "node_modules/gm/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/gm/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/gm/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/gm/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/gm/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -1899,6 +2221,25 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -2019,11 +2360,23 @@ "node": ">=8" } }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "engines": { + "node": ">=10" + } }, "node_modules/js-yaml": { "version": "4.1.0", @@ -2064,6 +2417,14 @@ "json-buffer": "3.0.1" } }, + "node_modules/leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2205,7 +2566,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2222,11 +2582,47 @@ "node": ">=10" } }, + "node_modules/mri": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", + "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==", + "engines": { + "node": ">=4" + } + }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -2250,6 +2646,14 @@ "node": ">=0.10.0" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -2258,6 +2662,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -2273,7 +2685,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -2325,6 +2736,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2392,6 +2808,40 @@ "node": ">=8" } }, + "node_modules/pdf-lib": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/pdf-lib/-/pdf-lib-1.17.1.tgz", + "integrity": "sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==", + "dependencies": { + "@pdf-lib/standard-fonts": "^1.0.0", + "@pdf-lib/upng": "^1.0.1", + "pako": "^1.0.11", + "tslib": "^1.11.1" + } + }, + "node_modules/pdf2pic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pdf2pic/-/pdf2pic-3.1.1.tgz", + "integrity": "sha512-AHXsYi9EcYlSm3uUANz7h5WSktHiyTnUeHqdWmyRdjdMhgq9LgZ8pggl9FOUGuCLVfe+NKxp2k9sEMCH3tHIEg==", + "dependencies": { + "gm": "^1.25.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "paypal", + "url": "https://www.paypal.me/yakovmeister" + } + }, + "node_modules/pdflib-fontkit": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/pdflib-fontkit/-/pdflib-fontkit-1.8.11.tgz", + "integrity": "sha512-J1oiikl5E7en02DGIorof7c5b0JEXXW/DK3Kltv9va72Kn1230eAl1DNSXbcJPAUl0/G2e6UnJWQJoysdyQydA==", + "dependencies": { + "pako": "^1.0.6" + } + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -2404,6 +2854,134 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pino": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.2.0.tgz", + "integrity": "sha512-g3/hpwfujK5a4oVbaefoJxezLzsDgLcNJeITvC6yrfwYeT9la+edCK42j5QpEQSQCZgTKapXvnQIdgZwvRaZug==", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.2.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", + "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/pino-pretty": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-7.0.0.tgz", + "integrity": "sha512-lU5RpkfssYJxRI/veMGsUu7RqTUD/NDb2r+U4VIx7Dyo5vA3MbbbGMUOhAM4e02IAYXuTAa/PH56s8shstP9BA==", + "dependencies": { + "args": "^5.0.1", + "colorette": "^1.3.0", + "dateformat": "^4.5.1", + "fast-safe-stringify": "^2.0.7", + "joycon": "^3.0.0", + "pino-abstract-transport": "^0.2.0", + "pump": "^3.0.0", + "readable-stream": "^3.6.0", + "rfdc": "^1.3.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^2.2.0", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/pino-abstract-transport": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.2.0.tgz", + "integrity": "sha512-40sX7xrzDXsrUYr65brL0+bLm6rpZ+wCujDeeBmmZ/y5RVcPdVQsmz0bBe8NtTpELgmzmKwRRPVj1lvKjgFVHw==", + "dependencies": { + "split2": "^3.2.2" + } + }, + "node_modules/pino-pretty/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pino-pretty/node_modules/sonic-boom": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", + "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/pino-pretty/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/pino-pretty/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pino-std-serializers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==" + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -2413,6 +2991,24 @@ "node": ">= 0.8.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -2430,6 +3026,20 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -2473,6 +3083,11 @@ } ] }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -2495,6 +3110,25 @@ "node": ">= 0.8" } }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -2507,6 +3141,14 @@ "node": ">=8.10.0" } }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "engines": { + "node": ">= 12.13.0" + } + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -2551,6 +3193,11 @@ "node": ">=0.10.0" } }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" + }, "node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -2605,11 +3252,24 @@ } ] }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" + }, "node_modules/semver": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", @@ -2735,6 +3395,14 @@ "node": ">=8" } }, + "node_modules/sonic-boom": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.0.1.tgz", + "integrity": "sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -2754,6 +3422,14 @@ "source-map": "^0.6.0" } }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -2762,6 +3438,27 @@ "node": ">= 0.8" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -2822,6 +3519,14 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "dependencies": { + "real-require": "^0.2.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2952,6 +3657,11 @@ "strip-json-comments": "^2.0.0" } }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/tsx": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz", @@ -3006,6 +3716,11 @@ "node": ">= 0.6" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, "node_modules/typescript": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", @@ -3022,8 +3737,7 @@ "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/unpipe": { "version": "1.0.0", @@ -3042,6 +3756,11 @@ "punycode": "^2.1.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -3082,14 +3801,12 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, "engines": { "node": ">=0.4" } diff --git a/desci-media-isolated/package.json b/desci-media-isolated/package.json index 75d956db8..acf669090 100644 --- a/desci-media-isolated/package.json +++ b/desci-media-isolated/package.json @@ -13,10 +13,17 @@ "author": "", "license": "ISC", "dependencies": { + "@types/multer": "^1.4.11", "axios": "^1.6.7", "express": "^4.18.2", "filepreview_ts": "^1.0.0", "helmet": "^7.1.0", + "multer": "^1.4.5-lts.1", + "pdf-lib": "^1.17.1", + "pdf2pic": "^3.1.1", + "pdflib-fontkit": "^1.8.11", + "pino": "^9.2.0", + "pino-pretty": "^7.0.0", "tsx": "^4.7.1" }, "devDependencies": { diff --git a/desci-media-isolated/public/static/code-available.png b/desci-media-isolated/public/static/code-available.png new file mode 100644 index 000000000..47af5823b Binary files /dev/null and b/desci-media-isolated/public/static/code-available.png differ diff --git a/desci-media-isolated/public/static/data-available.png b/desci-media-isolated/public/static/data-available.png new file mode 100644 index 000000000..ae43d6e7e Binary files /dev/null and b/desci-media-isolated/public/static/data-available.png differ diff --git a/desci-media-isolated/public/static/fonts/Inter-Medium.ttf b/desci-media-isolated/public/static/fonts/Inter-Medium.ttf new file mode 100644 index 000000000..a01f3777a Binary files /dev/null and b/desci-media-isolated/public/static/fonts/Inter-Medium.ttf differ diff --git a/desci-media-isolated/public/static/fonts/Inter-Regular.ttf b/desci-media-isolated/public/static/fonts/Inter-Regular.ttf new file mode 100644 index 000000000..5e4851f0a Binary files /dev/null and b/desci-media-isolated/public/static/fonts/Inter-Regular.ttf differ diff --git a/desci-media-isolated/public/static/fonts/Satoshi-Bold.ttf b/desci-media-isolated/public/static/fonts/Satoshi-Bold.ttf new file mode 100644 index 000000000..00bc985b2 Binary files /dev/null and b/desci-media-isolated/public/static/fonts/Satoshi-Bold.ttf differ diff --git a/desci-media-isolated/scripts/containerInitDev.sh b/desci-media-isolated/scripts/containerInitDev.sh index 904d86628..6703e7dac 100755 --- a/desci-media-isolated/scripts/containerInitDev.sh +++ b/desci-media-isolated/scripts/containerInitDev.sh @@ -6,15 +6,13 @@ if [ ! -f /usr/src/app/.env ]; then fi # Ensure temp directories exist -mkdir -p /usr/src/app/.temp/files /usr/src/app/.temp/thumbnails +mkdir -p /usr/src/app/.temp/files /usr/src/app/.temp/thumbnails /usr/src/app/.temp/files/pdf /usr/src/app/.temp/pdf -# Check if node_modules directory doesn't exist and run npm install if necessary -if [ ! -d "/usr/src/app/node_modules" ]; then - echo "node_modules not found, running npm install..." - cd /usr/src/app - npm install -fi +echo "Running npm install to install any package changes..." +cd /usr/src/app +npm install + # Execute the main container command exec "$@" diff --git a/desci-media-isolated/scripts/containerInitProd.sh b/desci-media-isolated/scripts/containerInitProd.sh index d5711244a..e1abf4c72 100755 --- a/desci-media-isolated/scripts/containerInitProd.sh +++ b/desci-media-isolated/scripts/containerInitProd.sh @@ -1,7 +1,7 @@ #!/bin/bash # Ensure temp directories exist -mkdir -p /usr/src/app/.temp/files /usr/src/app/.temp/thumbnails +mkdir -p /usr/src/app/.temp/files /usr/src/app/.temp/thumbnails /usr/src/app/.temp/files/pdf /usr/src/app/.temp/pdf # Execute the main container command exec "$@" diff --git a/desci-media-isolated/src/config/index.ts b/desci-media-isolated/src/config/index.ts index 46ac0834c..818e05522 100644 --- a/desci-media-isolated/src/config/index.ts +++ b/desci-media-isolated/src/config/index.ts @@ -1,4 +1,6 @@ export const IPFS_GATEWAY = process.env.IPFS_GATEWAY; export const TEMP_DIR = '.temp'; export const THUMBNAIL_FILES_DIR = `/files`; +export const PDF_FILES_DIR = `/files/pdf`; export const THUMBNAIL_OUTPUT_DIR = `/thumbnails`; +export const PDF_OUTPUT_DIR = `/pdf`; diff --git a/desci-media-isolated/src/controllers/pdf/createCover.ts b/desci-media-isolated/src/controllers/pdf/createCover.ts new file mode 100644 index 000000000..7ac842b3c --- /dev/null +++ b/desci-media-isolated/src/controllers/pdf/createCover.ts @@ -0,0 +1,107 @@ +import type { Request, Response } from 'express'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import fs from 'fs'; +import { PDF_OUTPUT_DIR, TEMP_DIR } from '../../config/index.js'; +import { BadRequestError, NotFoundError } from '../../utils/customErrors.js'; +import { PdfManipulationService } from '../../services/pdf.js'; +import { logger as parentLogger } from '../../utils/logger.js'; + +export type GeneratePdfCoverRequestBody = { + cid: string; + doi?: string; // Optional, will use DPID if unavailable + title: string; + dpid: string; + codeAvailableDpid?: string; + dataAvailableDpid?: string; + authors?: string[]; + license: string; + publishDate: string; +}; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const BASE_TEMP_DIR = path.resolve(__dirname, '../../..', TEMP_DIR); + +/** + * Generates a cover page inserting a DOI and a DPID link for a PDF file provided via its CID + */ +export const generatePdfCover = async ( + req: Request< + any, + any, + GeneratePdfCoverRequestBody, + { header?: boolean; headerAllPages?: boolean; authorLimit?: number } + >, + res: Response, +) => { + const { cid, doi, dpid, title, codeAvailableDpid, dataAvailableDpid, license, publishDate, authors } = req.body; + const { header = true, headerAllPages = false, authorLimit } = req.query; + const logger = parentLogger.child({ + module: 'GeneratePdfCover Controller', + cid, + doi, + dpid, + title, + codeAvailableDpid, + dataAvailableDpid, + license, + publishDate, + authors, + header, + headerAllPages, + authorLimit, + }); + logger.trace('Generating prepub cover'); + + try { + if (!cid) throw new BadRequestError('Missing cid in request body'); + if (!dpid) throw new BadRequestError('Missing dpid in request body'); + if (!license) throw new BadRequestError('Missing license in request body'); + if (!publishDate) throw new BadRequestError('Missing publishDate in request body'); + + const generationTaskId = crypto.randomUUID(); + + const pdfPath = await PdfManipulationService.addPdfCover({ + taskId: generationTaskId, + cid, + doi, + dpid, + title, + codeAvailableDpid, + dataAvailableDpid, + license, + authors, + publishDate, + authorLimit, + }); + const fullPdfPath = path.join(BASE_TEMP_DIR, PDF_OUTPUT_DIR, pdfPath); + + // Check if the file exists before attempting to stream it + fs.access(fullPdfPath, fs.constants.F_OK, (err) => { + if (err) { + throw new NotFoundError(`PDF not found for file with path: ${cid}`); + } + + res.setHeader('Content-Type', 'application/pdf'); + const readStream = fs.createReadStream(fullPdfPath); + + readStream.pipe(res); + + readStream.on('end', () => { + // Cleanup the generated PDF file + fs.unlink(fullPdfPath, (unlinkErr) => { + if (unlinkErr) { + logger.error({ unlinkErr }, `Failed to delete generated cover file: ${fullPdfPath}`); + } else { + logger.info(`Successfully cleaned up generated cover file: ${fullPdfPath}`); + } + }); + }); + }); + + return res.status(200); + } catch (err: any) { + return res.status(500).json({ message: err.message }); + } +}; diff --git a/desci-media-isolated/src/controllers/pdf/preview.ts b/desci-media-isolated/src/controllers/pdf/preview.ts new file mode 100644 index 000000000..6788bfea0 --- /dev/null +++ b/desci-media-isolated/src/controllers/pdf/preview.ts @@ -0,0 +1,73 @@ +import type { Request, Response } from 'express'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import fs from 'fs/promises'; +import { TEMP_DIR, THUMBNAIL_OUTPUT_DIR } from '../../config/index.js'; +import { BadRequestError, NotFoundError } from '../../utils/customErrors.js'; +import { PdfManipulationService } from '../../services/pdf.js'; +import { logger as parentLogger } from '../../utils/logger.js'; + +export type GeneratePreviewRequestBody = { + cid: string; + pages: number[]; +}; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const BASE_TEMP_DIR = path.resolve(__dirname, '../../..', TEMP_DIR); + +export const generatePreview = async ( + req: Request, + res: Response, +) => { + const { cid, pages } = req.body; + const { height = 1000 } = req.query; + const logger = parentLogger.child({ + module: 'generatePreview Controller', + pdfCid: cid, + }); + + if (!cid) throw new BadRequestError('Missing cid in request body'); + if (!pages) throw new BadRequestError('Missing pages number array in request body'); + + try { + // debugger; + console.log('start preview', cid); + const previewPaths = await PdfManipulationService.generatePdfPreviews(cid, `${cid}.pdf`, pages, height); + console.log('done preview', cid); + const previewBuffers: Buffer[] = []; + for (const previewPath of previewPaths) { + const fullPreviewPath = path.join(BASE_TEMP_DIR, THUMBNAIL_OUTPUT_DIR, previewPath); + console.log({ fullPreviewPath }); + + try { + console.log('star read', fullPreviewPath); + const previewBuffer = await fs.readFile(fullPreviewPath); + console.log('done read', fullPreviewPath); + previewBuffers.push(previewBuffer); + } catch (err) { + console.error(err); + throw new NotFoundError(`Preview not found for file with cid: ${cid}, path: ${previewPath}`); + } + } + + console.log({ done: previewBuffers }); + res.setHeader('Content-Type', 'application/json'); + + res.on('finish', async () => { + // Cleanup generated previews after they're sent + try { + for (const previewPath of previewPaths) { + const fullPreviewPath = path.join(BASE_TEMP_DIR, THUMBNAIL_OUTPUT_DIR, previewPath); + await fs.unlink(fullPreviewPath); + logger.info(`Successfully deleted preview file: ${fullPreviewPath}`); + } + } catch (error) { + logger.error({ error }, 'Error during cleanup:'); + } + }); + return res.status(200).json(previewBuffers); + } catch (err: any) { + return res.status(500).json({ message: err.message }); + } +}; diff --git a/desci-media-isolated/src/controllers/thumbnails/create.ts b/desci-media-isolated/src/controllers/thumbnails/create.ts index 912bdd257..2952cd00a 100644 --- a/desci-media-isolated/src/controllers/thumbnails/create.ts +++ b/desci-media-isolated/src/controllers/thumbnails/create.ts @@ -5,42 +5,66 @@ import { fileURLToPath } from 'url'; import fs from 'fs'; import { TEMP_DIR, THUMBNAIL_OUTPUT_DIR } from '../../config/index.js'; import { BadRequestError, NotFoundError } from '../../utils/customErrors.js'; +import { logger as parentLogger } from '../../utils/logger.js'; export type GenerateThumbnailRequestBody = { - cid: string; - fileName: string; + cid?: string; + fileName?: string; }; +interface GenerateThumbnailRequest extends Request { + body: GenerateThumbnailRequestBody; + query: { + height?: string; + }; + file?: Express.Multer.File; +} + const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const BASE_TEMP_DIR = path.resolve(__dirname, '../../..', TEMP_DIR); -export const generateThumbnail = async ( - req: Request, - res: Response, -) => { - const { cid, fileName } = req.body; - const { height = 300 } = req.query; - if (!cid) throw new BadRequestError('Missing cid in request body'); - if (!fileName) throw new BadRequestError('Missing fileName in request body'); +export const generateThumbnail = async (req: GenerateThumbnailRequest, res: Response) => { + const { cid } = req.body; + const height = parseInt(req.query.height || '300'); + + const logger = parentLogger.child({ + module: 'generateThumbnail Controller', + cid, + }); try { - const thumbnailPath = await ThumbnailsService.generateThumbnail(cid, fileName, height); + let thumbnailPath: string; + + if (cid) { + if (!req.body.fileName) throw new BadRequestError('fileName is required when using cid'); + thumbnailPath = await ThumbnailsService.generateThumbnailFromCid(cid, req.body.fileName, height); + } else if (req.file) { + thumbnailPath = await ThumbnailsService.generateThumbnailFromFile(req.file.path, req.file.originalname, height); + } else { + throw new BadRequestError('Either cid or file is required'); + } + const fullThumbnailPath = path.join(BASE_TEMP_DIR, THUMBNAIL_OUTPUT_DIR, thumbnailPath); - // Check if the file exists before attempting to stream it fs.access(fullThumbnailPath, fs.constants.F_OK, (err) => { if (err) { - throw new NotFoundError(`Thumbnail not found for file with cid: ${cid}`); + throw new NotFoundError(`Thumbnail not found for file`); } - res.setHeader('Content-Type', 'image/png'); const readStream = fs.createReadStream(fullThumbnailPath); - readStream.pipe(res); + readStream.on('end', () => { + // Cleanup the generated PDF file + fs.unlink(fullThumbnailPath, (unlinkErr) => { + if (unlinkErr) { + logger.error({ unlinkErr }, `Failed to delete generated thumbnail file: ${fullThumbnailPath}`); + } else { + logger.info(`Successfully cleaned up generated thumbnail file: ${fullThumbnailPath}`); + } + }); + }); }); - - return res.status(200); } catch (err: any) { return res.status(500).json({ message: err.message }); } diff --git a/desci-media-isolated/src/index.ts b/desci-media-isolated/src/index.ts index 280ad2184..8ba60051c 100644 --- a/desci-media-isolated/src/index.ts +++ b/desci-media-isolated/src/index.ts @@ -3,11 +3,12 @@ import express from 'express'; import helmet from 'helmet'; import { errorHandler } from './middleware/errorHandler.js'; import routes from './routes/index.js'; +import { logger as parentLogger } from './utils/logger.js'; -// dotenv.config(); +const logger = parentLogger.child({ module: 'Media Isolated Express Config' }); const app = express(); -console.log('process.env.PORT:', process.env.PORT); +logger.info(`process.env.PORT: ${process.env.PORT}`); const PORT = process.env.PORT || 7771; app.use(helmet()); @@ -23,5 +24,5 @@ app.use('/', routes); app.use(errorHandler); app.listen(PORT, () => { - console.log(`[Media Server Isolated]Server is listening on port: ${PORT}`); + logger.info(`[Media Server Isolated]Server is listening on port: ${PORT}`); }); diff --git a/desci-media-isolated/src/middleware/errorHandler.ts b/desci-media-isolated/src/middleware/errorHandler.ts index e755da4f7..a17bee6f7 100644 --- a/desci-media-isolated/src/middleware/errorHandler.ts +++ b/desci-media-isolated/src/middleware/errorHandler.ts @@ -1,8 +1,11 @@ import type { Request, Response, NextFunction } from 'express'; import { BaseError } from '../utils/customErrors.js'; +import { logger as parentLogger } from '../utils/logger.js'; + +const logger = parentLogger.child({ module: 'Error Handling Middleware' }); export const errorHandler = (err: Error, req: Request, res: Response, next: NextFunction) => { - console.error(err.stack); + logger.warn({ errorStack: err.stack }, 'Error caught in error handler middleware'); let statusCode = 500; if (err instanceof BaseError && typeof err.statusCode === 'number') { diff --git a/desci-media-isolated/src/middleware/uploadHandler.ts b/desci-media-isolated/src/middleware/uploadHandler.ts new file mode 100644 index 000000000..678de7ea9 --- /dev/null +++ b/desci-media-isolated/src/middleware/uploadHandler.ts @@ -0,0 +1,33 @@ +import type { NextFunction, Request, Response } from 'express'; +import multer from 'multer'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { TEMP_DIR, THUMBNAIL_FILES_DIR } from '../config/index.js'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const BASE_TEMP_DIR = path.resolve(__dirname, '../..', TEMP_DIR); + +const storage = multer.diskStorage({ + destination: function (req, file, cb) { + cb(null, path.join(BASE_TEMP_DIR, THUMBNAIL_FILES_DIR)); + }, + filename: function (req, file, cb) { + const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1e9); + cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname)); + }, +}); + +const upload = multer({ storage: storage }); + +// Middleware to determine if it's a file upload or JSON request +export const uploadHandler = (req: Request, res: Response, next: NextFunction) => { + upload.single('file')(req, res, (err) => { + if (err instanceof multer.MulterError) { + return res.status(400).json({ error: 'File upload error' }); + } else if (err) { + return res.status(500).json({ error: 'Server error during file upload' }); + } + next(); + }); +}; diff --git a/desci-media-isolated/src/routes/v1/index.ts b/desci-media-isolated/src/routes/v1/index.ts index f07481a44..07615e199 100644 --- a/desci-media-isolated/src/routes/v1/index.ts +++ b/desci-media-isolated/src/routes/v1/index.ts @@ -1,8 +1,10 @@ import { Router } from 'express'; import thumbnails from './thumbnails.js'; +import pdf from './pdf.js'; const router = Router(); router.use('/thumbnails', thumbnails); +router.use('/pdf', pdf); export default router; diff --git a/desci-media-isolated/src/routes/v1/pdf.ts b/desci-media-isolated/src/routes/v1/pdf.ts new file mode 100644 index 000000000..b670ec67b --- /dev/null +++ b/desci-media-isolated/src/routes/v1/pdf.ts @@ -0,0 +1,10 @@ +import { Router } from 'express'; +import { generatePdfCover } from '../../controllers/pdf/createCover.js'; +import { generatePreview } from '../../controllers/pdf/preview.js'; + +const router = Router(); + +router.post('/addCover', generatePdfCover); +router.post('/previews', generatePreview); + +export default router; diff --git a/desci-media-isolated/src/routes/v1/thumbnails.ts b/desci-media-isolated/src/routes/v1/thumbnails.ts index 0ca747e60..206f48dab 100644 --- a/desci-media-isolated/src/routes/v1/thumbnails.ts +++ b/desci-media-isolated/src/routes/v1/thumbnails.ts @@ -1,8 +1,9 @@ import { Router } from 'express'; import { generateThumbnail } from '../../controllers/thumbnails/create.js'; +import { uploadHandler } from '../../middleware/uploadHandler.js'; const router = Router(); -router.post('/', generateThumbnail); +router.post('/', uploadHandler, generateThumbnail); export default router; diff --git a/desci-media-isolated/src/services/ipfs.ts b/desci-media-isolated/src/services/ipfs.ts index e8ee8a968..7409ea55c 100644 --- a/desci-media-isolated/src/services/ipfs.ts +++ b/desci-media-isolated/src/services/ipfs.ts @@ -1,16 +1,18 @@ import axios from 'axios'; import fs from 'fs'; import { pipeline } from 'stream/promises'; -import { IpfsConfigurationError } from '../utils/customErrors.js'; +import { IpfsConfigurationError, IpfsFetchError } from '../utils/customErrors.js'; +import { logger as parentLogger } from '../utils/logger.js'; const IPFS_GATEWAY = process.env.IPFS_GATEWAY; +const logger = parentLogger.child({ module: 'IPFS Service' }); + export class IpfsService { static async saveFile(cid: string, outputPath: string) { if (!IPFS_GATEWAY) { - console.log('IPFS_GATEWAY:', process.env.IPFS_GATEWAY); + logger.info({ IPFS_GATEWAY: process.env.IPFS_GATEWAY }, 'IPFS_GATEWAY'); throw new IpfsConfigurationError('process.env.IPFS_GATEWAY is not defined in environment variables'); } - // debugger; const url = `${IPFS_GATEWAY}/${cid}`; try { @@ -23,10 +25,10 @@ export class IpfsService { await pipeline(response.data, fs.createWriteStream(outputPath)); - console.log(`File downloaded and saved to ${outputPath}`); + logger.info(`File downloaded and saved to ${outputPath}`); } catch (error) { - console.error('Error downloading or saving the file:', error); - throw error; + logger.error({ error }, 'Error downloading or saving the file'); + throw new IpfsFetchError(`Error downloading or saving the file: ${cid}`); } } } diff --git a/desci-media-isolated/src/services/pdf.ts b/desci-media-isolated/src/services/pdf.ts new file mode 100644 index 000000000..0dffc5f9a --- /dev/null +++ b/desci-media-isolated/src/services/pdf.ts @@ -0,0 +1,555 @@ +import { PDF_FILES_DIR, PDF_OUTPUT_DIR, TEMP_DIR, THUMBNAIL_FILES_DIR, THUMBNAIL_OUTPUT_DIR } from '../config/index.js'; +import { IpfsService } from './ipfs.js'; +import { BadRequestError, UnhandledError } from '../utils/customErrors.js'; +import path from 'path'; +import fs from 'fs'; +import { fromPath } from 'pdf2pic'; +import * as fsp from 'fs/promises'; +import { fileURLToPath } from 'url'; +import { PDFArray, PDFDict, PDFDocument, PDFName, PDFString, StandardFonts, rgb } from 'pdf-lib'; +import { readFileToBuffer, startsWithVowel } from '../utils/utils.js'; +import { + PDF_JOB_TYPE, + type AddPdfCoverParams, + type DrawCenteredHelperParams, + type DrawCenteredImagesParams, + type PdfImageObject, +} from '../types/pdf.js'; +import fontkit from 'pdflib-fontkit'; +import { logger as parentLogger } from '../utils/logger.js'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const BASE_TEMP_DIR = path.resolve(__dirname, '../..', TEMP_DIR); + +const logger = parentLogger.child({ module: 'PDF Manipulation Service' }); + +export class PdfManipulationService { + static async addPdfCover({ + taskId, + cid, + title, + doi, + dpid, + codeAvailableDpid, + dataAvailableDpid, + authors, + authorLimit, + license, + publishDate, + }: AddPdfCoverParams) { + const usingDoi = doi ? true : false; + const tempFilePath = path.join(BASE_TEMP_DIR, PDF_FILES_DIR, `${taskId}.pdf`); // Saved pdf to manipulate + const outputPdfFileName = this.getPdfPath(PDF_JOB_TYPE.ADD_COVER, cid); + const outputFullPath = path.join(BASE_TEMP_DIR, PDF_OUTPUT_DIR, outputPdfFileName); + // debugger; + logger.trace({ cid, tempFilePath }, 'Saving PDF from IPFS onto disk for processing'); + await IpfsService.saveFile(cid, tempFilePath); + + // debugger; + try { + logger.trace({ taskId }, 'Loading PDF for processing'); + // Proccess the pdf file to add the cover page + const pdfBytes = await readFileToBuffer(tempFilePath); + const pdfDoc = await PDFDocument.load(pdfBytes); + logger.trace({ taskId }, 'PDF Doc Loaded'); + + /** + * Load Fonts + */ + + // Enable custom font loading + pdfDoc.registerFontkit(fontkit); + + // Satoshi Bold + const satoshiBoldBytes = await fs.promises.readFile( + path.join(__dirname, '../../public/static/fonts/Satoshi-Bold.ttf'), + ); + const satoshiBoldFont = await pdfDoc.embedFont(satoshiBoldBytes); + + // Inter Medium + const interMediumBytes = await fs.promises.readFile( + path.join(__dirname, '../../public/static/fonts/Inter-Medium.ttf'), + ); + const interMediumFont = await pdfDoc.embedFont(interMediumBytes); + + // Inter Regular + const interRegularBytes = await fs.promises.readFile( + path.join(__dirname, '../../public/static/fonts/Inter-Regular.ttf'), + ); + const interRegularFont = await pdfDoc.embedFont(interRegularBytes); + + const newPage = pdfDoc.insertPage(0); + const { width, height } = newPage.getSize(); + + /* + * Header + */ + const licenseStartsWithVowel = startsWithVowel(license); + const nodeUrl = usingDoi ? `https://doi.org/${doi}` : `https://beta.dpid.org/${dpid}`; + const topHeader = `Research object ${nodeUrl}, this version posted ${publishDate}. The copyright holder for this research object (which was not certified by peer review) is the author/funder, who has granted DeSci Labs a non-exclsuive license to display the research object in perpetuity. It is made available under a${ + licenseStartsWithVowel ? 'n' : '' + } ${license} license.`; + const headerSize = 10; + + this.drawCenteredMultilineText({ + page: newPage, + text: topHeader, + font: interRegularFont, + fontSize: headerSize, + width, + height, + paddingX: 15, + positionY: 0.04, + hyperlink: nodeUrl, + }); + + /* + * Title + */ + const titleSize = 24; + const titlePosY = 0.35; + + const titleLines = await this.drawCenteredMultilineText({ + page: newPage, + text: title, + font: satoshiBoldFont, + fontSize: titleSize, + width, + height, + positionY: titlePosY, + paddingX: 100, + }); + + /* + * Authors + */ + const authorsProcessed = this.formatAuthors(authors || [], authorLimit); + const authorsSize = 14; + const titleHeight = titleLines.length * interMediumFont.heightAtSize(titleSize); + const authorsPosY = titlePosY + titleHeight / height; + + const authorsLines = await this.drawCenteredMultilineText({ + page: newPage, + text: authorsProcessed, + font: interMediumFont, + fontSize: authorsSize, + width, + height, + paddingX: 100, + positionY: authorsPosY, + }); + + /* + * Center Text (Artifacts available here) + */ + const centeredText = 'Data and/or code available at:'; + const centeredTextSize = 14; + const authorsHeight = authorsLines.length * interMediumFont.heightAtSize(authorsSize); + const centeredTextPosY = authorsPosY + authorsHeight / height + 0.1; + + this.drawCenteredMultilineText({ + page: newPage, + text: centeredText, + font: interRegularFont, + fontSize: centeredTextSize, + width, + height, + paddingX: 100, + positionY: centeredTextPosY, + }); + + /* + * NODE URL + */ + const doiUrlSize = 14; + const centeredTextHeight = interRegularFont.heightAtSize(centeredTextSize); + const doiUrlPosY = centeredTextPosY + centeredTextHeight / height + 0.01; + const doiUrlColor = rgb(0, 0, 1); + + this.drawCenteredMultilineText({ + page: newPage, + text: nodeUrl, + font: interRegularFont, + fontSize: doiUrlSize, + width, + height, + paddingX: 100, + positionY: doiUrlPosY, + hyperlink: nodeUrl, + color: doiUrlColor, + }); + + /* + * Badges + */ + const badges: PdfImageObject[] = []; + + const badgeSize = 50; + + if (codeAvailableDpid) { + const openCodeBytes = await pdfDoc.embedPng( + await readFileToBuffer(path.join(__dirname, '../../public/static/code-available.png')), + ); + badges.push({ + content: openCodeBytes, + width: badgeSize, + height: badgeSize, + text: 'Open Code', + hyperlink: codeAvailableDpid, + }); + } + if (dataAvailableDpid) { + const openDataBytes = await pdfDoc.embedPng( + await readFileToBuffer(path.join(__dirname, '../../public/static/data-available.png')), + ); + badges.push({ + content: openDataBytes, + width: badgeSize, + height: badgeSize, + text: 'Open Data', + hyperlink: dataAvailableDpid, + }); + } + + const claimedBadgesTitle = 'Claimed badges:'; + const claimedBadgesTitleSize = 14; + const claimedBadgesTitlePosY = 0.75; + + if (badges.length) { + this.drawCenteredMultilineText({ + page: newPage, + text: claimedBadgesTitle, + font: interRegularFont, + fontSize: claimedBadgesTitleSize, + width, + height, + paddingX: 100, + positionY: claimedBadgesTitlePosY, + }); + + this.drawCenteredImages({ + page: newPage, + images: badges, + pageWidth: width, + pageHeight: height, + positionY: claimedBadgesTitlePosY + claimedBadgesTitleSize / height + 0.04, + gap: 20, + annotateImage: true, + font: interRegularFont, + }); + } + logger.trace({ taskId }, 'Saving PDF with cover page added'); + + const pdfBytesMod = await pdfDoc.save(); + await fsp.writeFile(outputFullPath, pdfBytesMod); + + logger.info({ taskId, outputFullPath }, 'Cover page generated successfully'); + return outputPdfFileName; + } catch (e) { + logger.error({ e }, 'Failed generating cover page for PDF'); + throw new UnhandledError( + `Failed generating cover page for file with cid: ${cid}, with temp file path: ${tempFilePath}`, + ); + } finally { + // The initially saved file is removed, however the generated pdf remains. Further cleanup can be done for the generated pdf result. + try { + logger.trace({ taskId }, 'Cleaning up original PDF'); + await fs.unlink(tempFilePath, (err) => { + if (err) { + logger.error({ err }, `Failed to cleanup temporary file: ${tempFilePath}`); + return; + } + logger.info(`Temporary file ${tempFilePath} deleted successfully.`); + }); + } catch (cleanupError) { + logger.error({ cleanupError, tempFilePath }, `Failed to delete temporary file ${tempFilePath}`); + } + } + } + + static getPdfPath(jobType: PDF_JOB_TYPE, generationTaskId: string) { + return `${jobType}-${generationTaskId}.pdf`; + } + + static async drawCenteredMultilineText({ + page, + text, + font, + fontSize, + width, + height, + paddingX = 0, + positionY = 0.5, + color = rgb(0, 0, 0), + hyperlinkColor = rgb(0, 0, 1), + }: DrawCenteredHelperParams): Promise { + const lines: string[] = []; + const words = text.split(' '); + let currentLine = ''; + + const availableWidth = width - 2 * paddingX; + + for (let i = 0; i < words.length; i++) { + const word = words[i]; + const prospectiveLine = currentLine ? currentLine + ' ' + word : word; + const prospectiveLineWidth: number = font.widthOfTextAtSize(prospectiveLine, fontSize); + + if (prospectiveLineWidth <= availableWidth) { + currentLine = prospectiveLine; + } else { + lines.unshift(currentLine); + currentLine = word; + } + } + + if (currentLine) { + lines.unshift(currentLine); + } + + const textHeight = font.heightAtSize(fontSize); + const totalHeight = lines.length * textHeight; + const startY = height * (1 - positionY) - totalHeight / 2; + + let minX = width; + let maxX = 0; + let minY = height; + let maxY = 0; + + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + const lineWidth = font.widthOfTextAtSize(line, fontSize); + const x = paddingX + (availableWidth - lineWidth) / 2; + const y = startY + i * textHeight; + + const urlPattern = /(https?:\/\/[\w./%-]+)/g; + let match; + let textIndex = 0; + + while ((match = urlPattern.exec(line)) !== null) { + const url = match[0]; + const urlStartIndex = match.index; + const urlEndIndex = urlStartIndex + url.length; + + // Text before the URL + const textBeforeUrl = line.slice(textIndex, urlStartIndex); + page.drawText(textBeforeUrl, { + x: x + font.widthOfTextAtSize(line.slice(0, textIndex), fontSize), + y, + size: fontSize, + font, + color, + }); + + // URL text + const urlWidth = font.widthOfTextAtSize(url, fontSize); + const urlX = x + font.widthOfTextAtSize(line.slice(0, urlStartIndex), fontSize); + page.drawText(url, { x: urlX, y, size: fontSize, font, color: hyperlinkColor }); + + textIndex = urlEndIndex; + } + + // Text after URL + const textAfterUrl = line.slice(textIndex); + page.drawText(textAfterUrl, { + x: x + font.widthOfTextAtSize(line.slice(0, textIndex), fontSize), + y, + size: fontSize, + font, + color, + }); + + minX = Math.min(minX, x); + maxX = Math.max(maxX, x + lineWidth); + minY = Math.min(minY, y); + maxY = Math.max(maxY, y + textHeight); + } + + const urlPattern = /(https?:\/\/[\w./%-]+)/g; + let match; + + while ((match = urlPattern.exec(text)) !== null) { + const url = match[0]; + const linkAnnotation = page.doc.context.obj({ + Type: 'Annot', + Subtype: 'Link', + Rect: [minX, minY, maxX, maxY], + Border: [0, 0, 2], + C: [0, 0, 1], + A: { + Type: 'Action', + S: 'URI', + URI: PDFString.of(url), + }, + }) as PDFDict; + + const linkAnnotationRef = page.doc.context.register(linkAnnotation); + + const annotations = page.node.Annots() as PDFArray | undefined; + const annotationsArray = annotations ?? page.doc.context.obj([]); + annotationsArray.push(linkAnnotationRef); + + page.node.set(PDFName.of('Annots'), annotationsArray); + } + + return lines; + } + + static async drawCenteredImages({ + page, + images, + pageWidth, + pageHeight, + paddingX = 0, + gap = 0, + positionY = 0.5, + annotateImage = false, // renders image.text besides it + font, + }: DrawCenteredImagesParams): Promise { + const availableWidth = pageWidth - 2 * paddingX; + + const embedDefaultFont = async () => { + if (!font) { + return await page.doc.embedFont(StandardFonts.Helvetica); + } + return font; + }; + + const embeddedFont = await embedDefaultFont(); + + const imagesWithTextDimensions = await Promise.all( + images.map(async (image) => { + if (annotateImage && image.text) { + const textWidth = embeddedFont.widthOfTextAtSize(image.text, 12); + const textHeight = embeddedFont.heightAtSize(12); + return { ...image, textWidth, textHeight }; + } + return image; + }), + ); + + const totalWidth = imagesWithTextDimensions.reduce( + (sum, image) => sum + image.width + (annotateImage && image.text ? (image.textWidth ?? 0) + gap : 0), + 0, + ); + + const startX = (pageWidth - totalWidth) / 2; + + let currentX = startX; + + for (const image of imagesWithTextDimensions) { + const x = currentX; + const y = pageHeight * (1 - positionY) - image.height / 2; + + page.drawImage(image.content, { + x, + y, + width: image.width, + height: image.height, + }); + + if (annotateImage && image.text) { + const textX = x + image.width + 10; + const textY = y + (image.height - (image.textHeight ?? 0)) / 2; + + page.drawText(image.text, { + x: textX, + y: textY, + size: 12, + font: embeddedFont, + color: rgb(0, 0, 0), + }); + + if (image.hyperlink) { + const linkAnnotation = page.doc.context.obj({ + Type: 'Annot', + Subtype: 'Link', + Rect: [x, y, x + image.width, y + image.height], + Border: [0, 0, 2], + C: [0, 0, 1], + A: { + Type: 'Action', + S: 'URI', + URI: PDFString.of(image.hyperlink), + }, + }) as PDFDict; + + const linkAnnotationRef = page.doc.context.register(linkAnnotation); + + const annotations = page.node.Annots() as PDFArray | undefined; + const annotationsArray = annotations ?? page.doc.context.obj([]); + annotationsArray.push(linkAnnotationRef); + + page.node.set(PDFName.of('Annots'), annotationsArray); + } + + currentX += image.width + (image.textWidth ?? 0) + gap; + } else { + currentX += image.width + gap; + } + } + } + + static formatAuthors(authors: string[], limit: number = 5): string { + const exceedsLimit = authors.length > limit; + const authorsToFormat = exceedsLimit ? authors.slice(0, limit) : authors; + + const formattedAuthors = authorsToFormat.map((author) => { + const names = author.trim().split(' '); + const lastName = names[names.length - 1]; + const firstInitial = names[0][0].toUpperCase(); + return `${firstInitial}. ${lastName}`; + }); + + return exceedsLimit ? `${formattedAuthors.join(', ')}, et al.` : formattedAuthors.join(', '); + } + + static async generatePdfPreviews(pdfCid: string, fileName: string, pageNumbers: number[], heightPx: number) { + const extension = '.' + fileName.split('.').pop(); + if (!extension) throw new BadRequestError('Invalid file name, requires extension'); + const tempFilePath = path.join(BASE_TEMP_DIR, THUMBNAIL_FILES_DIR, `${pdfCid + extension}`); + const previewPaths: string[] = []; + + await IpfsService.saveFile(pdfCid, tempFilePath); + + try { + const converter = fromPath(tempFilePath, { + saveFilename: `${pdfCid}_preview`, + savePath: path.join(BASE_TEMP_DIR, THUMBNAIL_OUTPUT_DIR), + format: 'jpg', + height: heightPx, + preserveAspectRatio: true, + density: 300, + }); + + for (const pageNumber of pageNumbers) { + const previewPath = this.getPreviewPath(pdfCid, pageNumber, heightPx); + await converter(pageNumber).then((result) => { + if (result.path) { + fs.renameSync(result.path, path.join(BASE_TEMP_DIR, THUMBNAIL_OUTPUT_DIR, previewPath)); + } else { + throw new Error(`Preview path is undefined for page ${pageNumber}`); + } + }); + previewPaths.push(previewPath); + } + + logger.info({ previewPaths }, 'Previews generated successfully'); + return previewPaths; + } catch (e) { + logger.error({ e }, 'Failed generating previews for PDF'); + throw new UnhandledError(`Failed generating previews for file with pdfCid: ${pdfCid}`); + } finally { + // The initially saved file is removed, however the generated previews remain. Further cleanup can be done for the generated previews. + try { + await fs.promises.unlink(tempFilePath); + logger.trace(`Temporary file ${tempFilePath} deleted successfully.`); + } catch (cleanupError) { + logger.error({ cleanupError, tempFilePath }, `Failed to delete temporary file ${tempFilePath}`); + } + } + } + static getPreviewPath(cid: string, pageNumber: number, height: number) { + return `h-${height}px_${cid}_${pageNumber}.jpg`; + } +} diff --git a/desci-media-isolated/src/services/thumbnails.ts b/desci-media-isolated/src/services/thumbnails.ts index 2dae30b69..563fca033 100644 --- a/desci-media-isolated/src/services/thumbnails.ts +++ b/desci-media-isolated/src/services/thumbnails.ts @@ -5,9 +5,11 @@ import { BadRequestError, UnhandledError } from '../utils/customErrors.js'; import path from 'path'; import fs from 'fs'; import { fileURLToPath } from 'url'; +import { logger as parentLogger } from '../utils/logger.js'; + +const logger = parentLogger.child({ module: 'Thumbnail Generation Service' }); const THUMBNAIL_DIMENSIONS = { - // width: 220, height: 300, keepAspect: true, quality: '100', @@ -19,39 +21,49 @@ const __dirname = path.dirname(__filename); const BASE_TEMP_DIR = path.resolve(__dirname, '../..', TEMP_DIR); export class ThumbnailsService { - static async generateThumbnail(cid: string, fileName: string, heightPx: number) { + static async generateThumbnailFromCid(cid: string, fileName: string, heightPx: number) { const extension = '.' + fileName.split('.').pop(); if (!extension) throw new BadRequestError('Invalid file name, requires extension'); + const tempFilePath = path.join(BASE_TEMP_DIR, THUMBNAIL_FILES_DIR, `${cid + extension}`); - const thumbnailPath = this.getThumbnailPath(cid); - const exportPath = path.join(BASE_TEMP_DIR, THUMBNAIL_OUTPUT_DIR, thumbnailPath); - // debugger; await IpfsService.saveFile(cid, tempFilePath); + + return this.generateThumbnail(tempFilePath, cid, heightPx); + } + + static async generateThumbnailFromFile(filePath: string, fileName: string, heightPx: number) { + const extension = '.' + fileName.split('.').pop(); + if (!extension) throw new BadRequestError('Invalid file name, requires extension'); + + const identifier = path.basename(filePath, extension); + return this.generateThumbnail(filePath, identifier, heightPx); + } + + private static async generateThumbnail(tempFilePath: string, identifier: string, heightPx: number) { + const thumbnailPath = this.getThumbnailPath(identifier); + const exportPath = path.join(BASE_TEMP_DIR, THUMBNAIL_OUTPUT_DIR, thumbnailPath); + try { await generateAsync(tempFilePath, exportPath, { ...THUMBNAIL_DIMENSIONS, height: heightPx }); - console.log('Thumbnail generated successfully:', exportPath); + logger.info({ exportPath }, `Thumbnail generated successfully: ${exportPath}`); return thumbnailPath; } catch (e) { - console.error(e); - throw new UnhandledError(`Failed generating thumbnail for file with cid: ${cid}`); + logger.error({ e }, `Failed generating thumbnail for file: ${identifier}`); + throw new UnhandledError(`Failed generating thumbnail for file: ${identifier}`); } finally { - // The initially saved file is removed, however the thumbnail remains. Further cleanup can be done for the thumbnail. - try { - await fs.unlink(tempFilePath, (err) => { - if (err) { - console.error(err, `Failed to cleanup temporary file: ${tempFilePath}`); - return; - } - console.log(`Temporary file ${tempFilePath} deleted successfully.`); - }); - } catch (cleanupError) { - console.error(`Failed to delete temporary file ${tempFilePath}:`, cleanupError); + // Only delete the temp file if it's not the original uploaded file + if (!tempFilePath.includes(THUMBNAIL_FILES_DIR)) { + try { + await fs.promises.unlink(tempFilePath); + logger.trace(`Temporary file ${tempFilePath} deleted successfully.`); + } catch (cleanupError) { + logger.error({ cleanupError, tempFilePath }, `Failed to delete temporary file ${tempFilePath}`); + } } } } - static getThumbnailPath(cid: string) { - return `h-${THUMBNAIL_DIMENSIONS.height}px_${cid}.jpg`; - // return `${THUMBNAIL_DIMENSIONS.width}x${THUMBNAIL_DIMENSIONS.height}_${cid}.jpg`; + static getThumbnailPath(identifier: string) { + return `h-${THUMBNAIL_DIMENSIONS.height}px_${identifier}.jpg`; } } diff --git a/desci-media-isolated/src/types/pdf.ts b/desci-media-isolated/src/types/pdf.ts new file mode 100644 index 000000000..542638db8 --- /dev/null +++ b/desci-media-isolated/src/types/pdf.ts @@ -0,0 +1,55 @@ +import type { PDFFont, PDFImage, PDFPage, Color } from 'pdf-lib'; + +export enum PDF_JOB_TYPE { + ADD_COVER = 'cover', +} + +export interface AddPdfCoverParams { + taskId: string; + cid: string; + title: string; + doi?: string; + dpid: string; + codeAvailableDpid?: string; + dataAvailableDpid?: string; + reprodEnabledDpid?: string; + authors?: string[]; + authorLimit?: number; + license: string; + publishDate: string; +} + +export interface DrawCenteredHelperParams { + page: PDFPage; + text: string; + font: PDFFont; + fontSize: number; + width: number; + height: number; + paddingX?: number; + positionY?: number; // 0-1, vertical alignment, e.g. 0.5 is the center. + hyperlink?: string; + color?: Color; + hyperlinkColor?: Color; +} + +export interface PdfImageObject { + content: PDFImage; + width: number; + height: number; + hyperlink?: string; + text?: string; + textWidth?: number; + textHeight?: number; +} +export interface DrawCenteredImagesParams { + page: PDFPage; + images: PdfImageObject[]; + pageWidth: number; + pageHeight: number; + paddingX?: number; + gap?: number; // Gap between images if multiple are passed into the array. + positionY?: number; // 0-1, vertical alignment, e.g. 0.5 is the center. + annotateImage?: boolean; // renders image.text besides it + font?: PDFFont; +} diff --git a/desci-media-isolated/src/utils/logger.ts b/desci-media-isolated/src/utils/logger.ts new file mode 100644 index 000000000..213fb295c --- /dev/null +++ b/desci-media-isolated/src/utils/logger.ts @@ -0,0 +1,138 @@ +import { AsyncLocalStorage } from 'async_hooks'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +import { pino } from 'pino'; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +export const als = new AsyncLocalStorage(); + +const logLevel = process.env.PINO_LOG_LEVEL || 'trace'; + +const devTransport = { + target: 'pino-pretty', + level: logLevel, + options: { + colorize: true, + }, +}; + +console.log('[Media Isolated - DIR NAME]::', __dirname, __filename, logLevel); + +const fileTransport = { + target: 'pino/file', + options: { destination: `${__dirname}/../log/server.log` }, + level: 'trace', +}; + +export const logger = pino({ + level: logLevel, + serializers: { + files: omitBuffer, + }, + hooks: { + logMethod: function (inputArgs, method) { + try { + //get caller + const stack = new Error().stack?.split('\n'); + // find first line that is not from this file + + let callerFilePath; + try { + const intermediate = stack?.filter( + (a) => a.includes('file:///') && !(a.includes('/dist/logger.') || a.includes('/src/logger.')), + )[0]; + + if (intermediate) { + callerFilePath = intermediate + .split('(')[1] + .split(')')[0] + .replace('file:///app/desci-server/src/', '') + .replace('file:///app/dist/', ''); + } + } catch (err) { + // callerFilePath = '-unknown-'; + } + + let target = typeof inputArgs[0] == 'string' ? 1 : 0; + let newInputArgs = [...inputArgs]; + + if (!newInputArgs[target]) { + newInputArgs[target] = {}; + } else if (typeof newInputArgs[target] !== 'object') { + const rawValue: any = {}; + rawValue['stringLogs'] = inputArgs; + + rawValue['error'] = + 'this means your pino log statement is incorrectly formatted, check the order of the arguments'; + target = 0; + newInputArgs[target] = { rawValue }; + newInputArgs = [newInputArgs[0], inputArgs[0]]; + } + + newInputArgs[target]['caller'] = callerFilePath; + + newInputArgs[target]['userAuth'] = (als.getStore() as any)?.userAuth; + + const traceId = (als.getStore() as any)?.traceId; + if (traceId) { + newInputArgs[target]['traceId'] = traceId; + + const timingArray = (als.getStore() as any)?.timing; + if (timingArray) { + newInputArgs[target]['traceIndex'] = timingArray.length; + newInputArgs[target]['traceDelta'] = Date.now() - timingArray[timingArray.length - 1]; + } + (als.getStore() as any)?.timing.push(Date.now()); + } + + return method.apply(this, [...newInputArgs] as any); + } catch (err) { + // logger.error({ err }, 'error in logMethod hook'); + return method.apply(this, inputArgs); + } + }, + }, + transport: + process.env.NODE_ENV === 'production' + ? undefined + : { + targets: [devTransport, fileTransport], + }, + redact: { + paths: [ + 'req.headers.cookie', + 'req.headers.authorization', + 'user.email', + '*.user.email', + 'user.name', + '*.user.name', + 'user.website', + '*.user.website', + 'user.googleScholarUrl', + '*.user.googleScholarUrl', + 'user.walletAddress', + '*.user.walletAddress', + 'user.siweNonce', + '*.user.siweNonce', + 'user.orcid', + '*.user.orcid', + 'authorization', + '*.authorization', + '*.Authorization', + 'Authorization', + ], + }, +}); + +function omitBuffer(array: any[]) { + return array.map((obj) => { + const { buffer, ...rest } = obj; + return rest; + }); +} + +process.on('uncaughtException', (err) => { + logger.fatal(err, 'uncaught exception'); +}); diff --git a/desci-media-isolated/src/utils/utils.ts b/desci-media-isolated/src/utils/utils.ts new file mode 100644 index 000000000..807edf88c --- /dev/null +++ b/desci-media-isolated/src/utils/utils.ts @@ -0,0 +1,12 @@ +import fs from 'fs/promises'; + +export async function readFileToBuffer(filePath: string) { + const fileBuffer = await fs.readFile(filePath); + return fileBuffer; +} + +export function startsWithVowel(str: string) { + const vowels = ['a', 'e', 'i', 'o', 'u']; + const firstChar = str.toLowerCase()[0]; + return vowels.includes(firstChar); +} diff --git a/desci-models/package.json b/desci-models/package.json index d8cc13d93..79d61787b 100644 --- a/desci-models/package.json +++ b/desci-models/package.json @@ -1,12 +1,12 @@ { "name": "@desci-labs/desci-models", - "version": "0.2.6-rc1", + "version": "0.2.9", "description": "Data models for DeSci Nodes", "main": "dist/index.js", "types": "dist/index.d.ts", "repository": { "type": "git", - "url": "https://github.com/desci-labs/nodes.git", + "url": "git+https://github.com/desci-labs/nodes.git", "directory": "desci-models" }, "files": [ @@ -15,8 +15,8 @@ "scripts": { "test": "mocha -r ts-node/register --inspect tests/**/*.test.ts", "coverage": "nyc -r lcov -e .ts -x \"*.test.ts\" npm run test", - "build": "tsc", - "doPublish": "npm publish --access public", + "build": "tsc && npm run generate", + "doPublish": "npm run build && npm publish --access public", "generate": "ts-interface-builder src/ResearchObject.ts src/RoCrate.ts --ignore-generics" }, "author": "", diff --git a/desci-models/src/ResearchObject.ts b/desci-models/src/ResearchObject.ts index 66084c013..fdeae980b 100644 --- a/desci-models/src/ResearchObject.ts +++ b/desci-models/src/ResearchObject.ts @@ -92,7 +92,7 @@ export interface ResearchObjectV1Component { * Contributor listing for a research object. */ export interface ResearchObjectV1Author { - /** Random UUID to identify the contributor - optional for compatability with old models + /** Random UUID to identify the contributor - optional for compatibility with old models * Going forwards assignment is best practice. */ id?: string; @@ -108,6 +108,8 @@ export interface ResearchObjectV1Author { organizations?: ResearchObjectV1Organization[]; /** GitHub profile of the contributor */ github?: string; + /** Desci Nodes user id */ + nodesUserId?: number; } export interface ResearchObjectV1History { @@ -244,6 +246,9 @@ export interface PdfComponentPayload { cid: string; /** Annotations on the document */ annotations?: PdfAnnotation[]; + /** DOI of the pdf or manuscript */ + /** Store an optional list of associated DOIs */ + doi?: string[]; } export interface ExternalLinkComponentPayload { diff --git a/desci-models/src/automerge.ts b/desci-models/src/automerge.ts index 618f92b79..d74d84bd5 100644 --- a/desci-models/src/automerge.ts +++ b/desci-models/src/automerge.ts @@ -4,14 +4,14 @@ * multi-client application for editing the manifest. * * @package -*/ + */ import { ResearchObjectComponentTypeMap, ResearchObjectV1Author, ResearchObjectV1Component, - ResearchObjectV1Dpid -} from "./ResearchObject"; + ResearchObjectV1Dpid, +} from './ResearchObject'; export type ManifestActions = | { type: 'Add Components'; components: ResearchObjectV1Component[] } @@ -35,9 +35,13 @@ export type ManifestActions = | { type: 'Update License'; defaultLicense: string } | { type: 'Update ResearchFields'; researchFields: string[] } | { type: 'Add Component'; component: ResearchObjectV1Component } + | { type: 'Upsert Component'; component: ResearchObjectV1Component } + | { type: 'Upsert Components'; components: ResearchObjectV1Component[] } | { type: 'Delete Component'; path: string } | { type: 'Add Contributor'; author: ResearchObjectV1Author } + | { type: 'Add Contributors'; contributors: ResearchObjectV1Author[] } | { type: 'Remove Contributor'; contributorIndex: number } + | { type: 'Add Contributors'; contributors: ResearchObjectV1Author[] } | { type: 'Pin Component'; path: string } | { type: 'UnPin Component'; path: string } | { @@ -50,8 +54,7 @@ export type ManifestActions = dpid: ResearchObjectV1Dpid; } | { type: 'Remove Dpid' } - | - { - type: "Update CoverImage"; + | { + type: 'Update CoverImage'; cid: string | undefined; }; diff --git a/desci-repo/.env.example b/desci-repo/.env.example index 2e202f8bf..2fea7a890 100644 --- a/desci-repo/.env.example +++ b/desci-repo/.env.example @@ -3,3 +3,4 @@ NODE_ENV=dev JWT_SECRET=secretshhh DATABASE_URL=postgresql://walter:white@db_boilerplate:5432/boilerplate IPFS_RESOLVER_OVERRIDE=http://host.docker.internal:8089/ipfs +# DESCI_SERVER_URL= \ No newline at end of file diff --git a/desci-repo/.env.test b/desci-repo/.env.test index aed267ca2..832a3f699 100755 --- a/desci-repo/.env.test +++ b/desci-repo/.env.test @@ -4,7 +4,7 @@ NODE_ENV=test PORT=5484 # mapped to 5486 WS_PORT=5445 # mapped to 5446 -IPFS_NODE_URL=http://host.docker.internal:5002 +IPFS_NODE_URL=http://host.docker.internal:5003 PUBLIC_IPFS_RESOLVER=https://ipfs.io ### Database - Postgres PG_HOST=host.docker.internal diff --git a/desci-repo/kubernetes/deployment_dev.yaml b/desci-repo/kubernetes/deployment_dev.yaml index 7bf69344c..376fb2588 100644 --- a/desci-repo/kubernetes/deployment_dev.yaml +++ b/desci-repo/kubernetes/deployment_dev.yaml @@ -48,6 +48,7 @@ spec: export JWT_SECRET={{ .Data.JWT_SECRET }} export DATABASE_URL={{ .Data.DATABASE_URL }} export IPFS_RESOLVER_OVERRIDE={{ .Data.IPFS_RESOLVER_OVERRIDE }} + export DESCI_SERVER_URL={{ .Data.DESCI_SERVER_URL }} {{- end -}} labels: diff --git a/desci-repo/kubernetes/deployment_prod.yaml b/desci-repo/kubernetes/deployment_prod.yaml index a222ee375..a48e23ca7 100755 --- a/desci-repo/kubernetes/deployment_prod.yaml +++ b/desci-repo/kubernetes/deployment_prod.yaml @@ -49,6 +49,7 @@ spec: export JWT_SECRET={{ .Data.JWT_SECRET }} export DATABASE_URL={{ .Data.DATABASE_URL }} export IPFS_RESOLVER_OVERRIDE={{ .Data.IPFS_RESOLVER_OVERRIDE }} + export DESCI_SERVER_URL={{ .Data.DESCI_SERVER_URL }} {{- end -}} labels: diff --git a/desci-repo/kubernetes/deployment_staging.yaml b/desci-repo/kubernetes/deployment_staging.yaml index d6081ed10..caa89543b 100644 --- a/desci-repo/kubernetes/deployment_staging.yaml +++ b/desci-repo/kubernetes/deployment_staging.yaml @@ -49,6 +49,7 @@ spec: export JWT_SECRET={{ .Data.JWT_SECRET }} export DATABASE_URL={{ .Data.DATABASE_URL }} export IPFS_RESOLVER_OVERRIDE={{ .Data.IPFS_RESOLVER_OVERRIDE }} + export DESCI_SERVER_URL={{ .Data.DESCI_SERVER_URL }} {{- end -}} labels: diff --git a/desci-repo/package.json b/desci-repo/package.json index 88d744f7e..2986927ff 100644 --- a/desci-repo/package.json +++ b/desci-repo/package.json @@ -68,7 +68,7 @@ "typescript": "5.1.6" }, "dependencies": { - "@desci-labs/desci-models": "^0.2.3-rc1", + "@desci-labs/desci-models": "0.2.7-rc6", "@sentry/node": "^7.84.0", "@sentry/tracing": "^7.84.0", "axios": "^1.6.2", @@ -87,4 +87,4 @@ "ws": "^8.14.2", "zod": "^3.22.4" } -} +} \ No newline at end of file diff --git a/desci-repo/src/config.ts b/desci-repo/src/config.ts index 77fcdf4cd..20a668d30 100644 --- a/desci-repo/src/config.ts +++ b/desci-repo/src/config.ts @@ -2,5 +2,5 @@ export const PUBLIC_IPFS_PATH = process.env.NODE_ENV === 'dev' ? `http://host.docker.internal:8089/ipfs` : process.env.NODE_ENV === 'test' - ? 'http://host.docker.internal:8090/ipfs' + ? 'http://host.docker.internal:8091/ipfs' : 'https://ipfs.desci.com/ipfs'; \ No newline at end of file diff --git a/desci-repo/src/middleware/permissions.ts b/desci-repo/src/middleware/permissions.ts index 06d7334b3..553ea5fac 100644 --- a/desci-repo/src/middleware/permissions.ts +++ b/desci-repo/src/middleware/permissions.ts @@ -25,6 +25,16 @@ export const ensureUser = async (req: ExpressRequest, res: Response, next: NextF } }; +const AUTH_COOKIE_DOMAIN_MAPPING = { + 'https://nodes-api.desci.com': 'auth', + 'https://nodes-api-dev.desci.com': 'auth-dev', + 'https://nodes-api-stage.desci.com': 'auth-stage', +}; + +// auth, auth-stage, auth-dev +export const AUTH_COOKIE_FIELDNAME = + AUTH_COOKIE_DOMAIN_MAPPING[process.env.SERVER_URL || 'https://nodes-api.desci.com'] || 'auth'; + /** * Extract JWT Authorisation token from IncommingRequest */ @@ -43,7 +53,7 @@ export const extractAuthToken = async (request: ExpressRequest | Request) => { // If auth token wasn't found in the header, try retrieve from cookies if (!token && request['cookies']) { - token = request['cookies']['auth']; + token = request['cookies'][AUTH_COOKIE_FIELDNAME]; } // If Auth token is null and request.headers.cookie is valid, attempt to parse auth token from cookie diff --git a/desci-repo/src/services/manifestRepo.ts b/desci-repo/src/services/manifestRepo.ts index 7f8ae945a..de883cdb6 100644 --- a/desci-repo/src/services/manifestRepo.ts +++ b/desci-repo/src/services/manifestRepo.ts @@ -31,7 +31,6 @@ export function assertNever(value: never) { throw Error('Not Possible'); } - export const getDocumentUpdater = (documentId: DocumentId) => { const automergeUrl = getAutomergeUrl(documentId); const handle = backendRepo.find(automergeUrl as AutomergeUrl); @@ -209,6 +208,24 @@ export const getDocumentUpdater = (documentId: DocumentId) => { { time: Date.now(), message: action.type }, ); break; + case 'Upsert Component': + handle.change( + (document) => { + upsertManifestComponent(document, action.component); + }, + { time: Date.now(), message: action.type }, + ); + break; + case 'Upsert Components': + action.components.forEach((component) => { + handle.change( + (document) => { + upsertManifestComponent(document, component); + }, + { time: Date.now(), message: 'Upsert Component' }, + ); + }); + break; case 'Publish Dpid': handle.change( (document) => { @@ -217,12 +234,12 @@ export const getDocumentUpdater = (documentId: DocumentId) => { { time: Date.now(), message: action.type }, ); break; - case "Remove Dpid": + case 'Remove Dpid': handle.change( (document) => { removeDpid(document); }, - { time: Date.now(), message: action.type } + { time: Date.now(), message: action.type }, ); break; case 'Pin Component': @@ -264,6 +281,15 @@ export const getDocumentUpdater = (documentId: DocumentId) => { { time: Date.now(), message: action.type }, ); break; + case 'Add Contributors': + handle.change( + (document) => { + if (!document.manifest.authors) document.manifest.authors = []; + document.manifest.authors?.push(...action.contributors); + }, + { time: Date.now(), message: action.type }, + ); + break; case 'Update CoverImage': handle.change( (document) => { @@ -294,9 +320,7 @@ const updateComponentTypeMap = ( path: string, compTypeMap: ResearchObjectComponentTypeMap, ): void => { - const currentComponent = doc.manifest.components.find( - (c) => c.payload?.path === path - ); + const currentComponent = doc.manifest.components.find((c) => c.payload?.path === path); if (!currentComponent) return; const existingType = currentComponent.type; @@ -316,45 +340,29 @@ const updateComponentTypeMap = ( }); }; -const addManifestComponent = ( - doc: Doc, - component: ResearchObjectV1Component -): void => { +const addManifestComponent = (doc: Doc, component: ResearchObjectV1Component): void => { doc.manifest.components.push(component); }; -const deleteComponent = ( - doc: Doc, - path: string -): void => { - const deleteIdx = doc.manifest.components.findIndex( - (component) => component?.payload?.path === path - ); +const deleteComponent = (doc: Doc, path: string): void => { + const deleteIdx = doc.manifest.components.findIndex((component) => component?.payload?.path === path); if (deleteIdx !== -1) doc.manifest.components.splice(deleteIdx, 1); }; -const togglePin = ( - doc: Doc, - componentIndex: number, pin: boolean -): void => { +const togglePin = (doc: Doc, componentIndex: number, pin: boolean): void => { const currentComponent = doc.manifest.components[componentIndex]; currentComponent.starred = pin; }; -const addDpid = ( - doc: Doc, - dpid: ResearchObjectV1Dpid -): void => { +const addDpid = (doc: Doc, dpid: ResearchObjectV1Dpid): void => { if (doc.manifest.dpid) return; doc.manifest.dpid = dpid; }; -/** In an unavilable optimistic dPID was written to the manifest, it must +/** In an unavailable optimistic dPID was written to the manifest, it must * be removed again. -*/ -const removeDpid = ( - doc: Doc -): void => { + */ +const removeDpid = (doc: Doc): void => { delete doc.manifest.dpid; }; @@ -415,6 +423,25 @@ const updateManifestComponent = ( } }; +const upsertManifestComponent = (doc: Doc, component: ResearchObjectV1Component): void => { + // Check for existing component + const existingComponentIndex = doc.manifest.components.findIndex( + (c) => c.id === component.id || c.payload?.path === component.payload?.path, + ); + // Apply changess + if (existingComponentIndex !== -1) { + const existingComponent = doc.manifest.components[existingComponentIndex]; + doc.manifest.components[existingComponentIndex] = { + ...existingComponent, + ...component, + payload: { ...existingComponent.payload, ...component.payload }, + }; + } else { + // Push the component + doc.manifest.components.push(component); + } +}; + type TypeInitialisers = {} | '' | 0 | []; const getTypeDefault = (value: unknown): TypeInitialisers => { diff --git a/desci-repo/src/validators/schema.ts b/desci-repo/src/validators/schema.ts index e80528833..dac1fe4f0 100644 --- a/desci-repo/src/validators/schema.ts +++ b/desci-repo/src/validators/schema.ts @@ -65,7 +65,7 @@ type Action = ManifestActions["type"]; export const actionsSchema = z.array( z.discriminatedUnion('type', [ z.object({ type: z.literal('Publish Dpid'), dpid: dpid }), - z.object({ type: z.literal('Remove Dpid')}), + z.object({ type: z.literal('Remove Dpid') }), z.object({ type: z.literal('Update Title'), title: z.string() }), z.object({ type: z.literal('Update Description'), description: z.string() }), z.object({ type: z.literal('Update License'), defaultLicense: z.string() }), @@ -74,6 +74,7 @@ export const actionsSchema = z.array( z.object({ type: z.literal('Delete Component'), path: z.string() }), z.object({ type: z.literal('Update Component'), component: componentSchema }), z.object({ type: z.literal('Add Contributor'), author: contributor }), + z.object({ type: z.literal('Add Contributors'), contributors: z.array(contributor) }), z.object({ type: z.literal('Remove Contributor'), contributorIndex: z.number() }), z.object({ type: z.literal('Pin Component'), componentIndex: z.number() }), z.object({ type: z.literal('UnPin Component'), componentIndex: z.number() }), diff --git a/desci-repo/src/validators/test/schema.spec.ts b/desci-repo/src/validators/test/schema.spec.ts index 58ea7a8a8..26a0cda0b 100644 --- a/desci-repo/src/validators/test/schema.spec.ts +++ b/desci-repo/src/validators/test/schema.spec.ts @@ -136,7 +136,7 @@ describe('ManifestActions Schema', () => { payload: { path: 'root/external links/', cid: 'bafybeicrsddlvfbbo5s3upvjbtb5flc73iupxfy2kf3rv43kkbvegbqbwq', - language: 'typescript' + language: 'typescript', }, }; @@ -188,7 +188,7 @@ describe('ManifestActions Schema', () => { payload: { path: 'root/external links/', cid: 'bafybeicrsddlvfbbo5s3upvjbtb5flc73iupxfy2kf3rv43kkbvegbqbwq', - language: 'typescript' + language: 'typescript', }, }; @@ -232,6 +232,12 @@ describe('ManifestActions Schema', () => { expect(validated.success).to.be.true; }); + it('should validate Add Contributors', async () => { + const validated = await actionsSchema.safeParseAsync([{ type: 'Add Contributors', contributors: [author] }]); + console.log(validated.success ? validated.data : validated.error); + expect(validated.success).to.be.true; + }); + it('should validate Remove Contributor', async () => { const validated = await actionsSchema.safeParseAsync([{ type: 'Remove Contributor', contributorIndex: 0 }]); console.log(validated.success ? validated.data : validated.error); diff --git a/desci-repo/yarn.lock b/desci-repo/yarn.lock index cd6974ac8..24f76740b 100644 --- a/desci-repo/yarn.lock +++ b/desci-repo/yarn.lock @@ -4,12 +4,12 @@ "@aashutoshrathi/word-wrap@^1.2.3": version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== "@automerge/automerge-repo-network-websocket@^1.0.19": version "1.1.0" - resolved "https://registry.yarnpkg.com/@automerge/automerge-repo-network-websocket/-/automerge-repo-network-websocket-1.1.0.tgz#d4ebb0331f0dd8357e85da7a1688bc47be938d58" + resolved "https://registry.npmjs.org/@automerge/automerge-repo-network-websocket/-/automerge-repo-network-websocket-1.1.0.tgz" integrity sha512-D3k/RKI5xVPb+ZEmEmL/MiuGiu2vzujOloyHveLmd1R9BL2JakbKk1s4G2MhTBT1qF8Io02pIa1+lsaG9HlULA== dependencies: "@automerge/automerge-repo" "1.1.0" @@ -21,7 +21,7 @@ "@automerge/automerge-repo-storage-nodefs@^1.0.19": version "1.1.0" - resolved "https://registry.yarnpkg.com/@automerge/automerge-repo-storage-nodefs/-/automerge-repo-storage-nodefs-1.1.0.tgz#a65d31f26a96ed2afff6b2994a8f069e32f8a080" + resolved "https://registry.npmjs.org/@automerge/automerge-repo-storage-nodefs/-/automerge-repo-storage-nodefs-1.1.0.tgz" integrity sha512-31vTq4ItdV0n4x7MOF/mmKwUqEwYQMekYZ3OEgUdJAhw7qIrF1lY0IM194DjVp9V55UFFMQyb5vx+VJ4GpKewA== dependencies: "@automerge/automerge-repo" "1.1.0" @@ -29,7 +29,7 @@ "@automerge/automerge-repo@1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@automerge/automerge-repo/-/automerge-repo-1.1.0.tgz#adb24708e949b72a73d9349ab2ad4e7eb4487b76" + resolved "https://registry.npmjs.org/@automerge/automerge-repo/-/automerge-repo-1.1.0.tgz" integrity sha512-QRSt2s89Uhrlofbkipsb/9Alyp65/e1PocNzY+L4J7yDDXD7fbEW5uThXey2lSb1m98Fe0+NtzyKD1we6lvAkA== dependencies: "@automerge/automerge" "^2.1.9" @@ -45,7 +45,7 @@ "@automerge/automerge-repo@^1.1.0": version "1.1.1" - resolved "https://registry.yarnpkg.com/@automerge/automerge-repo/-/automerge-repo-1.1.1.tgz#87d2fcabb0191d48ab4a15c55935681381b0a605" + resolved "https://registry.npmjs.org/@automerge/automerge-repo/-/automerge-repo-1.1.1.tgz" integrity sha512-fQq+4eUadubzHOUi2BIiC5f/XFUHixJ/kdfnbXRoh2xwzojMfQIlrRfZzxkuW5AdD9LOC2/LoWJs+ak4a9vq4Q== dependencies: "@automerge/automerge" "^2.1.9" @@ -61,12 +61,12 @@ "@automerge/automerge-wasm@0.9.0": version "0.9.0" - resolved "https://registry.yarnpkg.com/@automerge/automerge-wasm/-/automerge-wasm-0.9.0.tgz#1b0e1ea595feeb47ea0f4b685bf2ffb7fa61f97c" + resolved "https://registry.npmjs.org/@automerge/automerge-wasm/-/automerge-wasm-0.9.0.tgz" integrity sha512-wTPcW3wVk20D1x0DOko/RsfZV1mlc8HJynqgTRhVocOxFIU/RCilnYRfJmSb8LwCG2uZzfqg0DLsEBqQZ53KBQ== "@automerge/automerge@^2.1.10", "@automerge/automerge@^2.1.9": version "2.1.10" - resolved "https://registry.yarnpkg.com/@automerge/automerge/-/automerge-2.1.10.tgz#257f9f94c37db088008548cca7e57e853d1ed354" + resolved "https://registry.npmjs.org/@automerge/automerge/-/automerge-2.1.10.tgz" integrity sha512-xj8R3fQHZmDYnrYW5WrBqWm/r5sLV9Z7mu89pJ10wGLVS2V+iAB2os85DoOGI2etzjmQsoHyrd97GBmszjH4zQ== dependencies: "@automerge/automerge-wasm" "0.9.0" @@ -74,7 +74,7 @@ "@babel/code-frame@^7.0.0": version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz" integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== dependencies: "@babel/highlight" "^7.23.4" @@ -82,12 +82,12 @@ "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== "@babel/highlight@^7.23.4": version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz" integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== dependencies: "@babel/helper-validator-identifier" "^7.22.20" @@ -116,7 +116,7 @@ "@cbor-extract/cbor-extract-linux-x64@2.2.0": version "2.2.0" - resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz#672574485ccd24759bf8fb8eab9dbca517d35b97" + resolved "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz" integrity sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw== "@cbor-extract/cbor-extract-win32-x64@2.2.0": @@ -126,15 +126,15 @@ "@cspotcode/source-map-support@^0.8.0": version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@desci-labs/desci-models@^0.2.3-rc1": - version "0.2.3-rc1" - resolved "https://registry.yarnpkg.com/@desci-labs/desci-models/-/desci-models-0.2.3-rc1.tgz#9583455b59966d9e50bae1c2e2c6701e529e3990" - integrity sha512-FW74CkgfZTNhky0Q6Sk3lCoBZ+Yl5D4KVTTLBv/NG+e8qH9jyT6DVbiXvaThQWZQNulFXJg2UFZm73AVInu3wA== +"@desci-labs/desci-models@0.2.7-rc6": + version "0.2.7-rc6" + resolved "https://registry.yarnpkg.com/@desci-labs/desci-models/-/desci-models-0.2.7-rc6.tgz#f7f7fed6dc6acda3a90650d1977fa3acb4c2a2a4" + integrity sha512-A1eWbHJqbs9YEnsJzOzgRdoCpsBzlYa4yacXApBmZmVHk6EwqtMJRjwAsQ0/YIQcLbyYCptSenPXhOSlw4FESw== dependencies: jsonld "^8.1.1" schema-dts "^1.1.2" @@ -150,19 +150,19 @@ "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== "@eslint/eslintrc@^2.1.4": version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" @@ -177,17 +177,17 @@ "@eslint/js@8.56.0": version "8.56.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz" integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== "@fastify/busboy@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.0.tgz#0709e9f4cb252351c609c6e6d8d6779a8d25edff" - integrity sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA== + version "2.1.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== "@humanwhocodes/config-array@^0.11.13": version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz" integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== dependencies: "@humanwhocodes/object-schema" "^2.0.2" @@ -196,17 +196,17 @@ "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^2.0.2": version "2.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz" integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== "@isaacs/cliui@^8.0.2": version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== dependencies: string-width "^5.1.2" @@ -218,17 +218,17 @@ "@jridgewell/resolve-uri@^3.0.3": version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" @@ -236,12 +236,12 @@ "@noble/hashes@^1.2.0": version "1.3.3" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" @@ -249,12 +249,12 @@ "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" @@ -262,17 +262,17 @@ "@pkgjs/parseargs@^0.11.0": version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@pkgr/core@^0.1.0": version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz" integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== "@sentry-internal/tracing@7.99.0": version "7.99.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.99.0.tgz#ad13f8343444ecf7323a4220d4e57a55166565d7" + resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.99.0.tgz" integrity sha512-z3JQhHjoM1KdM20qrHwRClKJrNLr2CcKtCluq7xevLtXHJWNAQQbafnWD+Aoj85EWXBzKt9yJMv2ltcXJ+at+w== dependencies: "@sentry/core" "7.99.0" @@ -281,7 +281,7 @@ "@sentry/core@7.99.0": version "7.99.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.99.0.tgz#6881aae5ac1436637b3d88e0b12df4ab56016c5f" + resolved "https://registry.npmjs.org/@sentry/core/-/core-7.99.0.tgz" integrity sha512-vOAtzcAXEUtS/oW7wi3wMkZ3hsb5Ch96gKyrrj/mXdOp2zrcwdNV6N9/pawq2E9P/7Pw8AXw4CeDZztZrjQLuA== dependencies: "@sentry/types" "7.99.0" @@ -289,7 +289,7 @@ "@sentry/node@^7.84.0": version "7.99.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.99.0.tgz#c70e174527bbd86294dd446dbc1ae9036fb729f2" + resolved "https://registry.npmjs.org/@sentry/node/-/node-7.99.0.tgz" integrity sha512-34wYtLddnPcQ8qvKq62AfxowaMFw+GMUZGv7fIs9FxeBqqqn6Ckl0gFCTADudIIBQ3rSbmN7sHJIXdyiQv+pcw== dependencies: "@sentry-internal/tracing" "7.99.0" @@ -299,46 +299,46 @@ "@sentry/tracing@^7.84.0": version "7.99.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.99.0.tgz#75ecdda05fa37e1a3e6bc43b39d71b5b51db2290" + resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.99.0.tgz" integrity sha512-Cf622gSeamiSsi0JEj3PTXnq019OymaCrGf91x1d6OPyJ5jAXdlNuhw7NkqCEw8euIhhULuS81l5nGfBrgjj9Q== dependencies: "@sentry-internal/tracing" "7.99.0" "@sentry/types@7.99.0": version "7.99.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.99.0.tgz#bba7a514abab445026ee42f40f92f81275a6deba" + resolved "https://registry.npmjs.org/@sentry/types/-/types-7.99.0.tgz" integrity sha512-94qwOw4w40sAs5mCmzcGyj8ZUu/KhnWnuMZARRq96k+SjRW/tHFAOlIdnFSrt3BLPvSOK7R3bVAskZQ0N4FTmA== "@sentry/utils@7.99.0": version "7.99.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.99.0.tgz#ef96c3b59e23c79f3ef500db508234a48fa1cfbe" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.99.0.tgz" integrity sha512-cYZy5WNTkWs5GgggGnjfGqC44CWir0pAv4GVVSx0fsup4D4pMKBJPrtub15f9uC+QkUf3vVkqwpBqeFxtmJQTQ== dependencies: "@sentry/types" "7.99.0" "@tsconfig/node10@^1.0.7": version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/body-parser@*": version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz" integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== dependencies: "@types/connect" "*" @@ -346,26 +346,26 @@ "@types/chai@^4.3.11": version "4.3.11" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.11.tgz#e95050bf79a932cb7305dd130254ccdf9bde671c" + resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz" integrity sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ== "@types/connect@*": version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz" integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== dependencies: "@types/node" "*" "@types/cors@^2.8.17": version "2.8.17" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" + resolved "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz" integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== dependencies: "@types/node" "*" "@types/express-serve-static-core@^4.17.33": version "4.17.42" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz#2a276952acc73d1b8dc63fd4210647abbc553a71" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz" integrity sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ== dependencies: "@types/node" "*" @@ -375,7 +375,7 @@ "@types/express@^4.17.21": version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== dependencies: "@types/body-parser" "*" @@ -385,63 +385,63 @@ "@types/http-errors@*": version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz" integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== "@types/json-schema@^7.0.12": version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/json5@^0.0.29": version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/jsonwebtoken@^9.0.5": version "9.0.5" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz#0bd9b841c9e6c5a937c17656e2368f65da025588" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz" integrity sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA== dependencies: "@types/node" "*" "@types/mime@*": version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.4.tgz" integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== "@types/mime@^1": version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== "@types/mocha@^10.0.6": version "10.0.6" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.6.tgz#818551d39113081048bdddbef96701b4e8bb9d1b" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz" integrity sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg== "@types/morgan@^1.9.9": version "1.9.9" - resolved "https://registry.yarnpkg.com/@types/morgan/-/morgan-1.9.9.tgz#d60dec3979e16c203a000159daa07d3fb7270d7f" + resolved "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.9.tgz" integrity sha512-iRYSDKVaC6FkGSpEVVIvrRGw0DfJMiQzIn3qr2G5B3C//AWkulhXgaBd7tS9/J79GWSYMTHGs7PfI5b3Y8m+RQ== dependencies: "@types/node" "*" "@types/node@*": version "20.11.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.13.tgz#188263ee2c8d590e181d3f5bfa7e485a932957cb" + resolved "https://registry.npmjs.org/@types/node/-/node-20.11.13.tgz" integrity sha512-5G4zQwdiQBSWYTDAH1ctw2eidqdhMJaNsiIDKHFr55ihz5Trl2qqR8fdrT732yPBho5gkNxXm67OxWFBqX9aPg== dependencies: undici-types "~5.26.4" "@types/parse-json@^4.0.0": version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== "@types/pg@^8.10.9": version "8.11.0" - resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.11.0.tgz#355a07531d467f2e4fabaa78be087ce2d99fd862" + resolved "https://registry.npmjs.org/@types/pg/-/pg-8.11.0.tgz" integrity sha512-sDAlRiBNthGjNFfvt0k6mtotoVYVQ63pA8R4EMWka7crawSR60waVYR0HAgmPRs/e2YaeJTD/43OoZ3PFw80pw== dependencies: "@types/node" "*" @@ -450,22 +450,22 @@ "@types/qs@*": version "6.9.11" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.11.tgz#208d8a30bc507bd82e03ada29e4732ea46a6bbda" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz" integrity sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ== "@types/range-parser@*": version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== "@types/semver@^7.5.0": version "7.5.6" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz" integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== "@types/send@*": version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz" integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== dependencies: "@types/mime" "^1" @@ -473,7 +473,7 @@ "@types/serve-static@*": version "1.15.5" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz" integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== dependencies: "@types/http-errors" "*" @@ -482,24 +482,24 @@ "@types/strip-bom@^3.0.0": version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" + resolved "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ== "@types/strip-json-comments@0.0.30": version "0.0.30" - resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" + resolved "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz" integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== "@types/ws@^8.5.10": version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz" integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== dependencies: "@types/node" "*" "@typescript-eslint/eslint-plugin@^6.13.1": version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz#9cf31546d2d5e884602626d89b0e0d2168ac25ed" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz" integrity sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg== dependencies: "@eslint-community/regexpp" "^4.5.1" @@ -516,7 +516,7 @@ "@typescript-eslint/scope-manager@6.20.0": version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz#8a926e60f6c47feb5bab878246dc2ae465730151" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz" integrity sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA== dependencies: "@typescript-eslint/types" "6.20.0" @@ -524,7 +524,7 @@ "@typescript-eslint/type-utils@6.20.0": version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz#d395475cd0f3610dd80c7d8716fa0db767da3831" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz" integrity sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g== dependencies: "@typescript-eslint/typescript-estree" "6.20.0" @@ -534,12 +534,12 @@ "@typescript-eslint/types@6.20.0": version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.20.0.tgz#5ccd74c29011ae7714ae6973e4ec0c634708b448" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.20.0.tgz" integrity sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ== "@typescript-eslint/typescript-estree@6.20.0": version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz#5b2d0975949e6bdd8d45ee1471461ef5fadc5542" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz" integrity sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g== dependencies: "@typescript-eslint/types" "6.20.0" @@ -553,7 +553,7 @@ "@typescript-eslint/utils@6.20.0": version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.20.0.tgz#0e52afcfaa51af5656490ba4b7437cc3aa28633d" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.20.0.tgz" integrity sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg== dependencies: "@eslint-community/eslint-utils" "^4.4.0" @@ -566,7 +566,7 @@ "@typescript-eslint/visitor-keys@6.20.0": version "6.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz#f7ada27f2803de89df0edd9fd7be22c05ce6a498" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz" integrity sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw== dependencies: "@typescript-eslint/types" "6.20.0" @@ -574,24 +574,24 @@ "@ungap/structured-clone@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== abbrev@1: version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== abort-controller@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies: event-target-shim "^5.0.0" accepts@~1.3.8: version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: mime-types "~2.1.34" @@ -599,22 +599,22 @@ accepts@~1.3.8: acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.1.1: version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== acorn@^8.4.1, acorn@^8.9.0: version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" @@ -622,7 +622,7 @@ aggregate-error@^3.0.0: ajv@^6.12.4: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -632,53 +632,53 @@ ajv@^6.12.4: ansi-colors@4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-colors@^4.1.1: version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^4.3.0: version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" ansi-styles@^6.1.0: version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" @@ -686,17 +686,17 @@ anymatch@~3.1.2: arg@^4.1.0: version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== array-buffer-byte-length@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== dependencies: call-bind "^1.0.2" @@ -704,12 +704,12 @@ array-buffer-byte-length@^1.0.0: array-flatten@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== array-includes@^3.1.7: version "3.1.7" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz" integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: call-bind "^1.0.2" @@ -720,12 +720,12 @@ array-includes@^3.1.7: array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array.prototype.findlastindex@^1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz" integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== dependencies: call-bind "^1.0.2" @@ -736,7 +736,7 @@ array.prototype.findlastindex@^1.2.3: array.prototype.flat@^1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz" integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" @@ -746,7 +746,7 @@ array.prototype.flat@^1.3.2: array.prototype.flatmap@^1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz" integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" @@ -756,7 +756,7 @@ array.prototype.flatmap@^1.3.2: arraybuffer.prototype.slice@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz" integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== dependencies: array-buffer-byte-length "^1.0.0" @@ -769,32 +769,32 @@ arraybuffer.prototype.slice@^1.0.2: assertion-error@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== astral-regex@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== atomic-sleep@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + resolved "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== available-typed-arrays@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== axios@^1.6.2: version "1.6.7" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" + resolved "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz" integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== dependencies: follow-redirects "^1.15.4" @@ -803,34 +803,34 @@ axios@^1.6.2: balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base-x@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + resolved "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz" integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== basic-auth@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz" integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== dependencies: safe-buffer "5.1.2" binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== body-parser@1.20.1: version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" @@ -848,7 +848,7 @@ body-parser@1.20.1: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -856,33 +856,33 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" browser-stdout@1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== bs58@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + resolved "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz" integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== dependencies: base-x "^4.0.0" bs58check@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" + resolved "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz" integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== dependencies: "@noble/hashes" "^1.2.0" @@ -890,22 +890,22 @@ bs58check@^3.0.1: buffer-equal-constant-time@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-writer@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" + resolved "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz" integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== buffer@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" @@ -913,12 +913,12 @@ buffer@^6.0.3: bytes@3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz" integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: function-bind "^1.1.2" @@ -927,12 +927,12 @@ call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase@^6.0.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== canonicalize@^1.0.1: @@ -942,7 +942,7 @@ canonicalize@^1.0.1: cbor-extract@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/cbor-extract/-/cbor-extract-2.2.0.tgz#cee78e630cbeae3918d1e2e58e0cebaf3a3be840" + resolved "https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz" integrity sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA== dependencies: node-gyp-build-optional-packages "5.1.1" @@ -956,14 +956,14 @@ cbor-extract@^2.2.0: cbor-x@^1.3.0: version "1.5.8" - resolved "https://registry.yarnpkg.com/cbor-x/-/cbor-x-1.5.8.tgz#3bd7bc61120692b5031d7f782a39b64f51f1d825" + resolved "https://registry.npmjs.org/cbor-x/-/cbor-x-1.5.8.tgz" integrity sha512-gc3bHBsvG6GClCY6c0/iip+ghlqizkVp+TtaL927lwvP4VP9xBdi1HmqPR5uj/Mj/0TOlngMkIYa25wKg+VNrQ== optionalDependencies: cbor-extract "^2.2.0" chai@4.3.4: version "4.3.4" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49" + resolved "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz" integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== dependencies: assertion-error "^1.1.0" @@ -975,7 +975,7 @@ chai@4.3.4: chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -984,7 +984,7 @@ chalk@^2.4.1, chalk@^2.4.2: chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -992,14 +992,14 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: check-error@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz" integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== dependencies: get-func-name "^2.0.2" chokidar@3.5.3, chokidar@^3.5.1, chokidar@^3.5.2: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -1014,19 +1014,19 @@ chokidar@3.5.3, chokidar@^3.5.1, chokidar@^3.5.2: clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-truncate@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: slice-ansi "^3.0.0" @@ -1043,75 +1043,75 @@ cliui@^7.0.2, cliui@^8.0.1: color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colorette@^2.0.16, colorette@^2.0.7: version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" commander@^7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== content-disposition@0.5.4: version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" content-type@~1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== cookie-signature@1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== cookie@0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== cors@^2.8.5: version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== dependencies: object-assign "^4" @@ -1119,7 +1119,7 @@ cors@^2.8.5: cosmiconfig@^7.0.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== dependencies: "@types/parse-json" "^4.0.0" @@ -1130,12 +1130,12 @@ cosmiconfig@^7.0.0: create-require@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== cross-spawn@^6.0.5: version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" @@ -1146,7 +1146,7 @@ cross-spawn@^6.0.5: cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -1160,45 +1160,45 @@ data-uri-to-buffer@^4.0.0: dateformat@^4.6.3: version "4.6.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== debug@2.6.9: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@4.3.4, debug@^4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" debug@^3.2.7: version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" decamelize@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== deep-eql@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== dependencies: type-detect "^4.0.0" deep-equal@^2.2.3: version "2.2.3" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz" integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== dependencies: array-buffer-byte-length "^1.0.0" @@ -1222,12 +1222,12 @@ deep-equal@^2.2.3: deep-is@^0.1.3: version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== dependencies: get-intrinsic "^1.2.1" @@ -1236,7 +1236,7 @@ define-data-property@^1.0.1, define-data-property@^1.1.1: define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: define-data-property "^1.0.1" @@ -1245,58 +1245,58 @@ define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== depd@2.0.0, depd@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== destroy@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-libc@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz" integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== diff@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== diff@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" dotenv-cli@^7.3.0: version "7.3.0" - resolved "https://registry.yarnpkg.com/dotenv-cli/-/dotenv-cli-7.3.0.tgz#21e33e7944713001677658d68856063968edfbd2" + resolved "https://registry.npmjs.org/dotenv-cli/-/dotenv-cli-7.3.0.tgz" integrity sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw== dependencies: cross-spawn "^7.0.3" @@ -1306,63 +1306,63 @@ dotenv-cli@^7.3.0: dotenv-expand@^10.0.0: version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz" integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== dotenv@^16.3.0, dotenv@^16.3.1: version "16.4.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.1.tgz#1d9931f1d3e5d2959350d1250efab299561f7f11" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.1.tgz" integrity sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ== dynamic-dedupe@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1" + resolved "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz" integrity sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ== dependencies: xtend "^4.0.0" eastasianwidth@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== ecdsa-sig-formatter@1.0.11: version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== dependencies: safe-buffer "^5.0.1" ee-first@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoji-regex@^9.2.2: version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== encodeurl@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== end-of-stream@^1.1.0: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" enquirer@^2.3.6: version "2.4.1" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz" integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== dependencies: ansi-colors "^4.1.1" @@ -1370,14 +1370,14 @@ enquirer@^2.3.6: error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" es-abstract@^1.22.1: version "1.22.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz" integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: array-buffer-byte-length "^1.0.0" @@ -1422,7 +1422,7 @@ es-abstract@^1.22.1: es-get-iterator@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz" integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== dependencies: call-bind "^1.0.2" @@ -1437,7 +1437,7 @@ es-get-iterator@^1.1.3: es-set-tostringtag@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz" integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: get-intrinsic "^1.2.2" @@ -1446,14 +1446,14 @@ es-set-tostringtag@^2.0.1: es-shim-unscopables@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz" integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" @@ -1462,32 +1462,32 @@ es-to-primitive@^1.2.1: escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-html@~1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== eslint-config-prettier@^9.1.0: version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz" integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== eslint-import-resolver-node@^0.3.9: version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz" integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: debug "^3.2.7" @@ -1496,14 +1496,14 @@ eslint-import-resolver-node@^0.3.9: eslint-module-utils@^2.8.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz" integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== dependencies: debug "^3.2.7" eslint-plugin-import@^2.29.0: version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz" integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== dependencies: array-includes "^3.1.7" @@ -1526,12 +1526,12 @@ eslint-plugin-import@^2.29.0: eslint-plugin-no-array-reduce@^1.0.62: version "1.0.62" - resolved "https://registry.yarnpkg.com/eslint-plugin-no-array-reduce/-/eslint-plugin-no-array-reduce-1.0.62.tgz#925dee5bbe37f41ce7aa6ebb149c3988dd5b8d48" + resolved "https://registry.npmjs.org/eslint-plugin-no-array-reduce/-/eslint-plugin-no-array-reduce-1.0.62.tgz" integrity sha512-Hnauv6BNmo2RPNG6ka1fc2WcNDtsbcutCbvx188goD/EdSNab3Jp26HgmMSFERiqu3VQdIebHSnSKIS1GUrvoA== eslint-plugin-prettier@^5.0.1: version "5.1.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz" integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== dependencies: prettier-linter-helpers "^1.0.0" @@ -1539,7 +1539,7 @@ eslint-plugin-prettier@^5.0.1: eslint-scope@^7.2.2: version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" @@ -1547,12 +1547,12 @@ eslint-scope@^7.2.2: eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.55.0: version "8.56.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz" integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" @@ -1596,7 +1596,7 @@ eslint@^8.55.0: espree@^9.6.0, espree@^9.6.1: version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: acorn "^8.9.0" @@ -1605,51 +1605,51 @@ espree@^9.6.0, espree@^9.6.1: esquery@^1.4.2: version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@~1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== event-target-shim@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== eventemitter3@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== events@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== execa@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" @@ -1664,7 +1664,7 @@ execa@^4.1.0: execa@^5.0.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -1679,7 +1679,7 @@ execa@^5.0.0: express@^4.18.2: version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" @@ -1716,22 +1716,22 @@ express@^4.18.2: fast-copy@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.1.tgz#9e89ef498b8c04c1cd76b33b8e14271658a732aa" + resolved "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.1.tgz" integrity sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2: version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== fast-glob@^3.2.9: version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -1742,32 +1742,32 @@ fast-glob@^3.2.9: fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-redact@^3.1.1: version "3.3.0" - resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.3.0.tgz#7c83ce3a7be4898241a46560d51de10f653f7634" + resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz" integrity sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ== fast-safe-stringify@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fast-sha256@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-sha256/-/fast-sha256-1.3.0.tgz#7916ba2054eeb255982608cccd0f6660c79b7ae6" + resolved "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz" integrity sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ== fastq@^1.6.0: version "1.17.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.0.tgz#ca5e1a90b5e68f97fc8b61330d5819b82f5fab03" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz" integrity sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w== dependencies: reusify "^1.0.4" @@ -1782,21 +1782,21 @@ fetch-blob@^3.1.2, fetch-blob@^3.1.4: file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" finalhandler@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" @@ -1809,7 +1809,7 @@ finalhandler@1.2.0: find-up@5.0.0, find-up@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -1817,7 +1817,7 @@ find-up@5.0.0, find-up@^5.0.0: find-up@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -1825,7 +1825,7 @@ find-up@^4.1.0: flat-cache@^3.0.4: version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: flatted "^3.2.9" @@ -1834,29 +1834,29 @@ flat-cache@^3.0.4: flat@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.2.9: version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== follow-redirects@^1.15.4: version "1.15.5" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz" integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== for-each@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" foreground-child@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== dependencies: cross-spawn "^7.0.0" @@ -1864,7 +1864,7 @@ foreground-child@^3.1.0: form-data@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" @@ -1880,17 +1880,17 @@ formdata-polyfill@^4.0.10: forwarded@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fresh@0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: @@ -1900,12 +1900,12 @@ fsevents@~2.3.2: function-bind@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== function.prototype.name@^1.1.6: version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" @@ -1915,22 +1915,22 @@ function.prototype.name@^1.1.6: functions-have-names@^1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-func-name@^2.0.0, get-func-name@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz" integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: function-bind "^1.1.2" @@ -1940,24 +1940,24 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== get-stream@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" get-stream@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== get-symbol-description@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: call-bind "^1.0.2" @@ -1965,21 +1965,21 @@ get-symbol-description@^1.0.0: glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob@7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" @@ -1991,7 +1991,7 @@ glob@7.2.0: glob@^10.3.7: version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== dependencies: foreground-child "^3.1.0" @@ -2002,7 +2002,7 @@ glob@^10.3.7: glob@^7.1.3: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -2014,21 +2014,21 @@ glob@^7.1.3: globals@^13.19.0: version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" globalthis@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: define-properties "^1.1.3" globby@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -2040,85 +2040,85 @@ globby@^11.1.0: gopd@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: get-intrinsic "^1.1.3" graceful-fs@^4.1.2: version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== graphemer@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz" integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: has-symbols "^1.0.2" hasown@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz" integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== dependencies: function-bind "^1.1.2" he@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== help-me@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" + resolved "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz" integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg== hosted-git-info@^2.1.4: version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== http-errors@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -2129,39 +2129,39 @@ http-errors@2.0.0: human-signals@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== iconv-lite@0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore-by-default@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz" integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -2169,17 +2169,17 @@ import-fresh@^3.2.1: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -2187,12 +2187,12 @@ inflight@^1.0.4: inherits@2, inherits@2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== internal-slot@^1.0.4, internal-slot@^1.0.5: version "1.0.6" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz" integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: get-intrinsic "^1.2.2" @@ -2201,12 +2201,12 @@ internal-slot@^1.0.4, internal-slot@^1.0.5: ipaddr.js@1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== is-arguments@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: call-bind "^1.0.2" @@ -2214,7 +2214,7 @@ is-arguments@^1.1.1: is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== dependencies: call-bind "^1.0.2" @@ -2223,26 +2223,26 @@ is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-bigint@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: call-bind "^1.0.2" @@ -2250,80 +2250,80 @@ is-boolean-object@^1.1.0: is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.13.0, is-core-module@^2.13.1: version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: hasown "^2.0.0" is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: has-tostringtag "^1.0.0" is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-map@^2.0.1, is-map@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== is-negative-zero@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== is-path-inside@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-obj@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== is-regex@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: call-bind "^1.0.2" @@ -2331,67 +2331,67 @@ is-regex@^1.1.4: is-regexp@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== is-set@^2.0.1, is-set@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== is-shared-array-buffer@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== dependencies: call-bind "^1.0.2" is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: has-tostringtag "^1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: has-symbols "^1.0.2" is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: which-typed-array "^1.1.11" is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== is-weakmap@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== is-weakref@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" is-weakset@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== dependencies: call-bind "^1.0.2" @@ -2399,22 +2399,22 @@ is-weakset@^2.0.1: isarray@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isomorphic-ws@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" + resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz" integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== jackspeak@^2.3.5: version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== dependencies: "@isaacs/cliui" "^8.0.2" @@ -2423,49 +2423,49 @@ jackspeak@^2.3.5: joycon@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz" integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" json-buffer@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-parse-better-errors@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-parse-even-better-errors@^2.3.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json5@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" @@ -2482,7 +2482,7 @@ jsonld@^8.1.1: jsonwebtoken@^9.0.2: version "9.0.2" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" + resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz" integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== dependencies: jws "^3.2.2" @@ -2498,7 +2498,7 @@ jsonwebtoken@^9.0.2: jwa@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" + resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== dependencies: buffer-equal-constant-time "1.0.1" @@ -2507,7 +2507,7 @@ jwa@^1.4.1: jws@^3.2.2: version "3.2.2" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" + resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== dependencies: jwa "^1.4.1" @@ -2515,7 +2515,7 @@ jws@^3.2.2: keyv@^4.5.3: version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -2535,7 +2535,7 @@ ky@^0.33.3: levn@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -2543,12 +2543,12 @@ levn@^0.4.1: lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lint-staged@11.1.2: version "11.1.2" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.1.2.tgz#4dd78782ae43ee6ebf2969cad9af67a46b33cd90" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-11.1.2.tgz" integrity sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w== dependencies: chalk "^4.1.1" @@ -2568,7 +2568,7 @@ lint-staged@11.1.2: listr2@^3.8.2: version "3.14.0" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" + resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz" integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== dependencies: cli-truncate "^2.1.0" @@ -2582,7 +2582,7 @@ listr2@^3.8.2: load-json-file@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: graceful-fs "^4.1.2" @@ -2592,61 +2592,61 @@ load-json-file@^4.0.0: locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.includes@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== lodash.isboolean@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== lodash.isinteger@^4.0.4: version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== lodash.isnumber@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== lodash.isplainobject@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== lodash.isstring@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.once@^4.0.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== log-symbols@4.1.0, log-symbols@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" @@ -2654,7 +2654,7 @@ log-symbols@4.1.0, log-symbols@^4.1.0: log-update@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: ansi-escapes "^4.3.0" @@ -2664,54 +2664,54 @@ log-update@^4.0.0: lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" "lru-cache@^9.1.1 || ^10.0.0": version "10.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz" integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== make-error@^1.1.1: version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== media-typer@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memorystream@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== merge-descriptors@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== methods@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" @@ -2719,65 +2719,65 @@ micromatch@^4.0.4: mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimatch@5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz" integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== dependencies: brace-expansion "^2.0.1" minimatch@9.0.3, minimatch@^9.0.1: version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: brace-expansion "^2.0.1" minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== mkdirp@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mocha@^10.2.0: version "10.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + resolved "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz" integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== dependencies: ansi-colors "4.1.1" @@ -2804,7 +2804,7 @@ mocha@^10.2.0: morgan@^1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" + resolved "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz" integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== dependencies: basic-auth "~2.0.1" @@ -2815,42 +2815,42 @@ morgan@^1.10.0: mri@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@2.1.3, ms@^2.1.1: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== nanoid@3.3.3: version "3.3.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== negotiator@0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== nice-try@^1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== node-domexception@^1.0.0: @@ -2869,14 +2869,14 @@ node-fetch@^3.2.10: node-gyp-build-optional-packages@5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c" + resolved "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz" integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw== dependencies: detect-libc "^2.0.1" nodemon@^3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.0.3.tgz#244a62d1c690eece3f6165c6cdb0db03ebd80b76" + resolved "https://registry.npmjs.org/nodemon/-/nodemon-3.0.3.tgz" integrity sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ== dependencies: chokidar "^3.5.2" @@ -2892,14 +2892,14 @@ nodemon@^3.0.2: nopt@~1.0.10: version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== dependencies: abbrev "1" normalize-package-data@^2.3.2: version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" @@ -2909,12 +2909,12 @@ normalize-package-data@^2.3.2: normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-run-all@^4.1.5: version "4.1.5" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" + resolved "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz" integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== dependencies: ansi-styles "^3.2.1" @@ -2929,24 +2929,24 @@ npm-run-all@^4.1.5: npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" object-assign@^4: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.13.1, object-inspect@^1.9.0: version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-is@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: call-bind "^1.0.2" @@ -2954,12 +2954,12 @@ object-is@^1.1.5: object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object.assign@^4.1.4: version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz" integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: call-bind "^1.0.5" @@ -2969,7 +2969,7 @@ object.assign@^4.1.4: object.fromentries@^2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz" integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: call-bind "^1.0.2" @@ -2978,7 +2978,7 @@ object.fromentries@^2.0.7: object.groupby@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz" integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== dependencies: call-bind "^1.0.2" @@ -2988,7 +2988,7 @@ object.groupby@^1.0.1: object.values@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz" integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: call-bind "^1.0.2" @@ -2997,50 +2997,50 @@ object.values@^1.1.7: obuf@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== on-exit-leak-free@^2.1.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" + resolved "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz" integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== on-finished@2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" on-finished@~2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== dependencies: ee-first "1.1.1" on-headers@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" optionator@^0.9.3: version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: "@aashutoshrathi/word-wrap" "^1.2.3" @@ -3052,59 +3052,59 @@ optionator@^0.9.3: p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-map@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== packet-reader@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" + resolved "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz" integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-json@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" @@ -3112,7 +3112,7 @@ parse-json@^4.0.0: parse-json@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -3122,37 +3122,37 @@ parse-json@^5.0.0: parseurl@~1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-scurry@^1.10.1: version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz" integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== dependencies: lru-cache "^9.1.1 || ^10.0.0" @@ -3160,59 +3160,59 @@ path-scurry@^1.10.1: path-to-regexp@0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== path-type@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: pify "^3.0.0" path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pathval@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== pg-cloudflare@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98" + resolved "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz" integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== pg-connection-string@^2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.2.tgz#713d82053de4e2bd166fab70cd4f26ad36aab475" + resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz" integrity sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA== pg-int8@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + resolved "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== pg-numeric@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a" + resolved "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz" integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== pg-pool@^3.6.1: version "3.6.1" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.1.tgz#5a902eda79a8d7e3c928b77abf776b3cb7d351f7" + resolved "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz" integrity sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og== pg-protocol@*, pg-protocol@^1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" + resolved "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz" integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== pg-types@^2.1.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + resolved "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz" integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== dependencies: pg-int8 "1.0.1" @@ -3223,7 +3223,7 @@ pg-types@^2.1.0: pg-types@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.2.tgz#399209a57c326f162461faa870145bb0f918b76d" + resolved "https://registry.npmjs.org/pg-types/-/pg-types-4.0.2.tgz" integrity sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng== dependencies: pg-int8 "1.0.1" @@ -3236,7 +3236,7 @@ pg-types@^4.0.1: pg@^8.11.3: version "8.11.3" - resolved "https://registry.yarnpkg.com/pg/-/pg-8.11.3.tgz#d7db6e3fe268fcedd65b8e4599cda0b8b4bf76cb" + resolved "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz" integrity sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g== dependencies: buffer-writer "2.0.0" @@ -3251,39 +3251,39 @@ pg@^8.11.3: pgpass@1.x: version "1.0.5" - resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz" integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== dependencies: split2 "^4.1.0" picocolors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== picomatch@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.1.tgz#817033161def55ec9638567a2f3bbc876b3e7516" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz" integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag== pidtree@^0.3.0: version "0.3.1" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" + resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz" integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== pify@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pino-abstract-transport@^1.0.0, pino-abstract-transport@v1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz#083d98f966262164504afb989bccd05f665937a8" + resolved "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz" integrity sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA== dependencies: readable-stream "^4.0.0" @@ -3291,7 +3291,7 @@ pino-abstract-transport@^1.0.0, pino-abstract-transport@v1.1.0: pino-http@^8.5.1: version "8.6.1" - resolved "https://registry.yarnpkg.com/pino-http/-/pino-http-8.6.1.tgz#46338caea759c9c86fc44f3226ed6976364ec269" + resolved "https://registry.npmjs.org/pino-http/-/pino-http-8.6.1.tgz" integrity sha512-J0hiJgUExtBXP2BjrK4VB305tHXS31sCmWJ9XJo2wPkLHa1NFPuW4V9wjG27PAc2fmBCigiNhQKpvrx+kntBPA== dependencies: get-caller-file "^2.0.5" @@ -3301,7 +3301,7 @@ pino-http@^8.5.1: pino-pretty@^10.2.3: version "10.3.1" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-10.3.1.tgz#e3285a5265211ac6c7cd5988f9e65bf3371a0ca9" + resolved "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.3.1.tgz" integrity sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g== dependencies: colorette "^2.0.7" @@ -3321,12 +3321,12 @@ pino-pretty@^10.2.3: pino-std-serializers@^6.0.0, pino-std-serializers@^6.2.2: version "6.2.2" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz#d9a9b5f2b9a402486a5fc4db0a737570a860aab3" + resolved "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz" integrity sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA== pino@^8.16.2, pino@^8.17.1: version "8.17.2" - resolved "https://registry.yarnpkg.com/pino/-/pino-8.17.2.tgz#0ed20175623a69d31664a1e8a5f85476272224be" + resolved "https://registry.npmjs.org/pino/-/pino-8.17.2.tgz" integrity sha512-LA6qKgeDMLr2ux2y/YiUt47EfgQ+S9LznBWOJdN3q1dx2sv0ziDLUBeVpyVv17TEcGCBuWf0zNtg3M5m1NhhWQ== dependencies: atomic-sleep "^1.0.0" @@ -3343,80 +3343,80 @@ pino@^8.16.2, pino@^8.17.1: please-upgrade-node@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: semver-compare "^1.0.0" postgres-array@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz" integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== postgres-array@~3.0.1: version "3.0.2" - resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-3.0.2.tgz#68d6182cb0f7f152a7e60dc6a6889ed74b0a5f98" + resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz" integrity sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog== postgres-bytea@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + resolved "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== postgres-bytea@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-3.0.0.tgz#9048dc461ac7ba70a6a42d109221619ecd1cb089" + resolved "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz" integrity sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw== dependencies: obuf "~1.1.2" postgres-date@~1.0.4: version "1.0.7" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz" integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== postgres-date@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.1.0.tgz#b85d3c1fb6fb3c6c8db1e9942a13a3bf625189d0" + resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-2.1.0.tgz" integrity sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA== postgres-interval@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + resolved "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz" integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== dependencies: xtend "^4.0.0" postgres-interval@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-3.0.0.tgz#baf7a8b3ebab19b7f38f07566c7aab0962f0c86a" + resolved "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz" integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw== postgres-range@^1.1.1: version "1.1.4" - resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.4.tgz#a59c5f9520909bcec5e63e8cf913a92e4c952863" + resolved "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.4.tgz" integrity sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w== prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier-linter-helpers@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: fast-diff "^1.1.2" prettier@^3.1.0: version "3.2.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.4.tgz#4723cadeac2ce7c9227de758e5ff9b14e075f283" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz" integrity sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ== pretty-quick@^3.1.3: version "3.3.1" - resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-3.3.1.tgz#cfde97fec77a8d201a0e0c9c71d9990e12587ee2" + resolved "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.3.1.tgz" integrity sha512-3b36UXfYQ+IXXqex6mCca89jC8u0mYLqFAN5eTQKoXO6oCQYcIVYZEB/5AlBHI7JPYygReM2Vv6Vom/Gln7fBg== dependencies: execa "^4.1.0" @@ -3429,17 +3429,17 @@ pretty-quick@^3.1.3: process-warning@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-3.0.0.tgz#96e5b88884187a1dce6f5c3166d611132058710b" + resolved "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz" integrity sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ== process@^0.11.10: version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== proxy-addr@~2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" @@ -3447,17 +3447,17 @@ proxy-addr@~2.0.7: proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== pstree.remy@^1.1.8: version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" + resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== pump@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" @@ -3465,41 +3465,41 @@ pump@^3.0.0: punycode@^2.1.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== qs@6.11.0: version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== quick-format-unescaped@^4.0.3: version "4.0.4" - resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + resolved "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz" integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" range-parser@~1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== raw-body@2.5.1: version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" @@ -3516,7 +3516,7 @@ rdf-canonize@^3.4.0: read-pkg@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== dependencies: load-json-file "^4.0.0" @@ -3525,7 +3525,7 @@ read-pkg@^3.0.0: readable-stream@^4.0.0: version "4.5.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz" integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== dependencies: abort-controller "^3.0.0" @@ -3536,29 +3536,29 @@ readable-stream@^4.0.0: readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" real-require@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" + resolved "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz" integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== reflect-metadata@^0.1.13: version "0.1.14" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.14.tgz#24cf721fe60677146bb77eeb0e1f9dece3d65859" + resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz" integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== regenerator-runtime@^0.14.0: version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== regexp.prototype.flags@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" @@ -3567,17 +3567,17 @@ regexp.prototype.flags@^1.5.1: require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve@^1.0.0, resolve@^1.10.0, resolve@^1.22.4: version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: is-core-module "^2.13.0" @@ -3586,7 +3586,7 @@ resolve@^1.0.0, resolve@^1.10.0, resolve@^1.22.4: restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" @@ -3594,52 +3594,52 @@ restore-cursor@^3.1.0: reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfdc@^1.3.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz" integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== rimraf@^2.6.1: version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" rimraf@^5.0.1, rimraf@^5.0.5: version "5.0.5" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz" integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== dependencies: glob "^10.3.7" run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" rxjs@^7.5.1: version "7.8.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" safe-array-concat@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz" integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== dependencies: call-bind "^1.0.5" @@ -3649,17 +3649,17 @@ safe-array-concat@^1.0.1: safe-buffer@5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex-test@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.2.tgz#3ba32bdb3ea35f940ee87e5087c60ee786c3f6c5" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz" integrity sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ== dependencies: call-bind "^1.0.5" @@ -3668,12 +3668,12 @@ safe-regex-test@^1.0.0: safe-stable-stringify@^2.3.1: version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz" integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== "safer-buffer@>= 2.1.2 < 3": version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== schema-dts@^1.1.2: @@ -3683,34 +3683,34 @@ schema-dts@^1.1.2: secure-json-parse@^2.4.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" + resolved "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz" integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== semver-compare@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== "semver@2 || 3 || 4 || 5", semver@^5.5.0: version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@^6.3.1: version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.5.3, semver@^7.5.4: version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" send@0.18.0: version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" @@ -3729,14 +3729,14 @@ send@0.18.0: serialize-javascript@6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" serve-static@1.15.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" @@ -3746,7 +3746,7 @@ serve-static@1.15.0: set-function-length@^1.1.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.0.tgz#2f81dc6c16c7059bda5ab7c82c11f03a515ed8e1" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz" integrity sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w== dependencies: define-data-property "^1.1.1" @@ -3757,7 +3757,7 @@ set-function-length@^1.1.1: set-function-name@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== dependencies: define-data-property "^1.0.1" @@ -3771,41 +3771,41 @@ setimmediate@^1.0.5: setprototypeof@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== shebang-command@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== side-channel@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: call-bind "^1.0.0" @@ -3814,29 +3814,29 @@ side-channel@^1.0.4: signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== signal-exit@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== simple-update-notifier@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" + resolved "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz" integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== dependencies: semver "^7.5.3" slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== slice-ansi@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: ansi-styles "^4.0.0" @@ -3845,7 +3845,7 @@ slice-ansi@^3.0.0: slice-ansi@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: ansi-styles "^4.0.0" @@ -3854,14 +3854,14 @@ slice-ansi@^4.0.0: sonic-boom@^3.0.0, sonic-boom@^3.7.0: version "3.8.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.8.0.tgz#e442c5c23165df897d77c3c14ef3ca40dec66a66" + resolved "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.0.tgz" integrity sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA== dependencies: atomic-sleep "^1.0.0" source-map-support@^0.5.12: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" @@ -3869,12 +3869,12 @@ source-map-support@^0.5.12: source-map@^0.6.0: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spdx-correct@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" @@ -3882,12 +3882,12 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz#c07a4ede25b16e4f78e6707bbd84b15a45c19c1b" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz" integrity sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw== spdx-expression-parse@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" @@ -3895,34 +3895,34 @@ spdx-expression-parse@^3.0.0: spdx-license-ids@^3.0.0: version "3.0.16" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz" integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== split2@^4.0.0, split2@^4.1.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== statuses@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== stop-iteration-iterator@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== dependencies: internal-slot "^1.0.4" string-argv@0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -3931,7 +3931,7 @@ string-argv@0.3.1: string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: eastasianwidth "^0.2.0" @@ -3940,7 +3940,7 @@ string-width@^5.0.1, string-width@^5.1.2: string.prototype.padend@^3.0.0: version "3.1.5" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz#311ef3a4e3c557dd999cdf88fbdde223f2ac0f95" + resolved "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz" integrity sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA== dependencies: call-bind "^1.0.2" @@ -3949,7 +3949,7 @@ string.prototype.padend@^3.0.0: string.prototype.trim@^1.2.8: version "1.2.8" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz" integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" @@ -3958,7 +3958,7 @@ string.prototype.trim@^1.2.8: string.prototype.trimend@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz" integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" @@ -3967,7 +3967,7 @@ string.prototype.trimend@^1.0.7: string.prototype.trimstart@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz" integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" @@ -3976,14 +3976,14 @@ string.prototype.trimstart@^1.0.7: string_decoder@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" stringify-object@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== dependencies: get-own-enumerable-property-symbols "^3.0.0" @@ -3992,67 +3992,67 @@ stringify-object@^3.3.0: "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-ansi@^7.0.1: version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: ansi-regex "^6.0.1" strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-json-comments@3.1.1, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strip-json-comments@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== supports-color@8.1.1: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== synckit@^0.8.6: version "0.8.8" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" + resolved "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz" integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== dependencies: "@pkgr/core" "^0.1.0" @@ -4060,58 +4060,58 @@ synckit@^0.8.6: text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== thread-stream@^2.0.0: version "2.4.1" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.4.1.tgz#6d588b14f0546e59d3f306614f044bc01ce43351" + resolved "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz" integrity sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg== dependencies: real-require "^0.2.0" through@^2.3.8: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== tiny-typed-emitter@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" + resolved "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz" integrity sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" toidentifier@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== touch@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + resolved "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz" integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== dependencies: nopt "~1.0.10" tree-kill@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== ts-api-utils@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz" integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== ts-node-dev@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-2.0.0.tgz#bdd53e17ab3b5d822ef519928dc6b4a7e0f13065" + resolved "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz" integrity sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w== dependencies: chokidar "^3.5.1" @@ -4127,7 +4127,7 @@ ts-node-dev@^2.0.0: ts-node@10.9.1: version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0" @@ -4146,7 +4146,7 @@ ts-node@10.9.1: ts-node@^10.4.0, ts-node@^10.9.1: version "10.9.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== dependencies: "@cspotcode/source-map-support" "^0.8.0" @@ -4165,7 +4165,7 @@ ts-node@^10.4.0, ts-node@^10.9.1: tsconfig-paths@^3.15.0: version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz" integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" @@ -4175,7 +4175,7 @@ tsconfig-paths@^3.15.0: tsconfig@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" + resolved "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz" integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== dependencies: "@types/strip-bom" "^3.0.0" @@ -4185,34 +4185,34 @@ tsconfig@^7.0.0: tslib@^2.1.0, tslib@^2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-detect@^4.0.0, type-detect@^4.0.5: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.21.3: version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== type-is@~1.6.18: version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" @@ -4220,7 +4220,7 @@ type-is@~1.6.18: typed-array-buffer@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== dependencies: call-bind "^1.0.2" @@ -4229,7 +4229,7 @@ typed-array-buffer@^1.0.0: typed-array-byte-length@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== dependencies: call-bind "^1.0.2" @@ -4239,7 +4239,7 @@ typed-array-byte-length@^1.0.0: typed-array-byte-offset@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== dependencies: available-typed-arrays "^1.0.5" @@ -4250,7 +4250,7 @@ typed-array-byte-offset@^1.0.0: typed-array-length@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== dependencies: call-bind "^1.0.2" @@ -4259,12 +4259,12 @@ typed-array-length@^1.0.4: typescript@5.1.6: version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz" integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== unbox-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: call-bind "^1.0.2" @@ -4274,51 +4274,51 @@ unbox-primitive@^1.0.2: undefsafe@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" + resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== undici-types@~5.26.4: version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== undici@^5.21.2: - version "5.28.2" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.2.tgz#fea200eac65fc7ecaff80a023d1a0543423b4c91" - integrity sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w== + version "5.28.4" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068" + integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== dependencies: "@fastify/busboy" "^2.0.0" unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== uuid@^9.0.0, uuid@^9.0.1: version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== v8-compile-cache-lib@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== validate-npm-package-license@^3.0.1: version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" @@ -4326,17 +4326,17 @@ validate-npm-package-license@^3.0.1: vary@^1, vary@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== web-streams-polyfill@^3.0.3: - version "3.3.2" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.2.tgz#32e26522e05128203a7de59519be3c648004343b" - integrity sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ== + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== which-boxed-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: is-bigint "^1.0.1" @@ -4347,7 +4347,7 @@ which-boxed-primitive@^1.0.2: which-collection@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== dependencies: is-map "^2.0.1" @@ -4357,7 +4357,7 @@ which-collection@^1.0.1: which-typed-array@^1.1.11, which-typed-array@^1.1.13: version "1.1.13" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz" integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" @@ -4368,26 +4368,26 @@ which-typed-array@^1.1.11, which-typed-array@^1.1.13: which@^1.2.9: version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" which@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" workerpool@6.2.1: version "6.2.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -4396,7 +4396,7 @@ workerpool@6.2.1: wrap-ansi@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: ansi-styles "^4.0.0" @@ -4405,7 +4405,7 @@ wrap-ansi@^6.2.0: wrap-ansi@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: ansi-styles "^6.1.0" @@ -4414,52 +4414,52 @@ wrap-ansi@^8.1.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== ws@^8.14.2, ws@^8.7.0: version "8.16.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" + resolved "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz" integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== xstate@^4.37.0: version "4.38.3" - resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.38.3.tgz#4e15e7ad3aa0ca1eea2010548a5379966d8f1075" + resolved "https://registry.npmjs.org/xstate/-/xstate-4.38.3.tgz" integrity sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw== xtend@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^1.10.0: version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yargs-parser@20.2.4: version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== yargs-parser@^20.2.2: version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs-unparser@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: camelcase "^6.0.0" @@ -4469,7 +4469,7 @@ yargs-unparser@2.0.0: yargs@16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -4482,15 +4482,15 @@ yargs@16.2.0: yn@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== zod@^3.22.4: version "3.22.4" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" + resolved "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz" integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== diff --git a/desci-server/.gitignore b/desci-server/.gitignore index cff213f0a..e9b57f85c 100755 --- a/desci-server/.gitignore +++ b/desci-server/.gitignore @@ -15,4 +15,4 @@ server.log repo-tmp -queries.sql \ No newline at end of file +queries.sql diff --git a/desci-server/Makefile b/desci-server/Makefile index 7047abba4..2896cde1f 100644 --- a/desci-server/Makefile +++ b/desci-server/Makefile @@ -1,7 +1,7 @@ .PHONY: install clean install: - yarn --frozen-lockfile + yarn --ignore-engines --frozen-lockfile clean: rm -rf node_modules diff --git a/desci-server/kubernetes/deployment_dev.yaml b/desci-server/kubernetes/deployment_dev.yaml index 4349fc742..3c083523b 100644 --- a/desci-server/kubernetes/deployment_dev.yaml +++ b/desci-server/kubernetes/deployment_dev.yaml @@ -41,6 +41,7 @@ spec: export SESSION_KEY={{ .Data.SESSION_KEY }} export COOKIE_DOMAIN={{ .Data.COOKIE_DOMAIN }} export ORCID_API_DOMAIN={{ .Data.ORCID_API_DOMAIN }} + export DPID_URL_OVERRIDE={{ .Data.DPID_URL_OVERRIDE }} export ORCID_CLIENT_ID={{ .Data.ORCID_CLIENT_ID }} export ORCID_CLIENT_SECRET={{ .Data.ORCID_CLIENT_SECRET }} export ARWEAVE_ENABLED=0 @@ -62,6 +63,7 @@ spec: export AWS_S3_BUCKET_REGION={{ .Data.AWS_S3_BUCKET_REGION }} export THEGRAPH_API_URL={{ .Data.THEGRAPH_API_URL }} export HOT_WALLET_KEY={{ .Data.HOT_WALLET_KEY }} + export REGISTRY_OWNER_PKEY={{ .Data.REGISTRY_OWNER_PKEY }} export CSO_CLASSIFIER_API={{ .Data.CSO_CLASSIFIER_API }} export VSCODE_ACCESS_TOKEN={{ .Data.VSCODE_ACCESS_TOKEN }} export NODES_MEDIA_SERVER_URL={{ .Data.NODES_MEDIA_SERVER_URL }} @@ -78,6 +80,16 @@ spec: export IPFS_READ_ONLY_GATEWAY_SERVER_URL={{ .Data.IPFS_READ_ONLY_GATEWAY_SERVER_URL }} export ETHEREUM_RPC_URL={{ .Data.ETHEREUM_RPC_URL }} export GOOGLE_CLIENT_ID={{ .Data.GOOGLE_CLIENT_ID }} + export DOI_PREFIX={{ .Data.DOI_PREFIX }} + export CROSSREF_EMAIL={{ .Data.CROSSREF_EMAIL }} + export CROSSREF_DOI_URL={{ .Data.CROSSREF_DOI_URL }} + export CROSSREF_LOGIN={{ .Data.CROSSREF_LOGIN }} + export CROSSREF_PASSWORD={{ .Data.CROSSREF_PASSWORD }} + export CROSSREF_METADATA_API={{ .Data.CROSSREF_METADATA_API }} + export CROSSREF_ADMIN_API={{ .Data.CROSSREF_ADMIN_API }} + export CROSSREF_NOTIFY_ENDPOINT={{ .Data.CROSSREF_NOTIFY_ENDPOINT }} + export AUTOMATED_METADATA_API="{{ .Data.AUTOMATED_METADATA_API }}" + export AUTOMATED_METADATA_API_KEY="{{ .Data.AUTOMATED_METADATA_API_KEY }}" export DEBUG_TEST=0; echo "appfinish"; {{- end -}} diff --git a/desci-server/kubernetes/deployment_prod.yaml b/desci-server/kubernetes/deployment_prod.yaml index 8cc357a22..85cf47764 100755 --- a/desci-server/kubernetes/deployment_prod.yaml +++ b/desci-server/kubernetes/deployment_prod.yaml @@ -43,6 +43,7 @@ spec: export ORCID_API_DOMAIN={{ .Data.ORCID_API_DOMAIN }} export ORCID_CLIENT_ID={{ .Data.ORCID_CLIENT_ID }} export ORCID_CLIENT_SECRET={{ .Data.ORCID_CLIENT_SECRET }} + export DPID_URL_OVERRIDE={{ .Data.DPID_URL_OVERRIDE }} export ARWEAVE_ENABLED=0 export ARWEAVE_HOST= export ARWEAVE_PORT=1984 @@ -62,6 +63,7 @@ spec: export AWS_S3_BUCKET_REGION={{ .Data.AWS_S3_BUCKET_REGION }} export THEGRAPH_API_URL={{ .Data.THEGRAPH_API_URL }} export HOT_WALLET_KEY={{ .Data.HOT_WALLET_KEY }} + export REGISTRY_OWNER_PKEY={{ .Data.REGISTRY_OWNER_PKEY }} export CSO_CLASSIFIER_API={{ .Data.CSO_CLASSIFIER_API }} export VSCODE_ACCESS_TOKEN={{ .Data.VSCODE_ACCESS_TOKEN }} export NODES_MEDIA_SERVER_URL={{ .Data.NODES_MEDIA_SERVER_URL }} @@ -78,6 +80,16 @@ spec: export IPFS_READ_ONLY_GATEWAY_SERVER_URL={{ .Data.IPFS_READ_ONLY_GATEWAY_SERVER_URL }} export ETHEREUM_RPC_URL={{ .Data.ETHEREUM_RPC_URL }} export GOOGLE_CLIENT_ID={{ .Data.GOOGLE_CLIENT_ID }} + export DOI_PREFIX={{ .Data.DOI_PREFIX }} + export CROSSREF_EMAIL={{ .Data.CROSSREF_EMAIL }} + export CROSSREF_DOI_URL={{ .Data.CROSSREF_DOI_URL }} + export CROSSREF_LOGIN={{ .Data.CROSSREF_LOGIN }} + export CROSSREF_PASSWORD={{ .Data.CROSSREF_PASSWORD }} + export CROSSREF_METADATA_API={{ .Data.CROSSREF_METADATA_API }} + export CROSSREF_ADMIN_API={{ .Data.CROSSREF_ADMIN_API }} + export CROSSREF_NOTIFY_ENDPOINT={{ .Data.CROSSREF_NOTIFY_ENDPOINT }} + export AUTOMATED_METADATA_API={{ .Data.AUTOMATED_METADATA_API }} + export AUTOMATED_METADATA_API_KEY={{ .Data.AUTOMATED_METADATA_API_KEY }} export IGNORE_LINE=0; export DEBUG_TEST=0; echo "appfinish"; diff --git a/desci-server/kubernetes/deployment_staging.yaml b/desci-server/kubernetes/deployment_staging.yaml index 10b77a57b..bd3591b8f 100644 --- a/desci-server/kubernetes/deployment_staging.yaml +++ b/desci-server/kubernetes/deployment_staging.yaml @@ -55,6 +55,7 @@ spec: export ORCID_API_DOMAIN={{ .Data.ORCID_API_DOMAIN }} export ORCID_CLIENT_ID={{ .Data.ORCID_CLIENT_ID }} export ORCID_CLIENT_SECRET={{ .Data.ORCID_CLIENT_SECRET }} + export DPID_URL_OVERRIDE={{ .Data.DPID_URL_OVERRIDE }} export ARWEAVE_ENABLED=0 export ARWEAVE_HOST= export ARWEAVE_PORT=1984 @@ -74,6 +75,7 @@ spec: export AWS_S3_BUCKET_REGION={{ .Data.AWS_S3_BUCKET_REGION }} export THEGRAPH_API_URL=http://graph-sepolia-prod.desci.com/subgraphs/name/nodes export HOT_WALLET_KEY={{ .Data.HOT_WALLET_KEY }} + export REGISTRY_OWNER_PKEY={{ .Data.REGISTRY_OWNER_PKEY }} export CSO_CLASSIFIER_API={{ .Data.CSO_CLASSIFIER_API }} export VSCODE_ACCESS_TOKEN={{ .Data.VSCODE_ACCESS_TOKEN }} export NODES_MEDIA_SERVER_URL={{ .Data.NODES_MEDIA_SERVER_URL }} @@ -90,6 +92,16 @@ spec: export IPFS_READ_ONLY_GATEWAY_SERVER_URL={{ .Data.IPFS_READ_ONLY_GATEWAY_SERVER_URL }} export ETHEREUM_RPC_URL={{ .Data.ETHEREUM_RPC_URL }} export GOOGLE_CLIENT_ID={{ .Data.GOOGLE_CLIENT_ID }} + export DOI_PREFIX={{ .Data.DOI_PREFIX }} + export CROSSREF_EMAIL={{ .Data.CROSSREF_EMAIL }} + export CROSSREF_DOI_URL={{ .Data.CROSSREF_DOI_URL }} + export CROSSREF_LOGIN={{ .Data.CROSSREF_LOGIN }} + export CROSSREF_PASSWORD={{ .Data.CROSSREF_PASSWORD }} + export CROSSREF_METADATA_API={{ .Data.CROSSREF_METADATA_API }} + export CROSSREF_ADMIN_API={{ .Data.CROSSREF_ADMIN_API }} + export CROSSREF_NOTIFY_ENDPOINT={{ .Data.CROSSREF_NOTIFY_ENDPOINT }} + export AUTOMATED_METADATA_API={{ .Data.AUTOMATED_METADATA_API }} + export AUTOMATED_METADATA_API_KEY={{ .Data.AUTOMATED_METADATA_API_KEY }} export DEBUG_TEST=0; echo "appfinish"; {{- end -}} diff --git a/desci-server/kubernetes/grobid_dev.yaml b/desci-server/kubernetes/grobid_dev.yaml new file mode 100644 index 000000000..949163d65 --- /dev/null +++ b/desci-server/kubernetes/grobid_dev.yaml @@ -0,0 +1,107 @@ +apiVersion: v1 +kind: Service +metadata: + name: grobid-dev +spec: + selector: + App: GrobidDev + ports: + - port: 80 + targetPort: 8070 + type: LoadBalancer +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: grobid-dev + labels: + App: GrobidDev +spec: + replicas: 2 + revisionHistoryLimit: 8 + selector: + matchLabels: + App: GrobidDev + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + # annotations: + # vault.hashicorp.com/agent-inject: 'true' + # vault.hashicorp.com/agent-inject-status: 'update' + # vault.hashicorp.com/role: app-vault-reader + # vault.hashicorp.com/agent-inject-secret-config: secrets/desci-server/staging/db + # vault.hashicorp.com/agent-inject-template-config: | + # {{- with secret "secrets/automating-metadata/dev" -}} + # export OPENAI_API_KEY={{ .Data.OPENAI_API_KEY }} + # export crmailto={{ .Data.crmailto }} + # export pyalexemail={{ .Data.pyalexemail }} + # export AM_API_KEY={{ .Data.AM_API_KEY }} + # export IPFS_GATEWAY_URL={{ .Data.IPFS_GATEWAY_URL }} + + # echo "dbset"; + # {{- end -}} + labels: + App: GrobidDev + spec: + containers: + - image: lfoppiano/grobid:0.8.0 + name: grobid-dev + ports: + - containerPort: 8070 + name: server-api + env: + - name: JAVA_OPTS + value: "-Xmx2G -Xms2G" + resources: + limits: + cpu: '1.0' + memory: 5Gi + requests: + cpu: '0.8' + memory: 5Gi + # restart pod after failureThreshold*periodSeconds total seconds + livenessProbe: + httpGet: + path: /api/isalive + port: server-api + failureThreshold: 80 + periodSeconds: 3 + # temporarily stop sending traffic to pod after failureThreshold*periodSeconds total seconds + readinessProbe: + httpGet: + path: /api/isalive + port: server-api + failureThreshold: 3 + periodSeconds: 1 + # wait for pod to start for failureThreshold*periodSeconds total seconds + startupProbe: + httpGet: + path: /api/isalive + port: server-api + failureThreshold: 200 + periodSeconds: 1 + # serviceAccountName: 'vault-auth' +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: grobid-dev-ingress + annotations: + nginx.ingress.kubernetes.io/rewrite-target: / + nginx.ingress.kubernetes.io/proxy-body-size: "100m" # Allow file uploads up to 100MB +spec: + rules: + - host: grobid-dev.desci.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: grobid-dev + port: + number: 80 diff --git a/desci-server/nodemon.json b/desci-server/nodemon.json index b343dff99..af589955a 100644 --- a/desci-server/nodemon.json +++ b/desci-server/nodemon.json @@ -7,7 +7,7 @@ "log/server.log" ], "verbose": true, - "exec": "node -r ts-node/register --inspect=0.0.0.0", - "delay": 300, + "exec": "node -r ts-node/register --inspect=0.0.0.0:9228", + "delay": 750, "signal": "SIGTERM" } \ No newline at end of file diff --git a/desci-server/package.json b/desci-server/package.json index 86eb086b5..caa207b5c 100755 --- a/desci-server/package.json +++ b/desci-server/package.json @@ -38,7 +38,8 @@ "prettier": "prettier --config .prettierrc --write './**/*.{ts,js,css,scss,json,md}'", "test:destructive": "NODE_OPTIONS=\"--experimental-specifier-resolution=node --loader=ts-node/esm\" mocha --colors --require ts-node/register 'test/integration/**/*.test.ts' --timeout 20000 --exit", "test:destructive:debug": "yarn test:destructive --inspect=0.0.0.0:9227", - "test": "yarn docker:test; export EXIT=$(echo $?); docker-compose --file ../docker-compose.test.yml --compatibility down; exit $EXIT", + "test:check": "npx tsc --project ./tsconfig-test.json", + "test": "yarn test:check && yarn docker:test; export EXIT=$(echo $?); docker-compose --file ../docker-compose.test.yml --compatibility down; exit $EXIT", "coverage:destructive": "nyc --all --parser-plugins='[\"importAssertions\"]' -r lcov -e .ts -x \"*.test.ts\" npm run test:destructive", "coverage:destructive:debug": "nyc --all --parser-plugins='[\"importAssertions\"]' -r lcov -e .ts -x \"*.test.ts\" npm run test:destructive:debug", "commit": "git-cz", @@ -55,7 +56,9 @@ "@automerge/automerge-repo": "^1.0.19", "@automerge/automerge-repo-network-websocket": "^1.0.19", "@aws-sdk/client-s3": "^3.537.0", - "@desci-labs/desci-models": "link:./desci-models", + "@desci-labs/desci-codex-lib": "^1.1.7", + "@desci-labs/desci-contracts": "^0.2.6", + "@desci-labs/desci-models": "0.2.9", "@honeycombio/opentelemetry-node": "^0.3.2", "@ipld/dag-pb": "^4.0.0", "@opentelemetry/api": "^1.8.0", @@ -105,6 +108,7 @@ "react-email": "2.1.0", "redis": "^4.6.7", "reflect-metadata": "^0.1.13", + "remixml": "^7.0.5", "request": "^2.88.2", "rimraf": "^5.0.1", "short-unique-id": "^4.4.4", diff --git a/desci-server/postman/DeSci Nodes Server.postman_collection.json b/desci-server/postman/DeSci Nodes Server.postman_collection.json new file mode 100644 index 000000000..d05c10799 --- /dev/null +++ b/desci-server/postman/DeSci Nodes Server.postman_collection.json @@ -0,0 +1,309 @@ +{ + "info": { + "_postman_id": "f3499db3-0bee-418e-8229-3af4d9f4719f", + "name": "DeSci Nodes Server", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "10483110" + }, + "item": [ + { + "name": "Start Email Login (Magic Code)", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"email\": \"sina@desci.com\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{server_url}}/v1/auth/magic", + "host": [ + "{{server_url}}" + ], + "path": [ + "v1", + "auth", + "magic" + ] + } + }, + "response": [] + }, + { + "name": "Complete Email Login (Magic Code)", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"email\": \"sina@desci.com\",\r\n \"code\": \"353876\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{server_url}}/v1/auth/magic", + "host": [ + "{{server_url}}" + ], + "path": [ + "v1", + "auth", + "magic" + ] + } + }, + "response": [] + }, + { + "name": "Create Node Draft", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"title\": \"Test123\",\r\n \"links\": []\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{server_url}}/v1/nodes/createDraft", + "host": [ + "{{server_url}}" + ], + "path": [ + "v1", + "nodes", + "createDraft" + ] + } + }, + "response": [] + }, + { + "name": "Get Nodes", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{auth_jwt_token}}", + "type": "text" + } + ], + "url": { + "raw": "{{server_url}}/v1/nodes/access/", + "host": [ + "{{server_url}}" + ], + "path": [ + "v1", + "nodes", + "access", + "" + ] + } + }, + "response": [] + }, + { + "name": "Get Nodes Page 2", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{auth_jwt_token}}", + "type": "text" + } + ], + "url": { + "raw": "{{server_url}}/v1/nodes?g=http://localhost:5001&page=2", + "host": [ + "{{server_url}}" + ], + "path": [ + "v1", + "nodes" + ], + "query": [ + { + "key": "g", + "value": "http://localhost:5001" + }, + { + "key": "page", + "value": "2" + } + ] + } + }, + "response": [] + }, + { + "name": "Get Published Nodes", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{auth_jwt_token}}", + "type": "text" + } + ], + "url": { + "raw": "{{server_url}}/v1/nodes/published/list?g=http://localhost:5001", + "host": [ + "{{server_url}}" + ], + "path": [ + "v1", + "nodes", + "published", + "list" + ], + "query": [ + { + "key": "g", + "value": "http://localhost:5001" + } + ] + } + }, + "response": [] + }, + { + "name": "Search Node Titles", + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{server_url}}/v1/nodes/search/test", + "host": [ + "{{server_url}}" + ], + "path": [ + "v1", + "nodes", + "search", + "test" + ] + } + }, + "response": [] + }, + { + "name": "Get Node Stats", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{auth_jwt_token}}", + "type": "text" + } + ], + "url": { + "raw": "{{server_url}}/v1/nodes/stats", + "host": [ + "{{server_url}}" + ], + "path": [ + "v1", + "nodes", + "stats" + ] + } + }, + "response": [] + }, + { + "name": "Check Node Access", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{auth_jwt_token}}", + "type": "text" + } + ], + "url": { + "raw": "{{server_url}}/v1/nodes/access/GOcPwF6yNEyTemHzPmXXhINrx-dXMpfAMpUj-to-FMY", + "host": [ + "{{server_url}}" + ], + "path": [ + "v1", + "nodes", + "access", + "GOcPwF6yNEyTemHzPmXXhINrx-dXMpfAMpUj-to-FMY" + ] + } + }, + "response": [] + }, + { + "name": "Check if Published", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{auth_jwt_token}}", + "type": "text" + } + ], + "url": { + "raw": "{{server_url}}/v1/nodes/published/GOcPwF6yNEyTemHzPmXXhINrx-dXMpfAMpUj-to-FMY", + "host": [ + "{{server_url}}" + ], + "path": [ + "v1", + "nodes", + "published", + "GOcPwF6yNEyTemHzPmXXhINrx-dXMpfAMpUj-to-FMY" + ] + } + }, + "response": [] + }, + { + "name": "Get Published Node Stats", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{auth_jwt_token}}", + "type": "text" + } + ], + "url": { + "raw": "{{server_url}}/v1/nodes/stats/published", + "host": [ + "{{server_url}}" + ], + "path": [ + "v1", + "nodes", + "stats", + "published" + ] + } + }, + "response": [] + } + ] +} \ No newline at end of file diff --git a/desci-server/postman/RESTful_API_Boilerplate.postman_collection.json b/desci-server/postman/RESTful_API_Boilerplate.postman_collection.json deleted file mode 100755 index 58c777c09..000000000 --- a/desci-server/postman/RESTful_API_Boilerplate.postman_collection.json +++ /dev/null @@ -1,365 +0,0 @@ -{ - "info": { - "_postman_id": "da0fe49f-e424-4b96-8f55-49f7db0583dc", - "name": "RESTful API Boilerplate", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" - }, - "item": [ - { - "name": "/auth", - "item": [ - { - "name": "/login", - "event": [ - { - "listen": "test", - "script": { - "id": "81ebd7f4-cc11-473a-a6b3-85b003f7222b", - "exec": [ - "var jsonData = JSON.parse(responseBody);", - "", - "postman.setEnvironmentVariable(\"token\", jsonData.data);" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/x-www-form-urlencoded" - }, - { - "key": "Accept-Language", - "value": "{{language}}", - "type": "text" - } - ], - "body": { - "mode": "urlencoded", - "urlencoded": [ - { - "key": "email", - "value": "admin@admin.com", - "type": "text" - }, - { - "key": "password", - "value": "pass1", - "type": "text" - } - ] - }, - "url": { - "raw": "{{baseUrl}}/login", - "host": ["{{baseUrl}}"], - "path": ["login"] - } - }, - "response": [] - }, - { - "name": "/register", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "value": "application/x-www-form-urlencoded", - "type": "text" - }, - { - "key": "Accept-Language", - "value": "{{language}}", - "type": "text" - } - ], - "body": { - "mode": "urlencoded", - "urlencoded": [ - { - "key": "email", - "value": "admin1@admin.com", - "type": "text" - }, - { - "key": "password", - "value": "admin", - "type": "text" - }, - { - "key": "passwordConfirm", - "value": "admin", - "type": "text" - } - ] - }, - "url": { - "raw": "{{baseUrl}}/register", - "host": ["{{baseUrl}}"], - "path": ["register"] - } - }, - "response": [] - }, - { - "name": "/change-password", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/x-www-form-urlencoded" - }, - { - "key": "Authorization", - "value": "{{token}}", - "type": "text" - }, - { - "key": "Accept-Language", - "value": "{{language}}", - "type": "text" - } - ], - "body": { - "mode": "urlencoded", - "urlencoded": [ - { - "key": "password", - "value": "admin", - "type": "text" - }, - { - "key": "passwordNew", - "value": "admin", - "type": "text" - }, - { - "key": "passwordConfirm", - "value": "admin", - "type": "text" - } - ] - }, - "url": { - "raw": "{{baseUrl}}/change-password", - "host": ["{{baseUrl}}"], - "path": ["change-password"] - } - }, - "response": [] - } - ], - "protocolProfileBehavior": {} - }, - { - "name": "/misc", - "item": [ - { - "name": "/change-language", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/x-www-form-urlencoded" - }, - { - "key": "Accept-Language", - "type": "text", - "value": "sl-SI" - } - ], - "body": { - "mode": "urlencoded", - "urlencoded": [ - { - "key": "language", - "value": "sl-SI", - "type": "text" - } - ] - }, - "url": { - "raw": "{{baseUrl}}/misc/change-language", - "host": ["{{baseUrl}}"], - "path": ["misc", "change-language"] - } - }, - "response": [] - } - ], - "protocolProfileBehavior": {} - }, - { - "name": "/users", - "item": [ - { - "name": "/", - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/x-www-form-urlencoded" - }, - { - "key": "Accept-Language", - "type": "text", - "value": "sl-SI" - }, - { - "key": "Authorization", - "value": "{{token}}", - "type": "text" - } - ], - "body": { - "mode": "urlencoded", - "urlencoded": [] - }, - "url": { - "raw": "{{baseUrl}}/users", - "host": ["{{baseUrl}}"], - "path": ["users"] - } - }, - "response": [] - }, - { - "name": "/:id", - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/x-www-form-urlencoded" - }, - { - "key": "Accept-Language", - "type": "text", - "value": "sl-SI" - }, - { - "key": "Authorization", - "type": "text", - "value": "{{token}}" - } - ], - "body": { - "mode": "urlencoded", - "urlencoded": [] - }, - "url": { - "raw": "{{baseUrl}}/users/3", - "host": ["{{baseUrl}}"], - "path": ["users", "3"] - } - }, - "response": [] - }, - { - "name": "/:id", - "request": { - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/x-www-form-urlencoded" - }, - { - "key": "Accept-Language", - "type": "text", - "value": "sl-SI" - }, - { - "key": "Authorization", - "type": "text", - "value": "{{token}}" - } - ], - "body": { - "mode": "urlencoded", - "urlencoded": [] - }, - "url": { - "raw": "{{baseUrl}}/users/9", - "host": ["{{baseUrl}}"], - "path": ["users", "9"] - } - }, - "response": [] - }, - { - "name": "/:id", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "type": "text", - "value": "application/x-www-form-urlencoded" - }, - { - "key": "Accept-Language", - "type": "text", - "value": "sl-SI" - }, - { - "key": "Authorization", - "type": "text", - "value": "{{token}}" - } - ], - "body": { - "mode": "urlencoded", - "urlencoded": [ - { - "key": "username", - "value": "Tyrion1", - "type": "text" - }, - { - "key": "name", - "value": "test name", - "type": "text" - } - ] - }, - "url": { - "raw": "{{baseUrl}}/users/5", - "host": ["{{baseUrl}}"], - "path": ["users", "5"] - } - }, - "response": [] - } - ], - "protocolProfileBehavior": {} - } - ], - "protocolProfileBehavior": {} -} diff --git a/desci-server/postman/RESTful_API_Boilerplate.postman_environment.json b/desci-server/postman/RESTful_API_Boilerplate.postman_environment.json deleted file mode 100755 index 570ebdefb..000000000 --- a/desci-server/postman/RESTful_API_Boilerplate.postman_environment.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "id": "a8df1c58-9c26-4452-a61e-0f0d2e865ee1", - "name": "RESTful API Boilerplate", - "values": [ - { - "key": "host", - "value": "http://localhost:5420", - "enabled": true - }, - { - "key": "baseUrl", - "value": "{{host}}", - "enabled": true - }, - { - "key": "language", - "value": "en", - "enabled": true - }, - { - "key": "token", - "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwibmFtZSI6IldhbHRlciBXaGl0ZSIsImVtYWlsIjoiYWRtaW5AYWRtaW4uY29tIiwicm9sZSI6IkFETUlOSVNUUkFUT1IiLCJjcmVhdGVkX2F0IjoiMjAyMC0wNi0xM1QwODoyNjoxNS41MjZaIiwiaWF0IjoxNTkyMTYxMjcwLCJleHAiOjE1OTIxNjIxNzB9.Fi-jszKGqt2plCqJj9jCM5x5l0KSQVkuQu9-qqElMug", - "enabled": true - } - ], - "_postman_variable_scope": "environment", - "_postman_exported_at": "2020-06-14T19:04:35.409Z", - "_postman_exported_using": "Postman/7.26.0" -} diff --git a/desci-server/prisma/migrations/20240508094116_add_distribution_pdfs_table/migration.sql b/desci-server/prisma/migrations/20240508094116_add_distribution_pdfs_table/migration.sql new file mode 100644 index 000000000..bcb77ac4c --- /dev/null +++ b/desci-server/prisma/migrations/20240508094116_add_distribution_pdfs_table/migration.sql @@ -0,0 +1,15 @@ +-- CreateTable +CREATE TABLE "DistributionPdfs" ( + "id" SERIAL NOT NULL, + "originalPdfCid" TEXT NOT NULL, + "nodeUuid" TEXT NOT NULL, + "distPdfCid" TEXT NOT NULL, + + CONSTRAINT "DistributionPdfs_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "DistributionPdfs_nodeUuid_originalPdfCid_key" ON "DistributionPdfs"("nodeUuid", "originalPdfCid"); + +-- AddForeignKey +ALTER TABLE "DistributionPdfs" ADD CONSTRAINT "DistributionPdfs_nodeUuid_fkey" FOREIGN KEY ("nodeUuid") REFERENCES "Node"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/desci-server/prisma/migrations/20240524095750_add_manifest_cid_dist_pdfs_table/migration.sql b/desci-server/prisma/migrations/20240524095750_add_manifest_cid_dist_pdfs_table/migration.sql new file mode 100644 index 000000000..2bb111eaa --- /dev/null +++ b/desci-server/prisma/migrations/20240524095750_add_manifest_cid_dist_pdfs_table/migration.sql @@ -0,0 +1,15 @@ +/* + Warnings: + + - A unique constraint covering the columns `[nodeUuid,originalPdfCid,manifestCid]` on the table `DistributionPdfs` will be added. If there are existing duplicate values, this will fail. + - Added the required column `manifestCid` to the `DistributionPdfs` table without a default value. This is not possible if the table is not empty. + +*/ +-- DropIndex +DROP INDEX "DistributionPdfs_nodeUuid_originalPdfCid_key"; + +-- AlterTable +ALTER TABLE "DistributionPdfs" ADD COLUMN "manifestCid" TEXT NOT NULL; + +-- CreateIndex +CREATE UNIQUE INDEX "DistributionPdfs_nodeUuid_originalPdfCid_manifestCid_key" ON "DistributionPdfs"("nodeUuid", "originalPdfCid", "manifestCid"); diff --git a/desci-server/prisma/migrations/20240531165246_add_pdf_preview_cache_table/migration.sql b/desci-server/prisma/migrations/20240531165246_add_pdf_preview_cache_table/migration.sql new file mode 100644 index 000000000..382a66ac5 --- /dev/null +++ b/desci-server/prisma/migrations/20240531165246_add_pdf_preview_cache_table/migration.sql @@ -0,0 +1,22 @@ +-- AlterTable +ALTER TABLE "DistributionPdfs" ADD COLUMN "contentPagePreviewCid" TEXT, +ADD COLUMN "frontmatterPagePreviewCid" TEXT; + +-- CreateTable +CREATE TABLE "PdfPreviews" ( + "id" SERIAL NOT NULL, + "nodeUuid" TEXT NOT NULL, + "pdfCid" TEXT NOT NULL, + "previewMap" JSONB NOT NULL, + + CONSTRAINT "PdfPreviews_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "PdfPreviews_pdfCid_key" ON "PdfPreviews"("pdfCid"); + +-- CreateIndex +CREATE UNIQUE INDEX "PdfPreviews_nodeUuid_pdfCid_key" ON "PdfPreviews"("nodeUuid", "pdfCid"); + +-- AddForeignKey +ALTER TABLE "PdfPreviews" ADD CONSTRAINT "PdfPreviews_nodeUuid_fkey" FOREIGN KEY ("nodeUuid") REFERENCES "Node"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/desci-server/prisma/migrations/20240604123832_add_doi_records_table/migration.sql b/desci-server/prisma/migrations/20240604123832_add_doi_records_table/migration.sql new file mode 100644 index 000000000..3e12b474e --- /dev/null +++ b/desci-server/prisma/migrations/20240604123832_add_doi_records_table/migration.sql @@ -0,0 +1,20 @@ +-- CreateTable +CREATE TABLE "DoiRecord" ( + "id" SERIAL NOT NULL, + "doi" TEXT NOT NULL, + "dpid" TEXT NOT NULL, + "uuid" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "DoiRecord_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "DoiRecord_doi_key" ON "DoiRecord"("doi"); + +-- CreateIndex +CREATE UNIQUE INDEX "DoiRecord_dpid_key" ON "DoiRecord"("dpid"); + +-- AddForeignKey +ALTER TABLE "DoiRecord" ADD CONSTRAINT "DoiRecord_uuid_fkey" FOREIGN KEY ("uuid") REFERENCES "Node"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/desci-server/prisma/migrations/20240606134228_add_claim_attestation_action_type/migration.sql b/desci-server/prisma/migrations/20240606134228_add_claim_attestation_action_type/migration.sql new file mode 100644 index 000000000..caf1df15e --- /dev/null +++ b/desci-server/prisma/migrations/20240606134228_add_claim_attestation_action_type/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "ActionType" ADD VALUE 'CLAIM_ATTESTATION'; diff --git a/desci-server/prisma/migrations/20240606134308_add_revoke_claim_action_type/migration.sql b/desci-server/prisma/migrations/20240606134308_add_revoke_claim_action_type/migration.sql new file mode 100644 index 000000000..5d7f583cc --- /dev/null +++ b/desci-server/prisma/migrations/20240606134308_add_revoke_claim_action_type/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "ActionType" ADD VALUE 'REVOKE_CLAIM'; diff --git a/desci-server/prisma/migrations/20240606134336_add_claim_entry_attestations_action_type/migration.sql b/desci-server/prisma/migrations/20240606134336_add_claim_entry_attestations_action_type/migration.sql new file mode 100644 index 000000000..fe813c54d --- /dev/null +++ b/desci-server/prisma/migrations/20240606134336_add_claim_entry_attestations_action_type/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "ActionType" ADD VALUE 'CLAIM_ENTRY_ATTESTATIONS'; diff --git a/desci-server/prisma/migrations/20240606134406_add_comment_action_type/migration.sql b/desci-server/prisma/migrations/20240606134406_add_comment_action_type/migration.sql new file mode 100644 index 000000000..e7826777f --- /dev/null +++ b/desci-server/prisma/migrations/20240606134406_add_comment_action_type/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "ActionType" ADD VALUE 'ADD_COMMENT'; diff --git a/desci-server/prisma/migrations/20240606134439_remove_comment_action_type/migration.sql b/desci-server/prisma/migrations/20240606134439_remove_comment_action_type/migration.sql new file mode 100644 index 000000000..4f61893a5 --- /dev/null +++ b/desci-server/prisma/migrations/20240606134439_remove_comment_action_type/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "ActionType" ADD VALUE 'REMOVE_COMMENT'; diff --git a/desci-server/prisma/migrations/20240606134558_add_verify_attestation_action_type/migration.sql b/desci-server/prisma/migrations/20240606134558_add_verify_attestation_action_type/migration.sql new file mode 100644 index 000000000..a5d15900e --- /dev/null +++ b/desci-server/prisma/migrations/20240606134558_add_verify_attestation_action_type/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "ActionType" ADD VALUE 'VERIFY_ATTESTATION'; diff --git a/desci-server/prisma/migrations/20240606134622_add_unverify_attestation_action_type/migration.sql b/desci-server/prisma/migrations/20240606134622_add_unverify_attestation_action_type/migration.sql new file mode 100644 index 000000000..4c8f25e2c --- /dev/null +++ b/desci-server/prisma/migrations/20240606134622_add_unverify_attestation_action_type/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "ActionType" ADD VALUE 'UNVERIFY_ATTESTATION'; diff --git a/desci-server/prisma/migrations/20240606134643_add_update_orcid_record_action_type/migration.sql b/desci-server/prisma/migrations/20240606134643_add_update_orcid_record_action_type/migration.sql new file mode 100644 index 000000000..a722fc938 --- /dev/null +++ b/desci-server/prisma/migrations/20240606134643_add_update_orcid_record_action_type/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "ActionType" ADD VALUE 'UPDATE_ORCID_RECORD'; diff --git a/desci-server/prisma/migrations/20240606134717_add_remove_orcid_work_record_action_type/migration.sql b/desci-server/prisma/migrations/20240606134717_add_remove_orcid_work_record_action_type/migration.sql new file mode 100644 index 000000000..767e640cc --- /dev/null +++ b/desci-server/prisma/migrations/20240606134717_add_remove_orcid_work_record_action_type/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "ActionType" ADD VALUE 'REMOVE_ORCID_WORK_RECORD'; diff --git a/desci-server/prisma/migrations/20240606134743_add_orcid_api_error_action_type/migration.sql b/desci-server/prisma/migrations/20240606134743_add_orcid_api_error_action_type/migration.sql new file mode 100644 index 000000000..896bba4d1 --- /dev/null +++ b/desci-server/prisma/migrations/20240606134743_add_orcid_api_error_action_type/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "ActionType" ADD VALUE 'ORCID_API_ERROR'; diff --git a/desci-server/prisma/migrations/20240612181102_node_attestation_dpid_optional/migration.sql b/desci-server/prisma/migrations/20240612181102_node_attestation_dpid_optional/migration.sql new file mode 100644 index 000000000..69548293f --- /dev/null +++ b/desci-server/prisma/migrations/20240612181102_node_attestation_dpid_optional/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "NodeAttestation" ALTER COLUMN "nodeDpid10" DROP NOT NULL; diff --git a/desci-server/prisma/migrations/20240613093337_add_dpid_alias_field_to_node/migration.sql b/desci-server/prisma/migrations/20240613093337_add_dpid_alias_field_to_node/migration.sql new file mode 100644 index 000000000..16ba436e1 --- /dev/null +++ b/desci-server/prisma/migrations/20240613093337_add_dpid_alias_field_to_node/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Node" ADD COLUMN "dpidAlias" INTEGER; diff --git a/desci-server/prisma/migrations/20240619091530_add_doi_submission_queue/migration.sql b/desci-server/prisma/migrations/20240619091530_add_doi_submission_queue/migration.sql new file mode 100644 index 000000000..659866a38 --- /dev/null +++ b/desci-server/prisma/migrations/20240619091530_add_doi_submission_queue/migration.sql @@ -0,0 +1,21 @@ +-- CreateEnum +CREATE TYPE "DoiStatus" AS ENUM ('PENDING', 'FAILED', 'SUCCESS'); + +-- CreateTable +CREATE TABLE "DoiSubmissionQueue" ( + "id" SERIAL NOT NULL, + "batchId" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "doiRecordId" INTEGER NOT NULL, + "notification" JSONB, + "status" "DoiStatus" NOT NULL DEFAULT 'PENDING', + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "DoiSubmissionQueue_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "DoiSubmissionQueue_batchId_key" ON "DoiSubmissionQueue"("batchId"); + +-- AddForeignKey +ALTER TABLE "DoiSubmissionQueue" ADD CONSTRAINT "DoiSubmissionQueue_doiRecordId_fkey" FOREIGN KEY ("doiRecordId") REFERENCES "DoiRecord"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/desci-server/prisma/migrations/20240624161728_invites_sent_bool/migration.sql b/desci-server/prisma/migrations/20240624161728_invites_sent_bool/migration.sql new file mode 100644 index 000000000..30ace7973 --- /dev/null +++ b/desci-server/prisma/migrations/20240624161728_invites_sent_bool/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "NodeContribution" ADD COLUMN "inviteSent" BOOLEAN NOT NULL DEFAULT false; diff --git a/desci-server/prisma/migrations/20240703141325_add_dpid_unique_doi_uuid_to_submission_queue/migration.sql b/desci-server/prisma/migrations/20240703141325_add_dpid_unique_doi_uuid_to_submission_queue/migration.sql new file mode 100644 index 000000000..ba58b19ee --- /dev/null +++ b/desci-server/prisma/migrations/20240703141325_add_dpid_unique_doi_uuid_to_submission_queue/migration.sql @@ -0,0 +1,26 @@ +/* + Warnings: + + - A unique constraint covering the columns `[uniqueDoi]` on the table `DoiSubmissionQueue` will be added. If there are existing duplicate values, this will fail. + - Added the required column `dpid` to the `DoiSubmissionQueue` table without a default value. This is not possible if the table is not empty. + - Added the required column `uniqueDoi` to the `DoiSubmissionQueue` table without a default value. This is not possible if the table is not empty. + - Added the required column `uuid` to the `DoiSubmissionQueue` table without a default value. This is not possible if the table is not empty. + +*/ +-- DropForeignKey +ALTER TABLE "DoiSubmissionQueue" DROP CONSTRAINT "DoiSubmissionQueue_doiRecordId_fkey"; + +-- AlterTable +ALTER TABLE "DoiSubmissionQueue" ADD COLUMN "dpid" TEXT NOT NULL, +ADD COLUMN "uniqueDoi" TEXT NOT NULL, +ADD COLUMN "uuid" TEXT NOT NULL, +ALTER COLUMN "doiRecordId" DROP NOT NULL; + +-- CreateIndex +CREATE UNIQUE INDEX "DoiSubmissionQueue_uniqueDoi_key" ON "DoiSubmissionQueue"("uniqueDoi"); + +-- AddForeignKey +ALTER TABLE "DoiSubmissionQueue" ADD CONSTRAINT "DoiSubmissionQueue_doiRecordId_fkey" FOREIGN KEY ("doiRecordId") REFERENCES "DoiRecord"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DoiSubmissionQueue" ADD CONSTRAINT "DoiSubmissionQueue_uuid_fkey" FOREIGN KEY ("uuid") REFERENCES "Node"("uuid") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/desci-server/prisma/schema.prisma b/desci-server/prisma/schema.prisma index 790372d9d..4c4a09e07 100755 --- a/desci-server/prisma/schema.prisma +++ b/desci-server/prisma/schema.prisma @@ -43,6 +43,11 @@ model Node { NodeContribution NodeContribution[] PrivateShare PrivateShare[] OrcidPutCodes OrcidPutCodes[] + DistributionPdfs DistributionPdfs[] + PdfPreviews PdfPreviews[] + DoiRecord DoiRecord[] + dpidAlias Int? + DoiSubmissionQueue DoiSubmissionQueue[] @@index([ownerId]) @@index([uuid]) @@ -476,6 +481,31 @@ model NodeThumbnails { @@unique([nodeUuid, componentCid]) } +// PDFs generated in prepub flow +model DistributionPdfs { + id Int @id @default(autoincrement()) + originalPdfCid String + manifestCid String + nodeUuid String + distPdfCid String + contentPagePreviewCid String? + frontmatterPagePreviewCid String? + node Node @relation(fields: [nodeUuid], references: [uuid]) + + @@unique([nodeUuid, originalPdfCid, manifestCid]) +} + +// Preview images of distribution PDFs created in prepub flow (first and second pages) +model PdfPreviews { + id Int @id @default(autoincrement()) + nodeUuid String + pdfCid String @unique + previewMap Json + node Node @relation(fields: [nodeUuid], references: [uuid]) + + @@unique([nodeUuid, pdfCid]) +} + // The glue between a manifest contributor entry and a nodes profile model NodeContribution { id Int @id @default(autoincrement()) @@ -490,6 +520,7 @@ model NodeContribution { orcid String? deleted Boolean @default(false) deletedAt DateTime? + inviteSent Boolean @default(false) node Node @relation(fields: [nodeId], references: [id]) user User? @relation(fields: [userId], references: [id]) @@ -723,7 +754,7 @@ model NodeAttestation { community DesciCommunity @relation(fields: [desciCommunityId], references: [id]) claimedById Int claimedBy User @relation(fields: [claimedById], references: [id]) - nodeDpid10 String + nodeDpid10 String? nodeUuid String node Node @relation(fields: [nodeUuid], references: [uuid]) nodeVersion Int @@ -806,6 +837,33 @@ model OrcidPutCodes { @@unique([orcid, uuid, reference]) } +model DoiRecord { + id Int @id @default(autoincrement()) + doi String @unique + dpid String @unique + // add dpid or resource path the doi is registered for + uuid String + node Node @relation(fields: [uuid], references: [uuid]) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + DoiSubmission DoiSubmissionQueue[] +} + +model DoiSubmissionQueue { + id Int @id @default(autoincrement()) + batchId String @unique + createdAt DateTime @default(now()) + dpid String + doiRecordId Int? + doi DoiRecord? @relation(fields: [doiRecordId], references: [id]) + notification Json? + status DoiStatus @default(PENDING) + uniqueDoi String @unique + uuid String + node Node @relation(fields: [uuid], references: [uuid]) + updatedAt DateTime @updatedAt +} + enum ORCIDRecord { WORK QUALIFICATION @@ -869,6 +927,17 @@ enum ActionType { NEW_REFERRAL ACCEPTED_REFERRAL USER_PUBLISH_CONSENT + CLAIM_ATTESTATION + REVOKE_CLAIM + CLAIM_ENTRY_ATTESTATIONS + ADD_COMMENT + REMOVE_COMMENT + VERIFY_ATTESTATION + UNVERIFY_ATTESTATION + UPDATE_ORCID_RECORD + REMOVE_ORCID_WORK_RECORD + ORCID_API_ERROR + // AUTOMATE_METADATA } enum ChainTransactionType { @@ -913,3 +982,9 @@ enum PublishTaskQueueStatus { enum AuthTokenSource { ORCID } + +enum DoiStatus { + PENDING + FAILED + SUCCESS +} diff --git a/desci-server/scripts/be-node-dev.sh b/desci-server/scripts/be-node-dev.sh index 3a7941689..62be4a8b2 100755 --- a/desci-server/scripts/be-node-dev.sh +++ b/desci-server/scripts/be-node-dev.sh @@ -14,6 +14,13 @@ chmod -R 777 /app/node_modules/prisma cd desci-server yarn run migrate npx prisma db seed + +npm run script:seed-social-data + +# import required images from ipfs to local +chmod +x ./scripts/import-ipfs-content.sh +./scripts/import-ipfs-content.sh + # note: for local dev, you can probably import dpid 46 using the following script, however it doesn't work due to local IPFS client not being open to the public (swarm key) # when you set NODE_ENV=prod, it uses the public IPFS reader. Need to adjust this for local dev so we can properly import in the future # NODE_ENV=prod OPERATION=fillPublic USER_EMAIL=noreply@desci.com NODE_UUID=pOV6-0ZN8k8Nlb3iJ7BHgbHt4V_xt-H-dUbRQCLKl78. npm run script:fix-data-refs diff --git a/desci-server/scripts/import-ipfs-content.sh b/desci-server/scripts/import-ipfs-content.sh new file mode 100755 index 000000000..976f2f03c --- /dev/null +++ b/desci-server/scripts/import-ipfs-content.sh @@ -0,0 +1,16 @@ +# import required images from ipfs to local + +check_and_install() { + echo "check and install: $1" + # local shell_cmd = $1 + if ! command -v $1 &> /dev/null; + then + apt-get install -y $1 + fi +} + +check_and_install "wget" +check_and_install "curl" + +wget https://ipfs.desci.com/ipfs/bafkreih6yx7ywj7trvpp45vergrnytad7ezsku75tefyro4qrrcfrrmrt4 -O /tmp/cover.png +curl -F file=@/tmp/cover.png "http://host.docker.internal:5001/api/v0/add?cid-version=1" \ No newline at end of file diff --git a/desci-server/src/config/index.ts b/desci-server/src/config/index.ts index ba9134ddd..048ad7533 100644 --- a/desci-server/src/config/index.ts +++ b/desci-server/src/config/index.ts @@ -4,7 +4,7 @@ export const PUBLIC_IPFS_PATH = process.env.NODE_ENV === 'dev' ? `http://host.docker.internal:8089/ipfs` : process.env.NODE_ENV === 'test' - ? 'http://host.docker.internal:8090/ipfs' + ? 'http://host.docker.internal:8091/ipfs' : 'https://ipfs.desci.com/ipfs'; export const MEDIA_SERVER_API_URL = process.env.NODES_MEDIA_SERVER_URL; diff --git a/desci-server/src/controllers/attestations/claims.ts b/desci-server/src/controllers/attestations/claims.ts index 0a07dac16..736cd3124 100644 --- a/desci-server/src/controllers/attestations/claims.ts +++ b/desci-server/src/controllers/attestations/claims.ts @@ -1,4 +1,4 @@ -import { CommunityEntryAttestation } from '@prisma/client'; +import { ActionType, CommunityEntryAttestation } from '@prisma/client'; import sgMail from '@sendgrid/mail'; import { NextFunction, Request, Response } from 'express'; import _ from 'lodash'; @@ -16,6 +16,7 @@ import { } from '../../internal.js'; import { RequestWithUser } from '../../middleware/authorisation.js'; import { removeClaimSchema } from '../../routes/v1/attestations/schema.js'; +import { saveInteraction } from '../../services/interactionLog.js'; import { AttestationClaimedEmailHtml } from '../../templates/emails/utils/emailRenderer.js'; sgMail.setApiKey(process.env.SENDGRID_API_KEY); @@ -42,6 +43,7 @@ export const claimAttestation = async (req: RequestWithUser, res: Response, _nex if (claim && claim.revoked) { const reclaimed = await attestationService.reClaimAttestation(claim.id); + await saveInteraction(req, ActionType.CLAIM_ATTESTATION, { ...body, claimId: reclaimed.id }); new SuccessResponse(reclaimed).send(res); return; } @@ -53,6 +55,8 @@ export const claimAttestation = async (req: RequestWithUser, res: Response, _nex attestationVersion: attestationVersion.id, }); + await saveInteraction(req, ActionType.CLAIM_ATTESTATION, { ...body, claimId: nodeClaim.id }); + // notifiy community members if attestation is protected // new attestations should be trigger notification of org members if protected const attestation = await attestationService.findAttestationById(body.attestationId); @@ -102,7 +106,7 @@ export const removeClaim = async (req: RequestWithUser, res: Response, _next: Ne const node = await prisma.node.findFirst({ where: { uuid: body.nodeUuid } }); if (!node) throw new NotFoundError('Node not found'); - const claim = await attestationService.getClaimOnDpid(body.claimId, body.dpid.toString()); + const claim = await attestationService.getClaimOnUuid(body.claimId, body.nodeUuid); if (!claim) throw new NotFoundError(); if (node.ownerId !== req.user.id || claim.claimedById !== req.user.id) throw new AuthFailureError(); @@ -114,6 +118,8 @@ export const removeClaim = async (req: RequestWithUser, res: Response, _next: Ne ? await attestationService.revokeAttestation(claim.id) : await attestationService.unClaimAttestation(claim.id); + await saveInteraction(req, ActionType.REVOKE_CLAIM, body); + logger.info({ removeOrRevoke, totalSignal, claimSignal }, 'Claim Removed|Revoked'); return new SuccessMessageResponse('Attestation unclaimed').send(res); }; @@ -168,5 +174,12 @@ export const claimEntryRequirements = async (req: Request, res: Response, _next: attestations: claims, }); + await saveInteraction(req, ActionType.CLAIM_ENTRY_ATTESTATIONS, { + communityId, + nodeDpid, + claimerId, + claims: attestations.map((att) => att.id), + }); + return new SuccessResponse(attestations).send(res); }; diff --git a/desci-server/src/controllers/attestations/comments.ts b/desci-server/src/controllers/attestations/comments.ts index 8f7b3ac50..aebdd6e84 100644 --- a/desci-server/src/controllers/attestations/comments.ts +++ b/desci-server/src/controllers/attestations/comments.ts @@ -1,5 +1,5 @@ import { HighlightBlock } from '@desci-labs/desci-models'; -import { Annotation } from '@prisma/client'; +import { ActionType, Annotation } from '@prisma/client'; import { NextFunction, Request, Response } from 'express'; import _ from 'lodash'; import zod from 'zod'; @@ -15,6 +15,7 @@ import { createCommentSchema, logger as parentLogger, } from '../../internal.js'; +import { saveInteraction } from '../../services/interactionLog.js'; import { client } from '../../services/ipfs.js'; import { base64ToBlob } from '../../utils/upload.js'; @@ -64,6 +65,12 @@ export const removeComment = async (req: Request, r } else { if (comment.authorId !== user.id) throw new ForbiddenError(); await attestationService.removeComment(parseInt(commentId)); + await saveInteraction(req, ActionType.REMOVE_COMMENT, { + commentId, + claimId: comment.nodeAttestationId, + authorId: comment.authorId, + userId: user.id, + }); new SuccessMessageResponse().send(res); } }; @@ -101,6 +108,7 @@ export const addComment = async (req: Request, links, highlights: processedHighlights as unknown as HighlightBlock[], }); + await saveInteraction(req, ActionType.ADD_COMMENT, { annotationId: annotation.id, claimId, authorId }); } else { annotation = await attestationService.createComment({ claimId: parseInt(claimId.toString()), @@ -109,7 +117,7 @@ export const addComment = async (req: Request, links, }); } - + await saveInteraction(req, ActionType.ADD_COMMENT, { annotationId: annotation.id, claimId, authorId }); new SuccessResponse({ ...annotation, highlights: annotation.highlights.map((h) => JSON.parse(h as string)), diff --git a/desci-server/src/controllers/attestations/show.ts b/desci-server/src/controllers/attestations/show.ts index 26c8ee122..118666b31 100644 --- a/desci-server/src/controllers/attestations/show.ts +++ b/desci-server/src/controllers/attestations/show.ts @@ -21,21 +21,21 @@ type ShowNodeAttestationsResponse = { }; export const showNodeAttestations = async ( - req: Request<{ dpid: string }>, + req: Request<{ uuid: string }>, res: Response, ) => { - const { dpid } = req.params; + const { uuid } = req.params; const logger = parentLogger.child({ module: 'ATTESTATIONS::showNodeAttestationsController', user: (req as any).user, - dpid, + uuid, }); logger.trace(`showNodeAttestations`); - if (!dpid) throw new BadRequestError('DPID is required'); + if (!uuid) throw new BadRequestError('uuid is required'); - let attestations = await attestationService.getAllNodeAttestations(dpid); + let attestations = await attestationService.getAllNodeAttestations(uuid); attestations = attestations.map((att) => ({ ...att, _count: undefined, diff --git a/desci-server/src/controllers/attestations/verification.ts b/desci-server/src/controllers/attestations/verification.ts index a791f28f3..48ce36b2e 100644 --- a/desci-server/src/controllers/attestations/verification.ts +++ b/desci-server/src/controllers/attestations/verification.ts @@ -1,21 +1,18 @@ +import { ActionType } from '@prisma/client'; import { NextFunction, Request, Response } from 'express'; // import { Attestation, NodeAttestation } from '@prisma/client'; import _ from 'lodash'; import { - AuthFailureResponse, - BadRequestError, ForbiddenError, - NotFoundError, - RequestWithUser, SuccessMessageResponse, SuccessResponse, attestationService, - communityService, ensureUuidEndsWithDot, prisma, } from '../../internal.js'; import { logger as parentLogger } from '../../logger.js'; +import { saveInteraction, saveInteractionWithoutReq } from '../../services/interactionLog.js'; import orcidApiService from '../../services/orcid.js'; type RemoveVerificationBody = { @@ -52,6 +49,11 @@ export const removeVerification = async ( } else { await attestationService.removeVerification(verification.id, user.id); + await saveInteraction(req, ActionType.UNVERIFY_ATTESTATION, { + claimId: verification.nodeAttestationId, + userId: user.id, + }); + new SuccessMessageResponse().send(res); const claim = await attestationService.findClaimById(verification.nodeAttestationId); @@ -96,11 +98,11 @@ export const addVerification = async ( const claim = await attestationService.findClaimById(parseInt(claimId)); await attestationService.verifyClaim(parseInt(claimId), user.id); - - const attestation = await attestationService.findAttestationById(claim.attestationId); + await saveInteraction(req, ActionType.VERIFY_ATTESTATION, { claimId: claimId, userId: user.id }); new SuccessMessageResponse().send(res); + const attestation = await attestationService.findAttestationById(claim.attestationId); if (attestation.protected) { /** * Update ORCID Profile @@ -108,6 +110,12 @@ export const addVerification = async ( const node = await prisma.node.findFirst({ where: { uuid: ensureUuidEndsWithDot(claim.nodeUuid) } }); const owner = await prisma.user.findFirst({ where: { id: node.ownerId } }); if (owner.orcid) await orcidApiService.postWorkRecord(node.uuid, owner.orcid); + await saveInteractionWithoutReq(ActionType.UPDATE_ORCID_RECORD, { + ownerId: owner.id, + orcid: owner.orcid, + uuid: node.uuid, + claimId, + }); } }; @@ -130,18 +138,3 @@ export const getAttestationVerifications = async (req: Request, res: Response, n return new SuccessResponse(data).send(res); }; - -export const canVerifyClaim = async (req: RequestWithUser, res: Response) => { - const logger = parentLogger.child({ - module: 'ATTESTATIONS::canVerify', - }); - const userId = req.user.id; - const claimId = parseInt(req.params.claimId); - - const claim = await attestationService.findClaimById(claimId); - const isMember = await communityService.findMemberByUserId(claim.desciCommunityId, userId); - - logger.info({ userId: req.user.id, claimId, community: claim.desciCommunityId }, 'Claim Verification check'); - if (!isMember) new SuccessResponse({ ok: false }).send(res); - else new SuccessResponse({ ok: true }).send(res); -}; diff --git a/desci-server/src/controllers/auth/logout.ts b/desci-server/src/controllers/auth/logout.ts index 1ddc0e931..92e32a150 100755 --- a/desci-server/src/controllers/auth/logout.ts +++ b/desci-server/src/controllers/auth/logout.ts @@ -1,10 +1,12 @@ import { Request, Response, NextFunction } from 'express'; +import { AUTH_COOKIE_FIELDNAME } from '../../utils/sendCookie.js'; + export const logout = async (req: Request, res: Response, next: NextFunction) => { // req.session.destroy((err) => { // if you send data here it gives an error and kills the process lol // }); - res.cookie('auth', 'unset', { + res.cookie(AUTH_COOKIE_FIELDNAME, 'unset', { maxAge: 0, httpOnly: true, // Ineffective whilst we still return the bearer token to the client in the response secure: process.env.NODE_ENV === 'production', @@ -14,7 +16,7 @@ export const logout = async (req: Request, res: Response, next: NextFunction) => }); (process.env.COOKIE_DOMAIN?.split(',') || [undefined]).map((domain) => { - res.cookie('auth', 'unset', { + res.cookie(AUTH_COOKIE_FIELDNAME, 'unset', { maxAge: 0, httpOnly: true, // Ineffective whilst we still return the bearer token to the client in the response secure: process.env.NODE_ENV === 'production', @@ -26,7 +28,7 @@ export const logout = async (req: Request, res: Response, next: NextFunction) => if (process.env.SERVER_URL === 'https://nodes-api-dev.desci.com') { // insecure cookie for local dev, should only be used for testing - res.cookie('auth', 'unset', { + res.cookie(AUTH_COOKIE_FIELDNAME, 'unset', { maxAge: 0, httpOnly: true, sameSite: 'strict', diff --git a/desci-server/src/controllers/communities/feed.ts b/desci-server/src/controllers/communities/feed.ts index 3386f4791..875df854b 100644 --- a/desci-server/src/controllers/communities/feed.ts +++ b/desci-server/src/controllers/communities/feed.ts @@ -19,10 +19,7 @@ export const getCommunityFeed = async (req: Request, res: Response, next: NextFu // accounts for only engagements on community selected attestations const nodes = await asyncMap(curatedNodes, async (node) => { const engagements = await attestationService.getNodeEngagementSignals(node.nodeDpid10); - // const verifiedEngagements = await communityService.getNodeVerifiedEngagementsByCommunity( - // node.nodeDpid10, - // parseInt(req.params.communityId), - // ); + const verifiedEngagements = node.NodeAttestation.reduce( (total, claim) => ({ reactions: total.reactions + claim.reactions, @@ -39,11 +36,13 @@ export const getCommunityFeed = async (req: Request, res: Response, next: NextFu }); let data = await Promise.all(nodes.map(resolveLatestNode)); - data = data.sort((c1, c2) => { - const key1 = c1.engagements.verifications + c1.engagements.annotations + c1.engagements.reactions; - const key2 = c2.engagements.verifications + c2.engagements.annotations + c2.engagements.reactions; - return key2 - key1; - }); + data = data + .sort((c1, c2) => { + const key1 = c1.engagements.verifications + c1.engagements.annotations + c1.engagements.reactions; + const key2 = c2.engagements.verifications + c2.engagements.annotations + c2.engagements.reactions; + return key2 - key1; + }) + .reverse(); return new SuccessResponse(data).send(res); }; @@ -77,7 +76,6 @@ export const getAllFeeds = async (req: Request, res: Response, next: NextFunctio }; }); - logger.info({ nodes }, 'CHECK Verification SignalS'); let data = await Promise.all(nodes.map(resolveLatestNode)); /** @@ -85,15 +83,21 @@ export const getAllFeeds = async (req: Request, res: Response, next: NextFunctio * or * fallback to last submission/attestation claim date */ - data = data.sort((entryA, entryB) => { - const key1 = entryA.engagements.verifications + entryA.engagements.annotations + entryA.engagements.reactions; - const key2 = entryB.engagements.verifications + entryB.engagements.annotations + entryB.engagements.reactions; - if (key1 !== key2) return key2 - key1; - - const entryALastClaimedAt = new Date(entryA.NodeAttestation[entryA.NodeAttestation.length - 1].claimedAt).getTime(); - const entryBlastClaimedAt = new Date(entryB.NodeAttestation[entryB.NodeAttestation.length - 1].claimedAt).getTime(); - return entryBlastClaimedAt - entryALastClaimedAt; - }); + data = data + .sort((entryA, entryB) => { + const key1 = entryA.engagements.verifications + entryA.engagements.annotations + entryA.engagements.reactions; + const key2 = entryB.engagements.verifications + entryB.engagements.annotations + entryB.engagements.reactions; + if (key1 !== key2) return key2 - key1; + + const entryALastClaimedAt = new Date( + entryA.NodeAttestation[entryA.NodeAttestation.length - 1].claimedAt, + ).getTime(); + const entryBlastClaimedAt = new Date( + entryB.NodeAttestation[entryB.NodeAttestation.length - 1].claimedAt, + ).getTime(); + return entryBlastClaimedAt - entryALastClaimedAt; + }) + .reverse(); return new SuccessResponse(data).send(res); }; diff --git a/desci-server/src/controllers/communities/guard.ts b/desci-server/src/controllers/communities/guard.ts new file mode 100644 index 000000000..d788627c8 --- /dev/null +++ b/desci-server/src/controllers/communities/guard.ts @@ -0,0 +1,18 @@ +import { Response } from 'express'; + +import { SuccessResponse, communityService, logger } from '../../internal.js'; +import { RequestWithUser } from '../../middleware/authorisation.js'; + +export const checkMemberGuard = async (req: RequestWithUser, res: Response) => { + const log = logger.child({ + module: 'ATTESTATIONS::MemberGuard', + }); + const userId = req.user.id; + const communityId = parseInt(req.params.communityId); + + log.info({ userId: req.user.id, community: communityId }, 'Community Member Guard check'); + const isMember = await communityService.findMemberByUserId(communityId, userId); + + if (!isMember) new SuccessResponse({ ok: false }).send(res); + else new SuccessResponse({ ok: true }).send(res); +}; diff --git a/desci-server/src/controllers/communities/index.ts b/desci-server/src/controllers/communities/index.ts index 8788f8378..e9fe2aaf3 100644 --- a/desci-server/src/controllers/communities/index.ts +++ b/desci-server/src/controllers/communities/index.ts @@ -3,3 +3,4 @@ export * from './radar.js'; export * from './list.js'; export * from './types.js'; export * from './util.js'; +export * from './guard.js'; diff --git a/desci-server/src/controllers/communities/util.ts b/desci-server/src/controllers/communities/util.ts index 657e6637e..059c85996 100644 --- a/desci-server/src/controllers/communities/util.ts +++ b/desci-server/src/controllers/communities/util.ts @@ -29,18 +29,19 @@ export const resolveLatestNode = async (radar: Partial) => { logger.warn({ uuid }, 'uuid not found'); } - const selectAttributes = ['manifestUrl', 'ownerId', 'title', 'NodeCover']; + const selectAttributes: (keyof typeof discovery)[] = ['ownerId', 'NodeCover']; const node: Partial = _.pick(discovery, selectAttributes); - const publisedVersions = + const publishedVersions = (await prisma.$queryRaw`SELECT * from "NodeVersion" where "nodeId" = ${discovery.id} AND "transactionId" IS NOT NULL ORDER BY "createdAt" DESC`) as NodeVersion[]; // const nodeVersions = (await getNodeVersion - logger.info({ uuid: discovery.uuid, publisedVersions }, 'Resolve node'); - node['versions'] = publisedVersions.length; - node['publishedDate'] = publisedVersions[0].createdAt; + logger.info({ uuid: discovery.uuid, publishedVersions }, 'Resolve node'); + node['versions'] = publishedVersions.length; + node['publishedDate'] = publishedVersions[0].createdAt; + node.manifestUrl = publishedVersions[0].manifestUrl; radar.node = node; - let gatewayUrl = discovery.manifestUrl; + let gatewayUrl = publishedVersions[0].manifestUrl; try { gatewayUrl = cleanupManifestUrl(gatewayUrl); @@ -48,9 +49,7 @@ export const resolveLatestNode = async (radar: Partial) => { const manifest = (await axios.get(gatewayUrl)).data; radar.manifest = manifest; - logger.info({ manifest }, '[SHOW API GET DRAFT MANIFEST]'); - - logger.info({}, 'Retrive DraftManifest For /SHOW'); + logger.info({ manifest }, '[SHOW API GET LAST PUBLISHED MANIFEST]'); } catch (err) { const manifest = await repoService.getDraftManifest(uuid as NodeUuid); radar.manifest = manifest; diff --git a/desci-server/src/controllers/data/update.ts b/desci-server/src/controllers/data/update.ts index 10d8e180b..96358f5ee 100644 --- a/desci-server/src/controllers/data/update.ts +++ b/desci-server/src/controllers/data/update.ts @@ -7,6 +7,7 @@ import { RequestWithNode } from '../../middleware/authorisation.js'; import { processExternalUrlDataToIpfs } from '../../services/data/externalUrlProcessing.js'; import { processNewFolder, processS3DataToIpfs } from '../../services/data/processing.js'; import { arrayXor, ensureUuidEndsWithDot } from '../../utils.js'; + export interface UpdateResponse { status?: number; rootDataCid?: string; @@ -24,11 +25,10 @@ export interface ErrorResponse { export const update = async (req: RequestWithNode, res: Response) => { const owner = req.user; let node = req.node; - const { uuid, manifest: draftManifest, componentType, componentSubtype, newFolderName } = req.body; + const { uuid, manifest: draftManifest, componentType, componentSubtype, newFolderName, autoStar } = req.body; let { contextPath } = req.body; // debugger; if (contextPath.endsWith('/')) contextPath = contextPath.slice(0, -1); - // temp workaround for non-file uploads if (!node) { node = await prisma.node.findFirst({ @@ -54,6 +54,7 @@ export const update = async (req: RequestWithNode, res: Response, - res: Response + res: Response, ) => { const owner = (req as any).user as User; - const { - uuid, - contextPath, - externalCids, - componentType, - componentSubtype - } = req.body; + const { uuid, contextPath, externalCids, componentType, componentSubtype } = req.body; const logger = parentLogger.child({ // id: req.id, @@ -73,7 +67,7 @@ export const updateExternalCid = async ( externalCids, contextPath, componentType, - componentSubtype + componentSubtype, }); if (ok) { @@ -83,6 +77,7 @@ export const updateExternalCid = async ( tree: tree, date: date, } = value as UpdateResponse; + return res.status(200).json({ manifest: updatedManifest, manifestCid: persistedManifestCid, diff --git a/desci-server/src/controllers/data/utils.ts b/desci-server/src/controllers/data/utils.ts index b35c411ad..ac1bba408 100644 --- a/desci-server/src/controllers/data/utils.ts +++ b/desci-server/src/controllers/data/utils.ts @@ -1,4 +1,9 @@ -import { DRIVE_NODE_ROOT_PATH, DataComponent, ResearchObjectComponentType, ResearchObjectV1 } from '@desci-labs/desci-models'; +import { + DRIVE_NODE_ROOT_PATH, + DataComponent, + ResearchObjectComponentType, + ResearchObjectV1, +} from '@desci-labs/desci-models'; import { Node } from '@prisma/client'; import axios from 'axios'; import { v4 as uuid } from 'uuid'; @@ -30,7 +35,7 @@ function addDataToManifest({ manifest, dataFields, rootCid }: UpdatingManifestPa cid: rootCid, subMetadata: {}, description: dataFields.description || undefined, - path: DRIVE_NODE_ROOT_PATH + `/${dataFields.title}` + path: DRIVE_NODE_ROOT_PATH + `/${dataFields.title}`, }, }; manifest.components.push(newDataComponent); @@ -102,3 +107,14 @@ export function separateFileNameAndExtension(fileName: string): { const name = splitName.join('.'); return { fileName: name, extension }; } + +export const DOI_REGEX = /(https:\/\/doi.org\/)?(?10.\d{4,9}\/[-._;()/:A-Z0-9]+$)/i; +export function isDoiLink(url: string): boolean { + try { + const matches = url.match(DOI_REGEX); + console.log('matches', matches); + return DOI_REGEX.test(url); + } catch (e) { + return false; + } +} diff --git a/desci-server/src/controllers/doi/check.ts b/desci-server/src/controllers/doi/check.ts new file mode 100644 index 000000000..34ca702d7 --- /dev/null +++ b/desci-server/src/controllers/doi/check.ts @@ -0,0 +1,47 @@ +import { NextFunction, Request, Response } from 'express'; + +import { DoiError } from '../../core/doi/error.js'; +import { + BadRequestError, + RequestWithNode, + SuccessResponse, + doiService, + ensureUuidEndsWithDot, + logger, + logger as parentLogger, +} from '../../internal.js'; + +export const checkMintability = async (req: RequestWithNode, res: Response, _next: NextFunction) => { + const { uuid } = req.params; + if (!uuid) throw new BadRequestError(); + + const logger = parentLogger.child({ + module: 'DOI::checkMintability', + }); + + try { + await doiService.checkMintability(uuid); + new SuccessResponse(true).send(res); + } catch (err) { + logger.error(err, 'module:: checkMintability'); + if (!(err instanceof DoiError)) { + // TODO: Sentry error reporting + } + new SuccessResponse(false).send(res); + } +}; + +export const getDoi = async (req: Request, res: Response, next: NextFunction) => { + const { identifier } = req.params; + if (!identifier) throw new BadRequestError(); + + const pending = await doiService.hasPendingSubmission(ensureUuidEndsWithDot(identifier)); + logger.info({ pending }, 'GET DOI'); + if (pending) { + new SuccessResponse({ status: pending.status }).send(res); + return; + } + + const doi = await doiService.getDoiByDpidOrUuid(identifier); + new SuccessResponse(doi).send(res); +}; diff --git a/desci-server/src/controllers/doi/index.ts b/desci-server/src/controllers/doi/index.ts new file mode 100644 index 000000000..81e6b392c --- /dev/null +++ b/desci-server/src/controllers/doi/index.ts @@ -0,0 +1,3 @@ +export * from './check.js'; +export * from './mint.js'; +export * from './schema.js'; diff --git a/desci-server/src/controllers/doi/mint.ts b/desci-server/src/controllers/doi/mint.ts new file mode 100644 index 000000000..e64b7e555 --- /dev/null +++ b/desci-server/src/controllers/doi/mint.ts @@ -0,0 +1,92 @@ +import { DoiStatus } from '@prisma/client'; +import { Request, Response, NextFunction } from 'express'; +import _ from 'lodash'; + +import { MintError } from '../../core/doi/error.js'; +import { + BadRequestError, + NotFoundError, + SuccessMessageResponse, + SuccessResponse, + crossRefClient, + doiService, + ensureUuidEndsWithDot, + logger as parentLogger, + prisma, +} from '../../internal.js'; + +export const mintDoi = async (req: Request, res: Response, _next: NextFunction) => { + const { uuid } = req.params; + if (!uuid) throw new BadRequestError(); + const sanitizedUuid = ensureUuidEndsWithDot(uuid); + const isPending = await doiService.hasPendingSubmission(sanitizedUuid); + if (isPending) { + throw new MintError('You have a pending submission'); + } else { + const submission = await doiService.mintDoi(sanitizedUuid); + const data = _.pick(submission, ['id', 'status']); + new SuccessResponse(data).send(res); + } +}; + +export interface RequestWithCrossRefPayload extends Request { + payload: { + notifyEndpoint: string; + externalId: string; + internalId: string; + retrieveUrl: string; + serviceDate: string; + retrieveUrlExpirationDate: string; + }; +} + +export const handleCrossrefNotificationCallback = async ( + req: RequestWithCrossRefPayload, + res: Response, + _next: NextFunction, +) => { + const logger = parentLogger.child({ module: 'handleCrossrefNotificationCallback' }); + + const submission = await doiService.getPendingSubmission(req.payload.externalId); + logger.info({ submission }, 'SUBMISSION'); + + if (!submission) { + logger.error({ payload: req.payload }, 'Crossref Notifiication: pending submission not found'); + throw new NotFoundError('submission not found'); + } + + await doiService.updateSubmission({ id: submission.id }, { notification: req.payload }); + logger.info('SUBMISSION UPDATED'); + + new SuccessMessageResponse().send(res); + + // check retrieve url to get submission result + const response = await crossRefClient.retrieveSubmission(req.payload.retrieveUrl); + + logger.info({ response, submission }, 'CREATE DOI CALLBACK RESPONSE'); + if (response.success) { + logger.info('CREATE DOI '); + const doiRecord = await prisma.doiRecord.create({ + data: { + uuid: submission.uuid, + dpid: submission.dpid, + doi: submission.uniqueDoi, + }, + }); + await doiService.updateSubmission( + { id: submission.id }, + { + status: DoiStatus.SUCCESS, + doiRecordId: doiRecord.id, + }, + ); + } else { + logger.info('ERROR CREATING DOI'); + await doiService.updateSubmission( + { id: submission.id }, + { status: response.failure ? DoiStatus.FAILED : DoiStatus.PENDING }, + ); + } + + // TODO: email authors about the submission status +}; diff --git a/desci-server/src/controllers/doi/schema.ts b/desci-server/src/controllers/doi/schema.ts new file mode 100644 index 000000000..35ec9cec3 --- /dev/null +++ b/desci-server/src/controllers/doi/schema.ts @@ -0,0 +1,9 @@ +import { z } from 'zod'; + +export const attachDoiSchema = z.object({ + body: z.object({ + uuid: z.string(), + path: z.string().startsWith('root/', 'Invalid component path'), + publication: z.boolean().optional(), + }), +}); diff --git a/desci-server/src/controllers/nodes/checkIfPublishedNode.ts b/desci-server/src/controllers/nodes/checkIfPublishedNode.ts new file mode 100644 index 000000000..ec9de2881 --- /dev/null +++ b/desci-server/src/controllers/nodes/checkIfPublishedNode.ts @@ -0,0 +1,112 @@ +import type { Request, Response, NextFunction } from 'express'; + +import { prisma } from '../../client.js'; +import { resolveNodeManifest } from '../../internal.js'; +import { logger as parentLogger } from '../../logger.js'; +import { decodeBase64UrlSafeToHex, ensureUuidEndsWithDot, randomUUID64 } from '../../utils.js'; +import { IndexedResearchObject, getIndexedResearchObjects } from '../../theGraph.js'; +import { ResearchObjectV1, ResearchObjectV1Dpid } from '@desci-labs/desci-models'; +import { NodeCover } from '@prisma/client'; + +const logger = parentLogger.child({ + module: 'NODE::checkIfPublishedNode', +}); + +type NodeWithDpid = { + uuid: string; + createdAt: Date; + updatedAt: Date; + ownerId: number; + title: string; + manifestUrl: string; + cid: string; + NodeCover: NodeCover[]; + isPublished: boolean; +} & { dpid?: ResearchObjectV1Dpid; isPublished: boolean; index?: IndexedResearchObject }; + +type GetPublishedNodeResponse = { + ok: true; + uuid?: string; + dpid?: string; + isPublished: boolean; + indexInfo?: IndexedResearchObject; +}; + +type GetPublishedNodeErrorResponse = { + ok: false; + message: string; +}; + +export const checkIfPublishedNode = async ( + req: Request, + res: Response, +) => { + const ipfsQuery = req.query.g; + + logger.info({ + body: req.body, + user: (req as any).user, + ipfsQuery, + }); + + let node = await prisma.node.findFirst({ + select: { + uuid: true, + id: true, + createdAt: true, + updatedAt: true, + ownerId: true, + title: true, + manifestUrl: true, + cid: true, + NodeCover: true, + }, + where: { + isDeleted: false, + uuid: ensureUuidEndsWithDot(req.params.uuid), + }, + }); + + // transition UUID + const indexMap = {}; + + if (!node) { + res.status(404).send({ ok: false, message: 'Node not found' }); + return; + } + + try { + const uuids = node.uuid; + const indexed = await getIndexedResearchObjects([uuids]); + indexed.researchObjects.forEach((e) => { + indexMap[e.id] = e; + }); + } catch (err) { + logger.error({ err }, '[ERROR] graph index lookup fail'); + // todo: try on chain direct (current method doesnt support batch, so fix that and add here) + } + + const hex = `0x${decodeBase64UrlSafeToHex(node.uuid)}`; + const result = indexMap[hex]; + const manifest: ResearchObjectV1 = result?.recentCid + ? await resolveNodeManifest(result?.recentCid, ipfsQuery as string) + : null; + const o = { + ...node, + uuid: node?.uuid.replaceAll('.', ''), + isPublished: !!indexMap[hex], + index: indexMap[hex], + dpid: manifest?.dpid, + }; + delete o.id; + + const enhancedNode: NodeWithDpid = o; + + res.send({ + ok: true, + uuid: enhancedNode.uuid, + dpid: enhancedNode.dpid?.id, + isPublished: enhancedNode.isPublished, + indexInfo: enhancedNode.index, + }); +}; diff --git a/desci-server/src/controllers/nodes/checkNodeAccess.ts b/desci-server/src/controllers/nodes/checkNodeAccess.ts new file mode 100644 index 000000000..4a2ecf1fd --- /dev/null +++ b/desci-server/src/controllers/nodes/checkNodeAccess.ts @@ -0,0 +1,144 @@ +import type { Request, Response } from 'express'; + +import { prisma } from '../../client.js'; +import { resolveNodeManifest } from '../../internal.js'; +import { logger as parentLogger } from '../../logger.js'; +import { decodeBase64UrlSafeToHex, ensureUuidEndsWithDot, randomUUID64 } from '../../utils.js'; +import { IndexedResearchObject, getIndexedResearchObjects } from '../../theGraph.js'; +import { ResearchObjectV1, ResearchObjectV1Dpid } from '@desci-labs/desci-models'; +import { NodeCover } from '@prisma/client'; +import { PRIV_SHARE_CONTRIBUTION_PREFIX } from '../../services/Contributors.js'; + +const logger = parentLogger.child({ + module: 'NODE::checkNodeAccess', +}); + +type NodeWithDpid = { + uuid: string; + createdAt: Date; + updatedAt: Date; + ownerId: number; + title: string; + manifestUrl: string; + cid: string; + NodeCover: NodeCover[]; + isPublished: boolean; +} & { dpid?: ResearchObjectV1Dpid; isPublished: boolean; index?: IndexedResearchObject }; + +type GetCheckNodeAccessResponse = { + ok: true; + uuid?: string; + isOwner: boolean; + isShared: boolean; + hasAccess: boolean; + sharedOn?: number; + isPublished: boolean; + recentCid?: string; + index?: IndexedResearchObject; + manifestUrl?: string; +}; + +type GetCheckNodeAccessErrorResponse = { + ok: false; + message: string; +}; + +export const checkNodeAccess = async ( + req: Request, + res: Response, +) => { + const owner = (req as any).user; + const ipfsQuery = req.query.g; + + logger.info({ + body: req.body, + user: (req as any).user, + ipfsQuery, + }); + + let node = await prisma.node.findFirst({ + select: { + uuid: true, + id: true, + createdAt: true, + updatedAt: true, + ownerId: true, + title: true, + manifestUrl: true, + cid: true, + NodeCover: true, + }, + where: { + isDeleted: false, + uuid: ensureUuidEndsWithDot(req.params.uuid), + }, + }); + + if (!node) { + res.status(404).send({ ok: false, message: 'Node not found' }); + return; + } + + const privSharedNode = owner + ? await prisma.privateShare.findFirst({ + where: { + memo: `${PRIV_SHARE_CONTRIBUTION_PREFIX}${owner?.email}`, + nodeUUID: node.uuid, + }, + }) + : undefined; + + // transition UUID + const indexMap = {}; + + try { + const uuids = node.uuid; + const indexed = await getIndexedResearchObjects([uuids]); + indexed.researchObjects.forEach((e) => { + indexMap[e.id] = e; + }); + } catch (err) { + logger.error({ err: err.message }, '[ERROR] graph index lookup fail'); + // todo: try on chain direct (current method doesnt support batch, so fix that and add here) + } + + const hex = `0x${decodeBase64UrlSafeToHex(node.uuid)}`; + const result = indexMap[hex]; + const manifest: ResearchObjectV1 = result?.recentCid + ? await resolveNodeManifest(result?.recentCid, ipfsQuery as string) + : null; + const o = { + ...node, + uuid: node.uuid.replaceAll('.', ''), + isPublished: !!indexMap[hex], + index: indexMap[hex], + dpid: manifest?.dpid, + }; + delete o.id; + + const enhancedNode: NodeWithDpid = o; + + const isOwner = owner?.id === enhancedNode.ownerId; + const latestDraftVersion = await prisma.nodeVersion.findFirst({ + where: { + nodeId: node.id, + }, + orderBy: { + createdAt: 'desc', + }, + }); + + const hasAccess = privSharedNode?.nodeUUID === node.uuid || isOwner; + res.send({ + ok: true, + uuid: enhancedNode.uuid, + isOwner, + isShared: !isOwner && !!privSharedNode, + hasAccess, + isPublished: enhancedNode.isPublished, + sharedOn: privSharedNode?.createdAt.getTime(), + recentCid: enhancedNode.index?.recentCid, + index: enhancedNode.index, + manifestUrl: hasAccess ? latestDraftVersion?.manifestUrl : undefined, + }); +}; diff --git a/desci-server/src/controllers/nodes/contributions/create.ts b/desci-server/src/controllers/nodes/contributions/create.ts index 7d3318a9e..4d608a1fe 100644 --- a/desci-server/src/controllers/nodes/contributions/create.ts +++ b/desci-server/src/controllers/nodes/contributions/create.ts @@ -14,6 +14,7 @@ export type AddContributorReqBody = { email?: string; orcid?: string; userId?: number; + silent?: boolean; // Don't fire an email }; export type AddContributorRequest = Request & { @@ -37,7 +38,7 @@ export const addContributor = async (req: AddContributorRequest, res: Response & { + user: User; // Added by the ensureUser middleware +}; + +type EmailPublishPackageResponse = { + ok: true; +}; + +type EmailPublishPackageErrorResponse = { + ok: false; + error: string; + status?: number; +}; + +/** + * Generates a prepublish package for a published node (at the moment just the distro PDF) + */ +export const emailPublishPackage = async ( + req: EmailPublishPackageRequest, + res: Response, +) => { + const user = req.user; + const { prepubDistPdfCid, nodeUuid } = req.body; + const { emailAllContributors } = req.query; + const logger = parentLogger.child({ + module: 'NODES::emailPublishPackageController', + prepubDistPdfCid, + emailAllContributors, + nodeUuid, + userId: user.id, + }); + // debugger; + logger.trace({ fn: 'Distributing Publish Package' }); + + if (!nodeUuid) return res.status(400).json({ ok: false, error: 'nodeUuid is required.' }); + if (!prepubDistPdfCid) return res.status(400).json({ ok: false, error: 'pdfCid is required.' }); + + try { + const node = await prisma.node.findFirst({ + where: { + uuid: ensureUuidEndsWithDot(nodeUuid), + ownerId: user.id, + }, + }); + + if (!node) return res.status(404).json({ ok: false, error: 'Node not found' }); + // debugger; // + // const distPdfEntry = await prisma.distributionPdfs.findFirst({ + // where: { distPdfCid: prepubDistPdfCid, nodeUuid: ensureUuidEndsWithDot(node.uuid) }, + // }); + // if (!distPdfEntry) return res.status(404).json({ ok: false, error: 'Distribution PDF not found' }); + + // Fire off email + await publishServices.sendVersionUpdateEmailToAllContributors({ + node, + manuscriptCid: prepubDistPdfCid, + ownerOnly: !emailAllContributors, + }); + + return res.status(200).json({ ok: true }); + } catch (e) { + logger.error({ error: e.message }); + return res.status(500).json({ ok: false, error: 'Failed sending distribution package email' }); + } +}; diff --git a/desci-server/src/controllers/nodes/contributions/update.ts b/desci-server/src/controllers/nodes/contributions/update.ts index 8efc66e66..724374a1d 100644 --- a/desci-server/src/controllers/nodes/contributions/update.ts +++ b/desci-server/src/controllers/nodes/contributions/update.ts @@ -14,6 +14,7 @@ export type UpdateContributorReqBody = { email?: string; orcid?: string; userId?: number; + silent?: boolean; }; export type UpdateContributorRequest = Request & { @@ -36,7 +37,7 @@ export const updateContributor = async (req: UpdateContributorRequest, res: Resp if (!node || !user) throw Error('Middleware not properly setup for addContributor controller, requires req.node and req.user'); - const { contributorId, orcid, userId } = req.body; + const { contributorId, orcid, userId, silent } = req.body; let { email } = req.body; if (email) email = email.toLowerCase(); @@ -46,6 +47,7 @@ export const updateContributor = async (req: UpdateContributorRequest, res: Resp uuid: node.uuid, user: (req as any).user, nodeId: node.id, + silent, }); if (!contributorId) { @@ -78,7 +80,7 @@ export const updateContributor = async (req: UpdateContributorRequest, res: Resp } // Future: - if (currentEmail !== email && email !== user.email) { + if (currentEmail !== email && email !== user.email && !silent) { // If email was changed, send a new email. logger.info({ contributorId, recipient: email }, 'Firing off contributor invite email for updated contributor'); @@ -102,6 +104,10 @@ export const updateContributor = async (req: UpdateContributorRequest, res: Resp if (process.env.NODE_ENV === 'production') { sgMail.send(emailMsg); + await prisma.nodeContribution.update({ + where: { id: contributorUpdated.id }, + data: { inviteSent: true }, + }); } else { logger.info( { nodeEnv: process.env.NODE_ENV }, diff --git a/desci-server/src/controllers/nodes/createDpid.ts b/desci-server/src/controllers/nodes/createDpid.ts new file mode 100644 index 000000000..53a07888f --- /dev/null +++ b/desci-server/src/controllers/nodes/createDpid.ts @@ -0,0 +1,218 @@ +import { newCeramicClient, resolveHistory } from '@desci-labs/desci-codex-lib'; +import { contracts, typechain as tc } from '@desci-labs/desci-contracts'; +import { + DpidAliasRegistry, + type DpidMintedEvent, +} from '@desci-labs/desci-contracts/dist/typechain-types/DpidAliasRegistry.js'; +import { ethers } from 'ethers'; +import { Response } from 'express'; +import { Logger } from 'pino'; + +import { logger as parentLogger } from '../../logger.js'; +import { RequestWithNode } from '../../middleware/authorisation.js'; +import { setDpidAlias } from '../../services/nodeManager.js'; + +type DpidResponse = DpidSuccessResponse | DpidErrorResponse; +export type DpidSuccessResponse = { + dpid: number; +}; + +export type DpidErrorResponse = { + error: string; +}; + +const CERAMIC_API_URLS = { + local: 'http://host.docker.internal:7007', + dev: 'https://ceramic-dev.desci.com', + prod: 'https://ceramic-prod.desci.com', +} as const; + +const OPTIMISM_RPC_URLS = { + local: 'http://host.docker.internal:8545', + opSepolia: 'https://reverse-proxy-dev.desci.com/rpc_opt_sepolia', + opMainnet: 'https://reverse-proxy-prod.desci.com/rpc_opt_mainnet', +} as const; + +/** Not secret: pre-seeded ganache account for local dev */ +const GANACHE_PKEY = 'ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'; + +const apiServerUrl = process.env.SERVER_URL; + +/** Manually set in this module since the envvar needs to support OG ethereum during migration */ +let optimismRpcUrl: string; +let aliasRegistryAddress: string; +let ceramicApiUrl: string; + +if (apiServerUrl.includes('localhost') || apiServerUrl.includes('host.docker.internal')) { + aliasRegistryAddress = contracts.localDpidAliasInfo.proxies.at(0).address; + ceramicApiUrl = CERAMIC_API_URLS.local; + optimismRpcUrl = OPTIMISM_RPC_URLS.local; +} else if (apiServerUrl.includes('dev')) { + aliasRegistryAddress = contracts.devDpidAliasInfo.proxies.at(0).address; + ceramicApiUrl = CERAMIC_API_URLS.dev; + optimismRpcUrl = OPTIMISM_RPC_URLS.opSepolia; +} else if (process.env.NODE_ENV === 'production' || apiServerUrl.includes('staging')) { + aliasRegistryAddress = contracts.prodDpidAliasInfo.proxies.at(0).address; + ceramicApiUrl = CERAMIC_API_URLS.prod; + optimismRpcUrl = OPTIMISM_RPC_URLS.opSepolia; +} else { + console.error('Cannot derive contract address due to ambiguous environment'); + throw new Error('Ambiguous environment'); +} + +console.log('Using new publish configuration:', { aliasRegistryAddress, optimismRpcUrl, ceramicApiUrl }); + +export const createDpid = async (req: RequestWithNode, res: Response) => { + const owner = req.user; + const node = req.node; + const { uuid } = req.body; + + const logger = parentLogger.child({ + module: 'NODE::createDpidController', + body: req.body, + uuid, + user: owner, + ceramicStream: node.ceramicStream, + }); + + if (!uuid) { + return res.status(400).json({ error: 'UUID is required' }); + } + + if (!process.env.HOT_WALLET_KEY) { + logger.error('hot wallet not configured'); + return res.status(500).json({ error: 'registration not available: no hot wallet configured' }); + } + + try { + const dpid = await getOrCreateDpid(node.ceramicStream); + if (!node.dpidAlias) { + setDpidAlias(uuid, dpid); + } + return res.status(200).send({ dpid }); + } catch (err) { + logger.error({ err }, 'node-create-dpid-err'); + return res.status(400).send({ error: err.message }); + } +}; + +export const getOrCreateDpid = async (streamId: string): Promise => { + const logger = parentLogger.child({ + module: 'NODE::mintDpid', + ceramicStream: streamId, + }); + + const provider = new ethers.providers.JsonRpcProvider(optimismRpcUrl); + + await provider.ready; + const wallet = new ethers.Wallet( + apiServerUrl.includes('localhost') || apiServerUrl.includes('host.docker.internal') + ? GANACHE_PKEY + : process.env.HOT_WALLET_KEY, + provider, + ); + + const dpidAliasRegistry = tc.DpidAliasRegistry__factory.connect(aliasRegistryAddress, wallet); + + // Not exists will return the zero value, i.e. 0 + const checkDpid = await dpidAliasRegistry.find(streamId); + const existingDpid = ethers.BigNumber.from(checkDpid).toNumber(); + + if (existingDpid !== 0) { + logger.info(`Skipping alias creation, stream ${streamId} already bound to ${existingDpid}`); + return existingDpid; + } + + const tx = await dpidAliasRegistry.mintDpid(streamId); + const receipt = await tx.wait(); + const { + args: [dpidBn], + } = receipt.events[0] as DpidMintedEvent; + const dpid = ethers.BigNumber.from(dpidBn).toNumber(); + + logger.info(`Created dPID alias ${dpid} for stream ${streamId}`); + + return dpid; +}; + +/** + * Related, but not directly API exposed, functionality to upgrade a legacy + * dPID. Neither this function nor the contract can do any validation that + * this stream represents the history of that dPID, so this needs to be + * verified before this function is called. + * + * Note: this method in the registry contract is only callable by contract + * owner, so this is not generally available. + */ +export const upgradeDpid = async (dpid: number, ceramicStream: string): Promise => { + const logger = parentLogger.child({ + module: 'NODE::upgradeDpid', + ceramicStream, + dpid, + }); + + const provider = new ethers.providers.JsonRpcProvider(optimismRpcUrl); + + if (!process.env.REGISTRY_OWNER_PKEY) { + throw new Error('REGISTRY_OWNER_PKEY missing, cannot upgrade dpid'); + } + + await provider.ready; + const wallet = new ethers.Wallet( + apiServerUrl.includes('localhost') || apiServerUrl.includes('host.docker.internal') + ? GANACHE_PKEY + : process.env.REGISTRY_OWNER_PKEY, + provider, + ); + + const dpidAliasRegistry = tc.DpidAliasRegistry__factory.connect(aliasRegistryAddress, wallet); + + const historyValid = await validateHistory(dpid, ceramicStream, dpidAliasRegistry, logger); + if (!historyValid) { + logger.warn({ dpid, ceramicStream }, 'version histories disagree; refusing to upgrade dPID'); + throw new Error('dPID history mismatch'); + } + + const tx = await dpidAliasRegistry.upgradeDpid(dpid, ceramicStream); + await tx.wait(); + + logger.info(`Upgraded dPID ${dpid} to track stream ${ceramicStream}`); + + return dpid; +}; + +/** + * Makes sure the passed stream history matches the sequence of + * CID's as they were imported into the alias registry contract. + * This should be checked before upgrading a dPID, to make sure + * the new stream accurately represents the publish history. + */ +const validateHistory = async (dpid: number, ceramicStream: string, registry: DpidAliasRegistry, logger: Logger) => { + const client = newCeramicClient(ceramicApiUrl); + const legacyEntry = await registry.legacyLookup(dpid); + + const streamEvents = await resolveHistory(client, ceramicStream); + const streamStates = await Promise.all( + streamEvents.map((s) => s.commit).map((c) => client.loadStream(c).then((state) => state.content)), + ); + + const [_owner, legacyVersions] = legacyEntry; + + // Stream could have one or more additional entries + if (legacyVersions.length > streamStates.length) { + logger.error({ legacyVersions, streamStates }, 'Stream has shorter history than legacy dPID'); + return false; + } + + for (const [i, legacyVersion] of legacyVersions.entries()) { + // Cant compare timestamp because anchor time WILL differ + const expectedCid = legacyVersion[0]; + if (expectedCid !== streamStates[i].manifest) { + logger.error({ legacyVersions, streamStates }, 'Manifest CID mismatch between legacy and stream history'); + return false; + } + } + + logger.info({ dpid, ceramicStream }, 'Legacy and stream history check passed'); + return true; +}; diff --git a/desci-server/src/controllers/nodes/doi.ts b/desci-server/src/controllers/nodes/doi.ts new file mode 100644 index 000000000..4a3a2a543 --- /dev/null +++ b/desci-server/src/controllers/nodes/doi.ts @@ -0,0 +1,206 @@ +import { DocumentId } from '@automerge/automerge-repo'; +import { + CommonComponentPayload, + ManifestActions, + PdfComponent, + PdfComponentPayload, + ResearchObjectComponentType, + ResearchObjectV1AuthorRole, +} from '@desci-labs/desci-models'; +import { NextFunction, Response } from 'express'; +import { z } from 'zod'; + +import { + BadRequestError, + NotFoundError, + RequestWithNode, + SuccessResponse, + crossRefClient, + getLatestManifestFromNode, + metadataClient, + logger as parentLogger, +} from '../../internal.js'; +import { MetadataResponse } from '../../services/AutomatedMetadata.js'; +import { Work, WorkSelectOptions } from '../../services/crossRef/definitions.js'; +import { getOrcidFromURL } from '../../services/crossRef/utils.js'; +import repoService from '../../services/repoService.js'; + +export const attachDoiSchema = z.object({ + body: z.object({ + uuid: z.string(), + path: z.string().startsWith('root/', 'Invalid component path'), + }), +}); + +export const automateManuscriptDoi = async (req: RequestWithNode, res: Response, _next: NextFunction) => { + const { uuid, path, prepublication } = req.body; + + const logger = parentLogger.child({ + module: 'DOI::AttachDOI', + body: req.body, + }); + + const node = req.node; + + const latestManifest = await getLatestManifestFromNode(node); + const componentIndex = latestManifest.components.findIndex( + (component) => + component.type === ResearchObjectComponentType.PDF && (component.payload as CommonComponentPayload).path === path, + ); + + if (componentIndex === -1) { + logger.error( + { + path, + componentIndex, + components: latestManifest.components, + latestManifest, + }, + 'Component to attach DOI not a valid pdf', + ); + throw new BadRequestError('Component to attach DOI not a valid pdf'); + } + + const component = latestManifest.components[componentIndex] as PdfComponent; + + let doi: string; + let metadata: MetadataResponse; + + // if doi is present, pull from openalex + if (component.payload?.doi) { + doi = component.payload.doi[0]; + metadata = await metadataClient.queryDoiFromOpenAlex(doi); + } + + let grobidMetadata: { + authors: string[]; + title: string; + abstract: string; + doi: string; + } | null; + + if (!metadata) { + logger.info('Pull from grobid'); + // pull from grobid + grobidMetadata = await metadataClient.queryFromGrobid(component.payload.cid); + + logger.info({ grobidMetadata }, 'GROBID METADATA'); + if (grobidMetadata?.doi) { + // doi = grobidMetadata.doi; + logger.info({ doi }, 'DOI PARSED FROM GROBID'); + const openAlexMetadata = await metadataClient.queryDoiFromOpenAlex(grobidMetadata.doi); + metadata = { + ...openAlexMetadata, + abstract: grobidMetadata.abstract || openAlexMetadata.abstract, + title: grobidMetadata.title || openAlexMetadata.title, + }; + } else if (grobidMetadata) { + metadata = { + title: grobidMetadata?.title, + abstract: grobidMetadata?.abstract, + authors: grobidMetadata?.authors.map((author) => ({ name: author, affiliations: [], orcid: '' })), + pdfUrl: '', + keywords: [], + }; + } + + logger.info({ grobidMetadata }, 'Grobid Metadata'); + } + + // todo: pull metadata from crossrefClient#getDoiMetadata + // const doiMetadata = await crossRefClient.getDoiMetadata(''); + // attempt to pull doi from crossref api + if (!doi && metadata?.title) { + const works = await crossRefClient.listWorks({ + rows: 5, + select: [WorkSelectOptions.DOI, WorkSelectOptions.TITLE, WorkSelectOptions.AUTHOR], + queryTitle: metadata.title, + }); + const work = works?.data?.message?.items.find((item) => + item.title.some((t) => t.toLowerCase() === metadata?.title.toLowerCase()), + ); + if (work?.DOI) { + doi = work.DOI; + } + } + + logger.info({ metadata }, 'METADATA'); + if (!metadata) throw new NotFoundError('DOI not found!'); + + const actions: ManifestActions[] = []; + + if (!doi && metadata?.doi) { + // fallback to metadata.doi if component payload has no doi + doi = metadata?.doi; + logger.info({ doi }, 'USE DOI FROM METADATA'); + } + + if (doi) { + actions.push({ + type: 'Update Component', + component: { + ...component, + payload: { + ...component.payload, + doi: component.payload?.doi ? component.payload.doi : [doi], + // ...(metadata?.keywords && { + // keywords: component.payload?.keywords + // ? component?.payload.keywords.concat(metadata.keywords) + // : metadata.keywords, + // }), + } as PdfComponentPayload & CommonComponentPayload, + }, + componentIndex, + }); + } + + if (metadata?.abstract?.trim()) { + actions.push({ + type: 'Update Description', + description: metadata.abstract.trim(), + }); + } + + if (prepublication) { + const { title, authors } = metadata; + + // update title + actions.push({ type: 'Update Title', title }); + + // update contributors if populated + if (authors.length > 0) { + actions.push({ + type: 'Add Contributors', + contributors: authors.map((author) => ({ + name: author.name, + role: ResearchObjectV1AuthorRole.AUTHOR, + ...(author.affiliations.length > 0 && { organizations: author.affiliations }), + ...(author.orcid && { orcid: getOrcidFromURL(author.orcid) }), + })), + }); + } + } + + logger.info({ actions }, 'Automate DOI actions'); + + const response = await repoService.dispatchAction({ + uuid, + documentId: node.manifestDocumentId as DocumentId, + actions, + }); + + logger.info({ response: response.manifest.components[componentIndex] }, 'component updated'); + + new SuccessResponse(true).send(res); +}; + +const transformWorkToMetadata = (work: Work): MetadataResponse => { + const title = work.title[0]; + const authors = work.author.map((author) => ({ + orcid: author.ORCID ? getOrcidFromURL(author.ORCID) : null, + name: author.given ? `${author.given} ${author.family}`.trim() : author.name, + affiliations: author.affiliation.map((org) => ({ name: org.name, id: '' })), + })); + + return { title, authors, pdfUrl: '', keywords: [] }; +}; diff --git a/desci-server/src/controllers/nodes/frontmatterPreview.ts b/desci-server/src/controllers/nodes/frontmatterPreview.ts new file mode 100644 index 000000000..bc68957ef --- /dev/null +++ b/desci-server/src/controllers/nodes/frontmatterPreview.ts @@ -0,0 +1,65 @@ +import type { Request, Response } from 'express'; + +import { prisma } from '../../client.js'; +import { logger as parentLogger } from '../../logger.js'; +import { publishPackageService } from '../../services/PublishPackage.js'; +import { ensureUuidEndsWithDot } from '../../utils.js'; + +type FrontmatterPreviewQueryParams = { + contentPageOnly?: boolean; +}; + +type FrontmatterPreviewReqBodyParams = { + uuid: string; + pdfCid: string; +}; + +type FrontmatterPreviewResponse = { + ok: true; + frontmatterPageCid: string; + contentPageCid: string; +}; + +type FrontmatterPreviewErrorResponse = { + ok: false; + error: string; + status?: number; +}; +const logger = parentLogger.child({ + module: 'NODES::FrontmatterPreview', +}); +/** + * Generates previews for the frontmatter and first content page of a PDF + * @param req.params.contentPageOnly will only generate the first content page preview (Used before frontmatter is generated) + */ +export const frontmatterPreview = async ( + req: Request, + res: Response, +) => { + logger.trace({ fn: 'Retrieving frontmatter previews', ...req.body, ...req.params }); + const user = (req as any).user; + const { uuid, pdfCid } = req.body; + const { contentPageOnly } = req.params; + + logger.trace({ fn: 'Retrieving frontmatter previews', uuid, contentPageOnly, userId: user?.id }); + + if (!uuid) return res.status(400).json({ ok: false, error: 'UUID is required.' }); + if (!pdfCid) return res.status(400).json({ ok: false, error: 'pdfCid is required.' }); + + if (user) { + // Check if user owns node, if requesting previews + const node = await prisma.node.findFirst({ + where: { + ownerId: user.id, + uuid: ensureUuidEndsWithDot(uuid), + }, + }); + + if (!node) return res.status(401).json({ ok: false, error: 'Unauthorized' }); + } + + // debugger; + const previewMap = await publishPackageService.generatePdfPreview(pdfCid, 1000, [1, 2], ensureUuidEndsWithDot(uuid)); + // debugger; + return res.status(200).json({ ok: true, frontmatterPageCid: previewMap[1], contentPageCid: previewMap[2] }); +}; diff --git a/desci-server/src/controllers/nodes/getDraftNodeStats.ts b/desci-server/src/controllers/nodes/getDraftNodeStats.ts new file mode 100644 index 000000000..e16c3c08c --- /dev/null +++ b/desci-server/src/controllers/nodes/getDraftNodeStats.ts @@ -0,0 +1,38 @@ +import type { Request, Response } from 'express'; + +import { prisma } from '../../client.js'; +import { logger as parentLogger } from '../../logger.js'; + +const logger = parentLogger.child({ + module: 'NODE::getPublishedNodesController', +}); + +// type NodeWithDpid = Node & { dpid?: string; isPublished: boolean; index?: IndexedResearchObject }; + +type GetDraftNodeStatsResponse = { + ok: true; + totalDraftNodes: number; +}; + +export const getDraftNodeStats = async (req: Request, res: Response) => { + const user = (req as any).user; + const ipfsQuery = req.query.g; + + logger.info({ + body: req.body, + user: (req as any).user, + ipfsQuery, + }); + + let nodes = await prisma.node.count({ + where: { + ownerId: user.id, + isDeleted: false, + }, + }); + + return res.send({ + ok: true, + totalDraftNodes: nodes.valueOf(), + }); +}; diff --git a/desci-server/src/controllers/nodes/getPublishedNodeStats.ts b/desci-server/src/controllers/nodes/getPublishedNodeStats.ts new file mode 100644 index 000000000..61f00e078 --- /dev/null +++ b/desci-server/src/controllers/nodes/getPublishedNodeStats.ts @@ -0,0 +1,113 @@ +import type { Request, Response, NextFunction } from 'express'; + +import { prisma } from '../../client.js'; +import { NodeUuid, resolveNodeManifest } from '../../internal.js'; +import { logger as parentLogger } from '../../logger.js'; +import { type ThumbnailMap, thumbnailsService } from '../../services/Thumbnails.js'; +import { asyncMap, decodeBase64UrlSafeToHex, ensureUuidEndsWithDot, randomUUID64 } from '../../utils.js'; +import { IndexedResearchObject, getIndexedResearchObjects } from '../../theGraph.js'; +import { ResearchObjectV1, ResearchObjectV1Dpid } from '@desci-labs/desci-models'; +import { Node, NodeCover } from '@prisma/client'; + +const logger = parentLogger.child({ + module: 'NODE::getPublishedNodesController', +}); + +type NodeWithDpid = { + uuid: string; + createdAt: Date; + updatedAt: Date; + ownerId: number; + title: string; + manifestUrl: string; + cid: string; + NodeCover: NodeCover[]; + isPublished: boolean; +} & { dpid?: ResearchObjectV1Dpid; isPublished: boolean; index?: IndexedResearchObject }; + +type GetPublishedNodeStatsResponse = { + ok: true; + totalPublishedNodes: number; +}; + +export const getPublishedNodeStats = async ( + req: Request, + res: Response, +) => { + const owner = (req as any).user; + const ipfsQuery = req.query.g; + + logger.info({ + body: req.body, + user: (req as any).user, + ipfsQuery, + }); + + let nodes = await prisma.node.findMany({ + select: { + uuid: true, + id: true, + createdAt: true, + updatedAt: true, + ownerId: true, + title: true, + manifestUrl: true, + cid: true, + NodeCover: true, + }, + where: { + ownerId: owner.id, + isDeleted: false, + ceramicStream: { + not: null, + }, + }, + orderBy: { updatedAt: 'desc' }, + // take: limit, + // skip: (page - 1) * limit, + }); + + // transition UUID + const indexMap = {}; + + try { + const uuids = nodes.map((n) => n.uuid); + const indexed = await getIndexedResearchObjects(uuids); + indexed.researchObjects.forEach((e) => { + indexMap[e.id] = e; + }); + } catch (err) { + logger.error({ err: err.message }, '[ERROR] graph index lookup fail'); + // todo: try on chain direct (current method doesnt support batch, so fix that and add here) + } + + logger.info({ indexMap }, 'indexMap'); + logger.info({ nodes }, 'nodes'); + + const enhancedNodes = await asyncMap(nodes, async (n) => { + const hex = `0x${decodeBase64UrlSafeToHex(n.uuid)}`; + const result = indexMap[hex]; + const manifest: ResearchObjectV1 = result?.recentCid + ? await resolveNodeManifest(result?.recentCid, ipfsQuery as string) + : null; + const o = { + ...n, + uuid: n.uuid.replaceAll('.', ''), + isPublished: !!indexMap[hex], + index: indexMap[hex], + dpid: manifest?.dpid, + }; + delete o.id; + + return o; + }); + logger.info({ enhancedNodes }, 'enhancedNodes'); + + const totalPublishedNodes = enhancedNodes.filter((n) => n.isPublished).length; + logger.info({ totalPublishedNodes }, 'totalPublishedNodes'); + + res.send({ + ok: true, + totalPublishedNodes, + }); +}; diff --git a/desci-server/src/controllers/nodes/getPublishedNodes.ts b/desci-server/src/controllers/nodes/getPublishedNodes.ts new file mode 100644 index 000000000..4cf343a3e --- /dev/null +++ b/desci-server/src/controllers/nodes/getPublishedNodes.ts @@ -0,0 +1,85 @@ +// import { randomBytes } from 'crypto'; + +import { ResearchObjectV1, ResearchObjectV1Dpid } from '@desci-labs/desci-models'; +import axios from 'axios'; +import { Request, Response, NextFunction } from 'express'; + +import { prisma } from '../../client.js'; +import { resolveNodeManifest } from '../../internal.js'; +import { logger as parentLogger } from '../../logger.js'; +import { IndexedResearchObject, getIndexedResearchObjects } from '../../theGraph.js'; +import { asyncMap, decodeBase64UrlSafeToHex, randomUUID64 } from '../../utils.js'; +import { Node } from '@prisma/client'; + +const logger = parentLogger.child({ + module: 'NODE::getPublishedNodes', +}); +// type NodeWithDpid = { dpid?: ResearchObjectV1Dpid; isPublished: boolean; index?: IndexedResearchObject }; +export const getPublishedNodes = async (req: Request, res: Response, next: NextFunction) => { + const owner = (req as any).user; + const ipfsQuery = req.query.g; + + // implement paging + const page: number = req.query.page ? parseInt(req.query.page as string) : 1; + const limit: number = req.query.limit ? parseInt(req.query.limit as string) : 20; + + let nodes = await prisma.node.findMany({ + select: { + uuid: true, + id: true, + createdAt: true, + updatedAt: true, + ownerId: true, + title: true, + manifestUrl: true, + cid: true, + NodeCover: true, + }, + where: { + ownerId: owner.id, + isDeleted: false, + ceramicStream: { + not: null, + }, + }, + orderBy: { updatedAt: 'desc' }, + }); + logger.info({ nodes }, 'nodeess'); + const indexMap = {}; + + try { + const uuids = nodes.map((n) => n.uuid); + const indexed = await getIndexedResearchObjects(uuids); + indexed.researchObjects.forEach((e) => { + indexMap[e.id] = e; + }); + } catch (err) { + logger.error({ err: err.message }, '[ERROR] graph index lookup fail'); + // todo: try on chain direct (current method doesnt support batch, so fix that and add here) + } + + let foundNodes = await asyncMap(nodes, async (n) => { + const hex = `0x${decodeBase64UrlSafeToHex(n.uuid)}`; + const result = indexMap[hex]; + const manifest: ResearchObjectV1 = result?.recentCid + ? await resolveNodeManifest(result?.recentCid, ipfsQuery as string) + : null; + const o = { + ...n, + uuid: n.uuid.replaceAll('.', ''), + isPublished: !!indexMap[hex], + index: indexMap[hex], + dpid: manifest?.dpid, + }; + delete o.id; + + return o; + }); + + logger.info({ foundNodes }, 'foundNodes'); + + foundNodes = foundNodes.filter((n) => n.isPublished); + foundNodes = foundNodes.slice((page - 1) * limit, page * limit); + + res.send({ nodes: foundNodes }); +}; diff --git a/desci-server/src/controllers/nodes/index.ts b/desci-server/src/controllers/nodes/index.ts index 1dccea38d..08a710fbf 100755 --- a/desci-server/src/controllers/nodes/index.ts +++ b/desci-server/src/controllers/nodes/index.ts @@ -11,3 +11,5 @@ export * from './prepublish.js'; export * from './share.js'; export * from './nodesCover.js'; export * from './manager.js'; +export * from './metadata.js'; +export * from './doi.js'; diff --git a/desci-server/src/controllers/nodes/list.ts b/desci-server/src/controllers/nodes/list.ts index 34aa00699..ac0fb99b4 100755 --- a/desci-server/src/controllers/nodes/list.ts +++ b/desci-server/src/controllers/nodes/list.ts @@ -18,6 +18,10 @@ export const list = async (req: Request, res: Response, next: NextFunction) => { const owner = (req as any).user; const ipfsQuery = req.query.g; + // implement paging + const page: number = req.query.page ? parseInt(req.query.page as string) : 1; + const limit: number = req.query.limit ? parseInt(req.query.limit as string) : 10; + logger.info({ body: req.body, user: (req as any).user, @@ -41,6 +45,8 @@ export const list = async (req: Request, res: Response, next: NextFunction) => { isDeleted: false, }, orderBy: { updatedAt: 'desc' }, + take: limit, + skip: (page - 1) * limit, }); // transition UUID @@ -94,7 +100,9 @@ export const list = async (req: Request, res: Response, next: NextFunction) => { nodes = await asyncMap(nodes, async (n) => { const hex = `0x${decodeBase64UrlSafeToHex(n.uuid)}`; const result = indexMap[hex]; - const manifest: ResearchObjectV1 = result?.recentCid ? await resolveNodeManifest(result?.recentCid) : null; + const manifest: ResearchObjectV1 = result?.recentCid + ? await resolveNodeManifest(result?.recentCid, ipfsQuery as string) + : null; const o = { ...n, uuid: n.uuid.replaceAll('.', ''), diff --git a/desci-server/src/controllers/nodes/metadata.ts b/desci-server/src/controllers/nodes/metadata.ts new file mode 100644 index 000000000..0f6ec983a --- /dev/null +++ b/desci-server/src/controllers/nodes/metadata.ts @@ -0,0 +1,69 @@ +import { DocumentId } from '@automerge/automerge-repo'; +import { ActionType } from '@prisma/client'; +import { NextFunction, Response } from 'express'; +import { z } from 'zod'; + +import { + BadRequestError, + InternalError, + RequestWithNode, + SuccessMessageResponse, + SuccessResponse, + metadataClient, +} from '../../internal.js'; +import { MetadataResponse } from '../../services/AutomatedMetadata.js'; +import { saveInteraction } from '../../services/interactionLog.js'; +import { isDoiLink } from '../data/utils.js'; + +export const automateMetadataSchema = z.object({ + params: z.object({ + uuid: z.string(), + }), + body: z.object({ + authors: z.array( + z.object({ + orcid: z.string().optional(), + name: z.string(), + affiliation: z.string().optional(), + }), + ), + title: z.string(), + pdfUrl: z.string().optional(), + keywords: z.array(z.string()).optional(), + }), +}); + +export const automateMetadata = async (req: RequestWithNode, res: Response, _next: NextFunction) => { + const node = req.node; + const metadata = req.body as MetadataResponse; + + if (metadata) { + const response = await metadataClient.automateMetadata(metadata, { + uuid: node.uuid, + documentId: node.manifestDocumentId as DocumentId, + }); + + if (!response) throw new InternalError('Ran into an error while applying metadata'); + // await saveInteraction(req, ActionType.AUTOMATE_METADATA, { uuid: node.uuid }); + + new SuccessMessageResponse().send(res); + } else { + throw new BadRequestError(); + } +}; + +export const generateMetadataSchema = z.object({ + body: z.object({ + cid: z.string().optional(), + doi: z.string().optional(), + }), +}); + +export const generateMetadata = async (req: RequestWithNode, res: Response, _next: NextFunction) => { + const { cid, doi } = req.body; + if (!cid && !isDoiLink(doi)) throw new BadRequestError('Invalid DOI url'); + const metadata = await metadataClient.getResourceMetadata({ cid, doi }); + // await saveInteraction(req, ActionType.GENERATE_METADATA, { uuid: node.uuid, cid, status: !!metadata }); + + return new SuccessResponse(metadata).send(res); +}; diff --git a/desci-server/src/controllers/nodes/preparePublishPackage.ts b/desci-server/src/controllers/nodes/preparePublishPackage.ts new file mode 100644 index 000000000..7b72b0790 --- /dev/null +++ b/desci-server/src/controllers/nodes/preparePublishPackage.ts @@ -0,0 +1,92 @@ +import type { Request, Response } from 'express'; + +import { prisma } from '../../client.js'; +import { logger as parentLogger } from '../../logger.js'; +import { getManifestByCid } from '../../services/data/processing.js'; +import { PreviewMap, publishPackageService } from '../../services/PublishPackage.js'; +import { CidString } from '../../services/Thumbnails.js'; +import { ensureUuidEndsWithDot } from '../../utils.js'; + +export type PreparePublishPackageReqBodyParams = { + manifestCid: string; + pdfCid: string; + doi?: string; // temp till DOI system is operational + dpid: string; + nodeUuid: string; + withPreviews?: boolean; +}; + +type PreparePublishPackageResponse = { + ok: true; + distPdfCid: CidString; + frontmatterPageCid?: string; + contentPageCid?: string; +}; + +type PreparePublishPackageErrorResponse = { + ok: false; + error: string; + status?: number; +}; + +/** + * Generates a prepublish package for a published node (at the moment just the distro PDF) + */ +export const preparePublishPackage = async ( + req: Request, + res: Response, +) => { + const { pdfCid, doi, nodeUuid, manifestCid, withPreviews } = req.body; + const logger = parentLogger.child({ + module: 'NODES::PreparePublishPackageController', + pdfCid, + doi, + nodeUuid, + withPreviews, + }); + // debugger; + logger.trace({ fn: 'Retrieving Publish Package' }); + + if (!nodeUuid) return res.status(400).json({ ok: false, error: 'nodeUuid is required.' }); + // if (!doi) return res.status(400).json({ ok: false, error: 'doi is required.' }); + if (!pdfCid) return res.status(400).json({ ok: false, error: 'pdfCid is required.' }); + if (!manifestCid) return res.status(400).json({ ok: false, error: 'manifestCid is required.' }); + + try { + const node = await prisma.node.findFirst({ + where: { + uuid: ensureUuidEndsWithDot(nodeUuid), + }, + }); + + if (!node) return res.status(404).json({ ok: false, error: 'Node not found' }); + + const manifest = await getManifestByCid(manifestCid); + if (!manifest) return res.status(404).json({ ok: false, error: 'Manifest not found' }); + // debugger; + const { pdfCid: distPdfCid } = await publishPackageService.prepareDistributionPdf({ + pdfCid, + node, + doi, + manifest, + manifestCid, + }); + + // Fire off email to all contributors + // await publishServices.sendVersionUpdateEmailToAllContributors({ node, manuscriptCid: distPdfCid }); + + let previewMap: PreviewMap = {}; + if (withPreviews) { + previewMap = await publishPackageService.generatePdfPreview(distPdfCid, 1000, [1, 2], node.uuid); + } + + return res.status(200).json({ + ok: true, + distPdfCid, + ...(withPreviews && { frontmatterPageCid: previewMap[1], contentPageCid: previewMap[2] }), + }); + } catch (e) { + logger.error({ fn: 'preparePublishPackage', error: e.message }); + return res.status(500).json({ ok: false, error: 'Failed preparing distribution package' }); + } +}; diff --git a/desci-server/src/controllers/nodes/prepublish.ts b/desci-server/src/controllers/nodes/prepublish.ts index 56f7df86b..85222474f 100644 --- a/desci-server/src/controllers/nodes/prepublish.ts +++ b/desci-server/src/controllers/nodes/prepublish.ts @@ -1,6 +1,6 @@ import { ResearchObjectV1 } from '@desci-labs/desci-models'; import { NodeVersion } from '@prisma/client'; -import { Response } from 'express'; +import { NextFunction, Response } from 'express'; import { prisma } from '../../client.js'; import { logger as parentLogger } from '../../logger.js'; @@ -30,7 +30,7 @@ export interface PrepublishErrorResponse { /** * DAGifies the drafts current DB tree state, adds the structure to IPFS (No Files Pinned, Folders staged), and updates the manifest data bucket CID. */ -export const prepublish = async (req: RequestWithNode, res: Response) => { +export const prepublish = async (req: RequestWithNode, res: Response, _next: NextFunction) => { const owner = req.user; const node = req.node; const { uuid } = req.body; diff --git a/desci-server/src/controllers/nodes/publish.ts b/desci-server/src/controllers/nodes/publish.ts index 364fd9141..6b7febe47 100644 --- a/desci-server/src/controllers/nodes/publish.ts +++ b/desci-server/src/controllers/nodes/publish.ts @@ -1,24 +1,24 @@ import { ResearchObjectV1 } from '@desci-labs/desci-models'; -import { ActionType, Prisma, PublishTaskQueueStatus, User } from '@prisma/client'; +import { ActionType, Node, Prisma, PublishTaskQueue, PublishTaskQueueStatus, User } from '@prisma/client'; import { Request, Response, NextFunction } from 'express'; import { prisma } from '../../client.js'; import { logger as parentLogger } from '../../logger.js'; import { getManifestByCid } from '../../services/data/processing.js'; -import { fixDpid, getTargetDpidUrl } from '../../services/fixDpid.js'; +import { getTargetDpidUrl } from '../../services/fixDpid.js'; import { saveInteraction, saveInteractionWithoutReq } from '../../services/interactionLog.js'; import { - publishResearchObject, cacheNodeMetadata, getAllCidsRequiredForPublish, createPublicDataRefs, - createDataMirrorJobs, setCeramicStream, + setDpidAlias, } from '../../services/nodeManager.js'; -import orcidApiService from '../../services/orcid.js'; import { discordNotify } from '../../utils/discordUtils.js'; import { ensureUuidEndsWithDot } from '../../utils.js'; +import { getOrCreateDpid, upgradeDpid } from './createDpid.js'; + export type PublishReqBody = { uuid: string; cid: string; @@ -26,6 +26,7 @@ export type PublishReqBody = { transactionId: string; ceramicStream?: string; commitId?: string; + useNewPublish: boolean; }; export type PublishRequest = Request & { @@ -35,15 +36,29 @@ export type PublishRequest = Request & { export type PublishResBody = | { ok: boolean; - taskId: number; + taskId?: number; } | { error: string; }; - +async function updateAssociatedAttestations(nodeUuid: string, dpid: string) { + const logger = parentLogger.child({ + // id: req.id, + module: 'NODE::publishController', + }); + logger.info({ nodeUuid, dpid }, `[updateAssociatedAttestations]`); + return await prisma.nodeAttestation.updateMany({ + where: { + nodeUuid, + }, + data: { + nodeDpid10: dpid, + }, + }); +} // call node publish service and add job to queue export const publish = async (req: PublishRequest, res: Response, _next: NextFunction) => { - const { uuid, cid, manifest, transactionId, ceramicStream, commitId } = req.body; + const { uuid, cid, manifest, transactionId, ceramicStream, commitId, useNewPublish } = req.body; // debugger; const email = req.user.email; const logger = parentLogger.child({ @@ -58,6 +73,7 @@ export const publish = async (req: PublishRequest, res: Response commitId, email, user: req.user, + useNewPublish, }); if (!uuid || !cid || !manifest) { @@ -97,44 +113,53 @@ export const publish = async (req: PublishRequest, res: Response return res.status(400).json({ error: 'failed' }); } + // Check if there is already an ongoing publish job in the queue const task = await prisma.publishTaskQueue.findFirst({ where: { uuid: ensureUuidEndsWithDot(uuid), status: { not: PublishTaskQueueStatus.FAILED } }, }); if (task) return res.status(400).json({ error: 'Node publishing in progress' }); + let publishTask: PublishTaskQueue | undefined; + + if (useNewPublish) { + logger.info({ ceramicStream, commitId, uuid, owner: owner.id }, 'Triggering new publish flow'); + await syncPublish(ceramicStream, commitId, node, owner, cid, uuid, manifest); + } else { + publishTask = await prisma.publishTaskQueue.create({ + data: { + cid, + dpid: manifest.dpid?.id, + userId: owner.id, + transactionId, + ceramicStream, + commitId, + uuid: ensureUuidEndsWithDot(uuid), + status: PublishTaskQueueStatus.WAITING, + }, + }); + } + saveInteraction( req, ActionType.PUBLISH_NODE, { cid, - dpid: manifest.dpid.id, + dpid: manifest.dpid?.id, userId: owner.id, transactionId, - ceramicStream: ceramicStream ?? '', - commitId: commitId ?? '', + ceramicStream, + commitId, uuid: ensureUuidEndsWithDot(uuid), status: PublishTaskQueueStatus.WAITING, }, owner.id, ); - const publishTask = await prisma.publishTaskQueue.create({ - data: { - cid, - dpid: manifest.dpid.id, - userId: owner.id, - transactionId, - ceramicStream: ceramicStream ?? '', - commitId: commitId ?? '', - uuid: ensureUuidEndsWithDot(uuid), - status: PublishTaskQueueStatus.WAITING, - }, - }); - + updateAssociatedAttestations(node.uuid, manifest.dpid.id); return res.send({ ok: true, - taskId: publishTask.id, + taskId: publishTask?.id, }); } catch (err) { logger.error({ err }, '[publish::publish] node-publish-err'); @@ -142,6 +167,183 @@ export const publish = async (req: PublishRequest, res: Response } }; +/** + * Synchronously perform publish steps before returning. + * + * This is generally fast because the ceramic update is already done, + * but two cases are a bit slower: + * 1. first time publish (wait on backend tx) + * 2. dpid upgrade (wait on backend tx) + * + * Semantically, these can both be made fire-and-forget promises if we can + * manage without instantly having the dPID alias available in this function. + */ +const syncPublish = async ( + ceramicStream: string, + commitId: string, + node: Node, + owner: User, + cid: string, + uuid: string, + manifest: ResearchObjectV1, +): Promise => { + const logger = parentLogger.child({ + module: 'NODE::syncPublish', + uuid, + cid, + ceramicStream, + commitId, + }); + + const latestNodeVersion = await prisma.nodeVersion.findFirst({ + where: { + id: -1, + nodeId: node.id, + }, + orderBy: { + id: 'desc', + }, + }); + + // Prevent duplicating the NodeVersion entry if the latest version is the same as the one we're trying to publish, as a draft save is triggered before publishing + const latestNodeVersionId = latestNodeVersion?.manifestUrl === cid ? latestNodeVersion.id : -1; + + const nodeVersion = await prisma.nodeVersion.upsert({ + where: { + id: latestNodeVersionId, + }, + update: { + commitId, + }, + create: { + nodeId: node.id, + manifestUrl: cid, + commitId, + }, + }); + + // first time we see a stream for this node, make sure we bind it in the db + if (!node.ceramicStream) { + logger.trace(`[publish:publish] setting streamID ${ceramicStream} on node ${uuid}`); + await setCeramicStream(uuid, ceramicStream); + } else if (node.ceramicStream !== ceramicStream) { + logger.warn( + // This is unexpected and weird, but important to know if it occurs + `[publish:publish] stream on record does not match passed streamID`, + { database: node.ceramicStream, ceramicStream }, + ); + } + + const legacyDpid = manifest.dpid?.id ? parseInt(manifest.dpid.id) : undefined; + let dpidAlias: number = node.dpidAlias; + + // Do dataRef and dPID registration operations concurrently + const promises = []; + + if (!dpidAlias) { + // The only reason this isn't just fire-and-forget is that we want the dpid + // for the discord notification, which won't be available otherwise for + // first time publishes. + promises.push(createOrUpgradeDpidAlias(legacyDpid, ceramicStream, uuid).then((dpid) => (dpidAlias = dpid))); + } + + promises.push( + handlePublicDataRefs({ + nodeId: node.id, + userId: owner.id, + manifestCid: cid, + nodeVersionId: nodeVersion.id, + nodeUuid: node.uuid, + }), + ); + + await Promise.all(promises); + + // TODO: different resolver url for codex? :thinking: + const targetDpidUrl = getTargetDpidUrl(); + + discordNotify(`${targetDpidUrl}/${dpidAlias}`); + + /** + * Save the cover art for this Node for later sharing: PDF -> JPG for this version + */ + cacheNodeMetadata(node.uuid, cid); +}; + +/** + * Creates new dPID if legacyDpid is falsy, otherwise tries to upgrade + * the dPID by binding the stream in the alias registry for that dPID. + */ +const createOrUpgradeDpidAlias = async ( + legacyDpid: number | undefined, + ceramicStream: string, + uuid: string, +): Promise => { + let dpidAlias: number; + if (legacyDpid) { + // Requires the REGISTRY_OWNER_PKEY to be set in env + dpidAlias = await upgradeDpid(legacyDpid, ceramicStream); + } else { + // Will nicely return the existing dpid if this is called multiple times + dpidAlias = await getOrCreateDpid(ceramicStream); + } + await setDpidAlias(uuid, dpidAlias); + return dpidAlias; +}; + +type PublishData = { + nodeId: number; + nodeUuid: string; + userId: number; + manifestCid: string; + nodeVersionId: number; +}; + +const handlePublicDataRefs = async (params: PublishData): Promise => { + const { nodeId, nodeUuid, userId, manifestCid, nodeVersionId } = params; + + const logger = parentLogger.child({ + module: 'NODE::handlePublicDataRefs', + uuid: nodeUuid, + cid: manifestCid, + }); + + /** + * Publish Step 1: + * Create public data refs and data mirror jobs from the CIDs in the manifest + */ + let cidsRequiredForPublish: Prisma.PublicDataReferenceCreateManyInput[] = []; + try { + /*** + * Traverse the DAG structure to find all relevant CIDs and get relevant info for indexing + */ + cidsRequiredForPublish = await getAllCidsRequiredForPublish(manifestCid, nodeUuid, userId, nodeId, nodeVersionId); + + /** + * Index the DAGs from IPFS in order to avoid recurrent IPFS calls when requesting data in the future + */ + const newPublicDataRefs = await createPublicDataRefs(cidsRequiredForPublish, userId, nodeVersionId); + + /** + * Save a success for configurable service quality tracking purposes + */ + await saveInteractionWithoutReq(ActionType.PUBLISH_NODE_CID_SUCCESS, { + params, + result: { newPublicDataRefs }, + }); + } catch (error) { + logger.error({ error }, `[publish::publish] error=${error}`); + /** + * Save a failure for configurable service quality tracking purposes + */ + await saveInteractionWithoutReq(ActionType.PUBLISH_NODE_CID_FAIL, { + params, + error, + }); + throw error; + } +}; + export const publishHandler = async ({ transactionId, userId, @@ -231,104 +433,17 @@ export const publishHandler = async ({ logger.trace(`[publish::publish] nodeUuid=${node.uuid}, manifestCid=${cid}, transaction=${transactionId}`); - const cidsPayload = { + await handlePublicDataRefs({ nodeId: node.id, + nodeUuid: node.uuid, userId: owner.id, manifestCid: cid, nodeVersionId: nodeVersion.id, - nodeUuid: node.uuid, - }; - - /** - * Publish Step 1: - * Create public data refs and data mirror jobs from the CIDs in the manifest - */ - let cidsRequiredForPublish: Prisma.PublicDataReferenceCreateManyInput[] = []; - // debugger; - try { - /*** - * Traverse the DAG structure to find all relevant CIDs and get relevant info for indexing - */ - cidsRequiredForPublish = await getAllCidsRequiredForPublish(cid, node.uuid, owner.id, node.id, nodeVersion.id); - - /** - * Index the DAGs from IPFS in order to avoid recurrent IPFS calls when requesting data in the future - */ - const newPublicDataRefs = await createPublicDataRefs(cidsRequiredForPublish, owner.id, nodeVersion.id); - - /** - * Create a job per mirror in order to track the status of the upload - * There can be multiple mirrors per node, right now there is just Estuary - * - * NOTE: uncomment when reactivating public ref mirroring - const dataMirrorJobs = await createDataMirrorJobs(cidsRequiredForPublish, owner.id); - */ - - // TODO: update public data refs to link versionId - - /** - * Save a success for configurable service quality tracking purposes - */ - await saveInteractionWithoutReq(ActionType.PUBLISH_NODE_CID_SUCCESS, { - cidsPayload, - result: { newPublicDataRefs }, - }); - } catch (error) { - logger.error({ error }, `[publish::publish] error=${error}`); - /** - * Save a failure for configurable service quality tracking purposes - */ - await saveInteractionWithoutReq(ActionType.PUBLISH_NODE_CID_FAIL, { cidsPayload, error }); - throw error; - } + }); - /** - * Publish Step 2: - * Initiate IPFS storage upload using Estuary - */ const manifest = await getManifestByCid(cid); - const targetDpidUrl = getTargetDpidUrl(); - - // const researchObjectToPublish = { uuid, cid, manifest, ownerId: owner.id }; - const sendDiscordNotification = (error: boolean) => { - const manifestSource = manifest as ResearchObjectV1; - discordNotify(`${targetDpidUrl}/${manifestSource.dpid?.id}${error ? ' (note: estuary-err)' : ''}`); - }; - - /** - * NOTE: uncomment when reactivating public ref mirroring - const handleMirrorSuccess = async (publishedResearchObjectResult) => { - await saveInteractionWithoutReq(ActionType.PUBLISH_NODE_RESEARCH_OBJECT_SUCCESS, { - researchObjectToPublish, - result: publishedResearchObjectResult, - }); - - sendDiscordNotification(false); - }; - const handleMirrorFail = async (error) => { - await saveInteractionWithoutReq(ActionType.PUBLISH_NODE_RESEARCH_OBJECT_FAIL, { - researchObjectToPublish, - error, - }); - - sendDiscordNotification(true); - }; - - const publicDataReferences = await prisma.publicDataReference.findMany({ - where: { - versionId: nodeVersion.id, - }, - }); - logger.debug( - { publicDataReferences }, - `[publish::publish] publicDataReferences=${JSON.stringify(publicDataReferences)}`, - ); - - // trigger ipfs storage upload, but don't wait for it to finish, will happen async - publishResearchObject(publicDataReferences).then(handleMirrorSuccess).catch(handleMirrorFail); - */ - sendDiscordNotification(false); + discordNotify(`${targetDpidUrl}/${manifest.dpid?.id}`); /** * Save the cover art for this Node for later sharing: PDF -> JPG for this version diff --git a/desci-server/src/controllers/nodes/searchNodes.ts b/desci-server/src/controllers/nodes/searchNodes.ts new file mode 100644 index 000000000..4f7ced30a --- /dev/null +++ b/desci-server/src/controllers/nodes/searchNodes.ts @@ -0,0 +1,86 @@ +// import { randomBytes } from 'crypto'; + +import { ResearchObjectV1 } from '@desci-labs/desci-models'; +import axios from 'axios'; +import { Request, Response, NextFunction } from 'express'; + +import { prisma } from '../../client.js'; +import { resolveNodeManifest } from '../../internal.js'; +import { logger as parentLogger } from '../../logger.js'; +import { getIndexedResearchObjects } from '../../theGraph.js'; +import { asyncMap, decodeBase64UrlSafeToHex, randomUUID64 } from '../../utils.js'; + +const logger = parentLogger.child({ + module: 'NODE::searchNodesController', +}); + +export const searchNodes = async (req: Request, res: Response, next: NextFunction) => { + const owner = (req as any).user; + const ipfsQuery = req.query.g; + + // implement paging + const page: number = req.query.page ? parseInt(req.query.page as string) : 1; + const limit: number = req.query.limit ? parseInt(req.query.limit as string) : 20; + + logger.info({ + body: req.body, + user: (req as any).user, + ipfsQuery, + }); + + let nodes = await prisma.node.findMany({ + select: { + uuid: true, + id: true, + createdAt: true, + updatedAt: true, + ownerId: true, + title: true, + manifestUrl: true, + cid: true, + NodeCover: true, + }, + where: { + ownerId: owner.id, + isDeleted: false, + title: { + contains: req.params.query, + mode: 'insensitive', + }, + }, + orderBy: { updatedAt: 'desc' }, + take: limit, + skip: (page - 1) * limit, + }); + + const indexMap = {}; + + try { + const uuids = nodes.map((n) => n.uuid); + const indexed = await getIndexedResearchObjects(uuids); + indexed.researchObjects.forEach((e) => { + indexMap[e.id] = e; + }); + } catch (err) { + logger.error({ err: err.message }, '[ERROR] graph index lookup fail'); + // todo: try on chain direct (current method doesnt support batch, so fix that and add here) + } + + nodes = await asyncMap(nodes, async (n) => { + const hex = `0x${decodeBase64UrlSafeToHex(n.uuid)}`; + const result = indexMap[hex]; + const manifest: ResearchObjectV1 = result?.recentCid ? await resolveNodeManifest(result?.recentCid) : null; + const o = { + ...n, + uuid: n.uuid.replaceAll('.', ''), + isPublished: !!indexMap[hex], + index: indexMap[hex], + dpid: manifest?.dpid, + }; + delete o.id; + + return o; + }); + + res.send({ nodes }); +}; diff --git a/desci-server/src/controllers/nodes/sharedNodes.ts b/desci-server/src/controllers/nodes/sharedNodes.ts index 459fb8be8..8c2d6d8ae 100644 --- a/desci-server/src/controllers/nodes/sharedNodes.ts +++ b/desci-server/src/controllers/nodes/sharedNodes.ts @@ -46,11 +46,12 @@ export const listSharedNodes = async (req: ListSharedNodesRequest, res: Response }); if (!user.email) { - logger.warn('User does not have an email, no nodes can be shared with the user.'); + logger.warn({}, 'User does not have an email, no nodes can be shared with the user.'); return res.status(500).json({ error: 'User does not have an email' }); } try { + logger.trace({}, 'Retrieving shared nodes for user'); const privSharedNodes = await prisma.privateShare.findMany({ where: { memo: `${PRIV_SHARE_CONTRIBUTION_PREFIX}${user.email}`, @@ -60,20 +61,35 @@ export const listSharedNodes = async (req: ListSharedNodesRequest, res: Response }, }); + logger.trace({ privSharedNodesLength: privSharedNodes.length }, 'Shared nodes retrieved successfully'); + if (privSharedNodes?.length === 0) { return res.status(200).json({ ok: true, sharedNodes: [] }); } const nodeUuids = privSharedNodes.map((priv) => priv.node.uuid); const { researchObjects } = await getIndexedResearchObjects(nodeUuids); + + logger.trace({ researchObjectsLength: researchObjects.length }, 'Research objects retrieved successfully'); + const publishedNodesMap = researchObjects.reduce((acc, ro) => { - // convert hex string to integer - const nodeUuidInt = Buffer.from(ro.id.substring(2), 'hex'); - // convert integer to hex - const nodeUuid = nodeUuidInt.toString('base64url'); - acc[nodeUuid] = ro; + try { + // convert hex string to integer + const nodeUuidInt = Buffer.from(ro.id.substring(2), 'hex'); + // convert integer to hex + const nodeUuid = nodeUuidInt.toString('base64url'); + acc[nodeUuid] = ro; + } catch (e) { + logger.error({ acc, ro, e, message: e?.message }, 'Failed to convert hex string to integer'); + } + return acc; }, {}); + logger.trace( + { publishedNodesMapKeyLength: Object.keys(publishedNodesMap).length }, + 'Published nodes map created successfully', + ); + const filledSharedNodes = await Promise.all( privSharedNodes.map(async (priv) => { const { node } = priv; @@ -93,13 +109,14 @@ export const listSharedNodes = async (req: ListSharedNodesRequest, res: Response }; }), ); + logger.trace({ filledSharedNodesLength: filledSharedNodes.length }, 'Shared nodes filled successfully'); if (filledSharedNodes) { logger.info({ totalSharedNodesFound: filledSharedNodes.length }, 'Shared nodes retrieved successfully'); return res.status(200).json({ ok: true, sharedNodes: filledSharedNodes }); } } catch (e) { - logger.error({ e }, 'Failed to retrieve shared nodes for user'); + logger.error({ e, message: e?.message }, 'Failed to retrieve shared nodes for user'); return res.status(500).json({ error: 'Failed to retrieve shared nodes' }); } diff --git a/desci-server/src/controllers/proxy/ephemeralThumbnail.ts b/desci-server/src/controllers/proxy/ephemeralThumbnail.ts new file mode 100644 index 000000000..05511158c --- /dev/null +++ b/desci-server/src/controllers/proxy/ephemeralThumbnail.ts @@ -0,0 +1,50 @@ +import { Readable } from 'stream'; + +import type { Request, Response } from 'express'; + +import { logger as parentLogger } from '../../logger.js'; +import { thumbnailsService } from '../../services/Thumbnails.js'; + +const logger = parentLogger.child({ + module: 'NODES::EphemeralThumbnail', +}); + +type EphemeralThumbnailReqQuery = { + height?: string; +}; + +type EphemeralThumbnailResponse = { + ok: boolean; + error?: string; +}; + +export const ephemeralThumbnail = async ( + req: Request, + res: Response, +): Promise => { + const user = (req as any).user; + const height = req.query.height ? parseInt(req.query.height) : undefined; + + logger.trace({ fn: 'Generating ephemeral thumbnail', userId: user?.id, height }); + + if (!req.file) { + logger.error('No file uploaded'); + res.status(400).json({ ok: false, error: 'No file uploaded.' }); + return; + } + + try { + const fileStream = Readable.from(req.file.buffer); + const thumbnailStream = await thumbnailsService.generateThumbnailFromStream( + fileStream, + req.file.originalname, + height, + ); + + res.setHeader('Content-Type', 'image/png'); + thumbnailStream.pipe(res); + } catch (error) { + logger.error('Error generating ephemeral thumbnail:', error); + res.status(500).json({ ok: false, error: 'Error generating thumbnail' }); + } +}; diff --git a/desci-server/src/controllers/raw/versions.ts b/desci-server/src/controllers/raw/versions.ts index 422991997..914e2f6e7 100644 --- a/desci-server/src/controllers/raw/versions.ts +++ b/desci-server/src/controllers/raw/versions.ts @@ -2,12 +2,13 @@ import { Request, Response, NextFunction } from 'express'; import { logger } from '../../logger.js'; import { getIndexedResearchObjects } from '../../theGraph.js'; +import { ensureUuidEndsWithDot } from '../../utils.js'; /** * Get all versions of research object from index (publicView) */ export const versions = async (req: Request, res: Response, next: NextFunction) => { - const uuid = req.params.uuid; + const uuid = ensureUuidEndsWithDot(req.params.uuid); let graphOk = false; let result; try { diff --git a/desci-server/src/core/ApiError.ts b/desci-server/src/core/ApiError.ts index b66ddca1b..06ce2af09 100644 --- a/desci-server/src/core/ApiError.ts +++ b/desci-server/src/core/ApiError.ts @@ -9,6 +9,7 @@ import { InternalErrorResponse, NotFoundResponse, } from './ApiResponse.js'; +import { DoiError, DoiErrorType } from './doi/error.js'; export enum ApiErrorType { BAD_REQUEST = 'BadRequestError', @@ -46,7 +47,7 @@ export abstract class ApiError extends Error { } } - public static transform(err: Error, res): Response { + public static transform(err: Error, res: Response): Response { if (err instanceof AttestationError) { switch (err.type) { case AttestationErrorType.DUPLICATE: @@ -60,6 +61,17 @@ export abstract class ApiError extends Error { default: return new InternalErrorResponse(err.message).send(res); } + } else if (err instanceof DoiError) { + switch (err.type) { + case DoiErrorType.BAD_METADATA: + case DoiErrorType.NO_MANUSCRIPT: + case DoiErrorType.INCOMPLETE_ATTESTATIONS: + case DoiErrorType.DUPLICATE_MINT: + case DoiErrorType.FORBIDDEN: + return new BadRequestResponse(err.message, err).send(res); + default: + return new InternalErrorResponse(err.message).send(res); + } } return new InternalErrorResponse(err.message).send(res); } diff --git a/desci-server/src/core/ApiResponse.ts b/desci-server/src/core/ApiResponse.ts index 188c3b3c2..509642731 100644 --- a/desci-server/src/core/ApiResponse.ts +++ b/desci-server/src/core/ApiResponse.ts @@ -18,7 +18,7 @@ export interface ToApiResponse { export abstract class ApiResponse { constructor( private status: ResponseStatus, - message: string, + private message: string, ) {} protected prepare(res: Response, response: T, headers: { [key: string]: string }): Response { @@ -40,15 +40,15 @@ export abstract class ApiResponse { } export class SuccessMessageResponse extends ApiResponse { - constructor(message = 'Success') { - super(ResponseStatus.SUCCESS, message); + constructor(message = '') { + super(ResponseStatus.SUCCESS, undefined); } } export class SuccessResponse extends ApiResponse { constructor( private data: T, - message = 'Success', + message = '', ) { super(ResponseStatus.SUCCESS, message); } diff --git a/desci-server/src/core/doi/error.ts b/desci-server/src/core/doi/error.ts new file mode 100644 index 000000000..a898b7234 --- /dev/null +++ b/desci-server/src/core/doi/error.ts @@ -0,0 +1,55 @@ +export enum DoiErrorType { + DUPLICATE_MINT = 'DuplicateDoiError', + NO_MANUSCRIPT = 'NoManuscriptError', + BAD_METADATA = 'InvalidManifestError', + INCOMPLETE_ATTESTATIONS = 'MissingAttestationsError', + REGISTRATION_ERROR = 'RegistrationError', + FORBIDDEN = 'ForbiddenError', +} + +export class DoiError extends Error { + name = 'DoiValidationError'; + + constructor( + public type: DoiErrorType, + public message: string = 'Doi Error', + ) { + super(type); + } +} + +export class BadManifestError extends DoiError { + constructor(message = 'Title, Abstract or Contributors is missing') { + super(DoiErrorType.BAD_METADATA, message); + } +} + +export class NoManuscriptError extends DoiError { + constructor(message = 'Node has no manuscript') { + super(DoiErrorType.NO_MANUSCRIPT, message); + } +} + +export class AttestationsError extends DoiError { + constructor(message = 'All required attestations are not claimed or verified') { + super(DoiErrorType.INCOMPLETE_ATTESTATIONS, message); + } +} + +export class DuplicateMintError extends DoiError { + constructor(message = 'DOI already minted for node') { + super(DoiErrorType.DUPLICATE_MINT, message); + } +} + +export class MintError extends DoiError { + constructor(message = 'An Error occurred while registring a new DOI') { + super(DoiErrorType.DUPLICATE_MINT, message); + } +} + +export class ForbiddenMintError extends DoiError { + constructor(message = 'Research object not valid') { + super(DoiErrorType.FORBIDDEN, message); + } +} diff --git a/desci-server/src/internal.ts b/desci-server/src/internal.ts index d6d252c6a..263a2404c 100644 --- a/desci-server/src/internal.ts +++ b/desci-server/src/internal.ts @@ -1,6 +1,7 @@ export * from './logger.js'; export * from './client.js'; export * from './core/communities/error.js'; +export * from './services/index.js'; export * from './core/ApiError.js'; export * from './core/ApiResponse.js'; export * from './middleware/index.js'; @@ -10,6 +11,7 @@ export * from './utils/asyncHandler.js'; export * from './routes/v1/attestations/schema.js'; export * from './controllers/communities/index.js'; export * from './controllers/attestations/index.js'; +export * from './controllers/doi/index.js'; export * from './core/ApiResponse.js'; export * from './utils/manifest.js'; export * from './services/repoService.js'; diff --git a/desci-server/src/logger.ts b/desci-server/src/logger.ts index 530ad52ee..b53cfaca1 100644 --- a/desci-server/src/logger.ts +++ b/desci-server/src/logger.ts @@ -1,11 +1,13 @@ +import { AsyncLocalStorage } from 'async_hooks'; import path from 'path'; import { fileURLToPath } from 'url'; import { pino } from 'pino'; - const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); +export const als = new AsyncLocalStorage(); + const logLevel = process.env.PINO_LOG_LEVEL || 'trace'; const devTransport = { @@ -29,6 +31,69 @@ export const logger = pino({ serializers: { files: omitBuffer, }, + hooks: { + logMethod: function (inputArgs, method) { + try { + //get caller + const stack = new Error().stack.split('\n'); + // find first line that is not from this file + + let callerFilePath; + try { + const intermediate = stack.filter( + (a) => a.includes('file:///') && !(a.includes('/dist/logger.') || a.includes('/src/logger.')), + )[0]; + + if (intermediate) { + callerFilePath = intermediate + .split('(')[1] + .split(')')[0] + .replace('file:///app/desci-server/src/', '') + .replace('file:///app/dist/', ''); + } + } catch (err) { + // callerFilePath = '-unknown-'; + } + + let target = typeof inputArgs[0] == 'string' ? 1 : 0; + let newInputArgs = [...inputArgs]; + + if (!newInputArgs[target]) { + newInputArgs[target] = {}; + } else if (typeof newInputArgs[target] !== 'object') { + const rawValue = {}; + rawValue['stringLogs'] = inputArgs; + + rawValue['error'] = + 'this means your pino log statement is incorrectly formatted, check the order of the arguments'; + target = 0; + newInputArgs[target] = { rawValue }; + newInputArgs = [newInputArgs[0], inputArgs[0]]; + } + + newInputArgs[target]['caller'] = callerFilePath; + + newInputArgs[target]['userAuth'] = (als.getStore() as any)?.userAuth; + + const traceId = (als.getStore() as any)?.traceId; + if (traceId) { + newInputArgs[target]['traceId'] = traceId; + + const timingArray = (als.getStore() as any)?.timing; + if (timingArray) { + newInputArgs[target]['traceIndex'] = timingArray.length; + newInputArgs[target]['traceDelta'] = Date.now() - timingArray[timingArray.length - 1]; + } + (als.getStore() as any)?.timing.push(Date.now()); + } + + return method.apply(this, [...newInputArgs]); + } catch (err) { + // logger.error({ err }, 'error in logMethod hook'); + return method.apply(this, inputArgs); + } + }, + }, transport: process.env.NODE_ENV === 'production' ? undefined diff --git a/desci-server/src/middleware/authorisation.ts b/desci-server/src/middleware/authorisation.ts index a996295fc..de46735fa 100644 --- a/desci-server/src/middleware/authorisation.ts +++ b/desci-server/src/middleware/authorisation.ts @@ -10,6 +10,8 @@ import { ensureUuidEndsWithDot, hideEmail } from '../utils.js'; export interface RequestWithUser extends Request { user: User; + userAuth?: any; + traceId?: string; } export interface RequestWithNode extends RequestWithUser { @@ -60,7 +62,7 @@ export const ensureNodeAccess = async (req: RequestWithUser, res: Response, next res.status(401).send({ ok: false, message: 'Unauthorized' }); return; } - (req as RequestWithUser).user = user; + req.user = user; if (!uuid) { logger.error({ uuid: req.body.uuid, body: req.body }, 'No UUID Found'); diff --git a/desci-server/src/middleware/permissions.ts b/desci-server/src/middleware/permissions.ts index 13a7f55c9..112f2e5c0 100644 --- a/desci-server/src/middleware/permissions.ts +++ b/desci-server/src/middleware/permissions.ts @@ -6,6 +6,7 @@ import { prisma } from '../client.js'; import { hashApiKey } from '../controllers/auth/utils.js'; import { logger } from '../logger.js'; import { getUserByEmail, getUserByOrcId } from '../services/user.js'; +import { AUTH_COOKIE_FIELDNAME } from '../utils/sendCookie.js'; export enum AuthMethods { AUTH_TOKEN = 'AUTH_TOKEN', @@ -32,7 +33,7 @@ export const ensureUser = async (req: ExpressRequest, res: Response, next: NextF * Extract JWT Authorisation token from IncommingRequest */ export const extractAuthToken = async (request: ExpressRequest | Request) => { - let token = await extractTokenFromCookie(request, 'auth'); + let token = await extractTokenFromCookie(request, AUTH_COOKIE_FIELDNAME); if (!token) { // Try to retrieve the token from the header @@ -40,7 +41,7 @@ export const extractAuthToken = async (request: ExpressRequest | Request) => { if (authHeader) { token = authHeader.split(' ')[1]; } - logger.info({ module: 'Permissions::extractToken', authHeaderLength: authHeader?.length || 0 }, 'Request'); + logger.trace({ module: 'Permissions::extractToken', authHeaderLength: authHeader?.length || 0 }, 'Request'); // Sanitize null or undefined string tokens passed from frontend if (token === 'null' || token === 'undefined') token = null; @@ -56,7 +57,7 @@ export const extractTokenFromCookie = async (request: ExpressRequest | Request, let token: string | undefined; // get from query string token = request.url.split(`${tokenName}=`)[1]; - logger.info({ url: request.url, token }, 'got url extract'); + logger.trace({ url: request.url, token }, 'got url extract'); if (!token) { // If auth token wasn't found in the header, try retrieve from cookies @@ -73,7 +74,7 @@ export const extractTokenFromCookie = async (request: ExpressRequest | Request, .filter(([key]) => key.trim().toLowerCase() === tokenName)[0]; token = parsedTokenValue?.[1]; } - logger.info({ tokenFound: !!token, tokenName }, 'COOKIE'); + logger.trace({ tokenFound: !!token, tokenName }, 'COOKIE'); } return token; }; @@ -96,7 +97,7 @@ export const extractUserFromToken = async (token: string): Promise return; } - logger.info({ module: 'ExtractAuthUser', user, tokenFound: !!token }, 'User decrypted'); + logger.trace({ module: 'ExtractAuthUser', user, tokenFound: !!token }, 'User decrypted'); if (!user) { resolve(null); @@ -127,7 +128,7 @@ export const extractUserFromToken = async (token: string): Promise */ export const extractApiKey = async (request: ExpressRequest | Request) => { const apiKeyHeader = request.headers['api-key']; - logger.info({ module: 'Permissions::extractApiKey', apiKeyLength: apiKeyHeader?.length || 0 }, 'Request'); + logger.trace({ module: 'Permissions::extractApiKey', apiKeyLength: apiKeyHeader?.length || 0 }, 'Request'); return apiKeyHeader; }; diff --git a/desci-server/src/middleware/validator.ts b/desci-server/src/middleware/validator.ts index 0737e3032..2acafc15e 100644 --- a/desci-server/src/middleware/validator.ts +++ b/desci-server/src/middleware/validator.ts @@ -1,10 +1,10 @@ import { NextFunction, Request, Response } from 'express'; import { ZodError, z } from 'zod'; -import { BadRequestError, InternalError, asyncHander } from '../internal.js'; +import { BadRequestError, InternalError, asyncHandler } from '../internal.js'; export const validate = (schema: z.ZodObject) => - asyncHander(async (req: Request, res: Response, next: NextFunction) => { + asyncHandler(async (req: Request, res: Response, next: NextFunction) => { try { await schema.parseAsync(req); next(); diff --git a/desci-server/src/redisClient.ts b/desci-server/src/redisClient.ts index 817b45cfa..50ff4eda0 100644 --- a/desci-server/src/redisClient.ts +++ b/desci-server/src/redisClient.ts @@ -56,6 +56,7 @@ redisClient.on('error', (err) => { export default redisClient; const DEFAULT_TTL = 60 * 60 * 24 * 7; // 1 week +export const ONE_DAY_TTL = 60 * 60 * 24; // 1 week export async function getFromCache(key: string): Promise { let clientAvailable = true; diff --git a/desci-server/src/routes/index.ts b/desci-server/src/routes/index.ts index 4fd6d1216..d4fb60f3e 100755 --- a/desci-server/src/routes/index.ts +++ b/desci-server/src/routes/index.ts @@ -1,15 +1,29 @@ import { Router } from 'express'; import { resolve } from '../controllers/raw/resolve.js'; +import { asyncHandler, handleCrossrefNotificationCallback } from '../internal.js'; import page404 from './pages/404.js'; import pageRoot from './pages/root.js'; +import { ensureCrossrefNotifier, identifyEndpoint } from './v1/crossref.js'; import v1 from './v1/index.js'; const router = Router(); router.use(`/v1`, v1); +// potential notification fallback catch +router.post( + '/crossref/callback', + [identifyEndpoint('/crossref/callback'), ensureCrossrefNotifier], + asyncHandler(handleCrossrefNotificationCallback), +); +router.post( + '/crossref/callback/v1/crossref/callback', + [identifyEndpoint('/crossref/callback/v1/crossref/callback'), ensureCrossrefNotifier], + asyncHandler(handleCrossrefNotificationCallback), +); + router.get('/:query*', resolve); router.use(pageRoot); diff --git a/desci-server/src/routes/v1/attestations/index.ts b/desci-server/src/routes/v1/attestations/index.ts index dc27c02dc..aa16950bd 100644 --- a/desci-server/src/routes/v1/attestations/index.ts +++ b/desci-server/src/routes/v1/attestations/index.ts @@ -1,7 +1,6 @@ import { Router } from 'express'; import { - asyncHander, addComment, addReaction, addVerification, @@ -19,7 +18,7 @@ import { getAttestationVerifications, validate, getValidatedRecommendations, - canVerifyClaim, + asyncHandler, } from '../../../internal.js'; import { ensureUser } from '../../../middleware/permissions.js'; @@ -38,43 +37,41 @@ import { showCommunityClaimsSchema, showNodeAttestationsSchema, claimEntryAttestationsSchema, - canVerificationSchema, } from './schema.js'; const router = Router(); -router.get('/suggestions/all', [], asyncHander(getAllRecommendations)); -router.get('/suggestions/protected', [], asyncHander(getValidatedRecommendations)); +router.get('/suggestions/all', [], asyncHandler(getAllRecommendations)); +router.get('/suggestions/protected', [], asyncHandler(getValidatedRecommendations)); router.get( '/claims/:communityId/:dpid', [ensureUser, validate(showCommunityClaimsSchema)], - asyncHander(showCommunityClaims), + asyncHandler(showCommunityClaims), ); -router.get('/:dpid', [validate(showNodeAttestationsSchema)], asyncHander(showNodeAttestations)); -router.get('/:claimId/reactions', [validate(getAttestationReactionsSchema)], asyncHander(getAttestationReactions)); +router.get('/:uuid', [validate(showNodeAttestationsSchema)], asyncHandler(showNodeAttestations)); +router.get('/:claimId/reactions', [validate(getAttestationReactionsSchema)], asyncHandler(getAttestationReactions)); router.get( '/:claimId/verifications', [validate(getAttestationVerificationsSchema)], - asyncHander(getAttestationVerifications), + asyncHandler(getAttestationVerifications), ); -router.get('/:claimId/comments', [validate(getAttestationCommentsSchema)], asyncHander(getAttestationComments)); +router.get('/:claimId/comments', [validate(getAttestationCommentsSchema)], asyncHandler(getAttestationComments)); -router.post('/claim', [ensureUser, validate(claimAttestationSchema)], asyncHander(claimAttestation)); -router.post('/unclaim', [ensureUser, validate(removeClaimSchema)], asyncHander(removeClaim)); -router.post('/claimAll', [ensureUser, validate(claimEntryAttestationsSchema)], asyncHander(claimEntryRequirements)); +router.post('/claim', [ensureUser, validate(claimAttestationSchema)], asyncHandler(claimAttestation)); +router.post('/unclaim', [ensureUser, validate(removeClaimSchema)], asyncHandler(removeClaim)); +router.post('/claimAll', [ensureUser, validate(claimEntryAttestationsSchema)], asyncHandler(claimEntryRequirements)); -router.post('/comment', [ensureUser, validate(createCommentSchema)], asyncHander(addComment)); -router.post('/reaction', [ensureUser, validate(addReactionSchema)], asyncHander(addReaction)); -router.post('/verification', [ensureUser, validate(addVerificationSchema)], asyncHander(addVerification)); -router.post('/verification/check/:claimId', [ensureUser, validate(canVerificationSchema)], asyncHander(canVerifyClaim)); +router.post('/comment', [ensureUser, validate(createCommentSchema)], asyncHandler(addComment)); +router.post('/reaction', [ensureUser, validate(addReactionSchema)], asyncHandler(addReaction)); +router.post('/verification', [ensureUser, validate(addVerificationSchema)], asyncHandler(addVerification)); -router.delete('/comments/:commentId', [ensureUser, validate(deleteCommentSchema)], asyncHander(removeComment)); -router.delete('/reactions/:reactionId', [ensureUser, validate(deleteReactionSchema)], asyncHander(removeReaction)); +router.delete('/comments/:commentId', [ensureUser, validate(deleteCommentSchema)], asyncHandler(removeComment)); +router.delete('/reactions/:reactionId', [ensureUser, validate(deleteReactionSchema)], asyncHandler(removeReaction)); router.delete( '/verifications/:verificationId', [ensureUser, validate(deleteVerificationSchema)], - asyncHander(removeVerification), + asyncHandler(removeVerification), ); export default router; diff --git a/desci-server/src/routes/v1/attestations/schema.ts b/desci-server/src/routes/v1/attestations/schema.ts index c7584f143..7a8ec37e5 100644 --- a/desci-server/src/routes/v1/attestations/schema.ts +++ b/desci-server/src/routes/v1/attestations/schema.ts @@ -12,7 +12,7 @@ export const showCommunityClaimsSchema = z.object({ export const showNodeAttestationsSchema = z.object({ params: z.object({ - dpid, + uuid: z.string(), }), }); @@ -128,12 +128,6 @@ export const addVerificationSchema = z.object({ }), }); -export const canVerificationSchema = z.object({ - params: z.object({ - claimId: z.coerce.number(), - }), -}); - export const deleteCommentSchema = z.object({ params: z.object({ commentId: z.coerce.number() }), }); @@ -155,7 +149,7 @@ export const claimAttestationSchema = z.object({ attestationId: z.coerce.number(), nodeVersion: z.coerce.number(), nodeUuid: z.string(), - nodeDpid: z.string(), + nodeDpid: z.string().optional(), claimerId: z.coerce.number(), }), }); @@ -165,14 +159,14 @@ export const claimEntryAttestationsSchema = z.object({ communityId: z.coerce.number(), nodeVersion: z.coerce.number(), nodeUuid: z.string(), - nodeDpid: z.string(), + nodeDpid: z.string().optional(), claimerId: z.coerce.number(), }), }); export const removeClaimSchema = z.object({ body: z.object({ - dpid, + dpid: z.coerce.number().optional(), nodeUuid: z.string(), claimId: z.coerce.number(), }), diff --git a/desci-server/src/routes/v1/auth.ts b/desci-server/src/routes/v1/auth.ts index 5075aa97f..96f0d6a0d 100755 --- a/desci-server/src/routes/v1/auth.ts +++ b/desci-server/src/routes/v1/auth.ts @@ -17,15 +17,15 @@ import { check, } from '../../controllers/auth/index.js'; import { walletLogin, walletNonce } from '../../controllers/users/associateWallet.js'; -import { asyncHander } from '../../internal.js'; +import { asyncHandler } from '../../internal.js'; import { ensureUser } from '../../middleware/permissions.js'; const router = Router(); router.get('/check', [ensureUser], check); router.post('/login', login); -router.post('/login/did', asyncHander(walletLogin)); -router.get('/login/did/:walletAddress', asyncHander(walletNonce)); +router.post('/login/did', asyncHandler(walletLogin)); +router.get('/login/did/:walletAddress', asyncHandler(walletNonce)); router.delete('/logout', logout); router.get('/profile', [ensureUser], profile); router.post('/register', register); diff --git a/desci-server/src/routes/v1/communities/index.ts b/desci-server/src/routes/v1/communities/index.ts index 5881ddc17..f37195448 100644 --- a/desci-server/src/routes/v1/communities/index.ts +++ b/desci-server/src/routes/v1/communities/index.ts @@ -1,7 +1,9 @@ import { Router } from 'express'; import { - asyncHander, + asyncHandler, + checkMemberGuard, + ensureUser, getAllFeeds, getCommunityDetails, getCommunityFeed, @@ -12,27 +14,29 @@ import { validate, } from '../../../internal.js'; -import { getCommunityDetailsSchema, getCommunityFeedSchema } from './schema.js'; +import { getCommunityDetailsSchema, getCommunityFeedSchema, memberGuardSchema } from './schema.js'; const router = Router(); // list all communities and curated nodes() -router.get('/list', [], asyncHander(listCommunities)); -router.get('/feeds', [], asyncHander(getAllFeeds)); -router.get('/:communityName', [validate(getCommunityDetailsSchema)], asyncHander(getCommunityDetails)); +router.get('/list', [], asyncHandler(listCommunities)); +router.get('/feeds', [], asyncHandler(getAllFeeds)); +router.get('/:communityName', [validate(getCommunityDetailsSchema)], asyncHandler(getCommunityDetails)); router.get( '/:communityName/attestations', [validate(getCommunityDetailsSchema)], - asyncHander(getCommunityRecommendations), + asyncHandler(getCommunityRecommendations), ); router.get( '/:communityName/validatedAttestations', [validate(getCommunityDetailsSchema)], - asyncHander(getValidatedAttestations), + asyncHandler(getValidatedAttestations), ); -router.get('/:communityId/feed', [validate(getCommunityFeedSchema)], asyncHander(getCommunityFeed)); -router.get('/:communityId/radar', [validate(getCommunityFeedSchema)], asyncHander(getCommunityRadar)); +router.get('/:communityId/feed', [validate(getCommunityFeedSchema)], asyncHandler(getCommunityFeed)); +router.get('/:communityId/radar', [validate(getCommunityFeedSchema)], asyncHandler(getCommunityRadar)); + +router.post('/:communityId/memberGuard', [ensureUser, validate(memberGuardSchema)], asyncHandler(checkMemberGuard)); export default router; diff --git a/desci-server/src/routes/v1/communities/schema.ts b/desci-server/src/routes/v1/communities/schema.ts index 7b04e43b1..39ec76e7a 100644 --- a/desci-server/src/routes/v1/communities/schema.ts +++ b/desci-server/src/routes/v1/communities/schema.ts @@ -11,3 +11,9 @@ export const getCommunityFeedSchema = z.object({ communityId: z.coerce.number(), }), }); + +export const memberGuardSchema = z.object({ + params: z.object({ + communityId: z.coerce.number(), + }), +}); diff --git a/desci-server/src/routes/v1/crossref.ts b/desci-server/src/routes/v1/crossref.ts new file mode 100644 index 000000000..fd62d5576 --- /dev/null +++ b/desci-server/src/routes/v1/crossref.ts @@ -0,0 +1,66 @@ +// crossref/callback +import { NextFunction, Request, Response, Router } from 'express'; + +import { + AuthFailureError, + BadRequestError, + RequestWithCrossRefPayload, + asyncHandler, + handleCrossrefNotificationCallback, + logger as parentLogger, +} from '../../internal.js'; + +const logger = parentLogger.child({ module: 'CROSSREF NOTIFICATION' }); +const DEFAULT_CROSSREF_ENDPOINT = 'endpoint'; +// assert required env are available +if (!process.env.CROSSREF_NOTIFY_ENDPOINT) { + logger.warn({ using: DEFAULT_CROSSREF_ENDPOINT }, 'Env `CROSSREF_NOTIFY_ENDPOINT` not set.'); +} + +const notifierEndpoint = process.env.CROSSREF_NOTIFY_ENDPOINT || DEFAULT_CROSSREF_ENDPOINT; + +const router = Router(); + +export const identifyEndpoint = (endpoint: string) => (req: Request, _res: Response, next: NextFunction) => { + logger.info({ endpoint }, 'identifyEndpoint'); + next(); +}; + +export const ensureCrossrefNotifier = (req: Request, _res: Response, next: NextFunction) => { + logger.info({ headers: req.headers }, 'CALLBACK MIDDLEWARE'); + // parse the follwing headers and attach it to the request's context; + // CROSSREF-NOTIFY-ENDPOINT + // CROSSREF-EXTERNAL-ID + // CROSSREF-INTERNAL-ID + // CROSSREF-RETRIEVE-URL + // CROSSREF-SERVICE-DATE + // CROSSREF-RETRIEVE-URL-EXPIRATION-DATE + + const payload = { + notifyEndpoint: req.headers['crossref-notify-endpoint'] as string, + externalId: req.headers['crossref-external-id'] as string, + internalId: req.headers['crossref-internal-id'] as string, + retrieveUrl: req.headers['crossref-retrieve-url'] as string, + serviceDate: req.headers['crossref-service-date'] as string, + retrieveUrlExpirationDate: req.headers['crossref-retrieve-url-expiration-date'] as string, + }; + + logger.info({ payload, headers: req.headers, body: req.body }, 'payload'); + // verify notification endpoint + if (payload.notifyEndpoint !== process.env.CROSSREF_NOTIFY_ENDPOINT) { + logger.info({ payloadEndpoint: payload.notifyEndpoint, endpoint: notifierEndpoint }, 'INVALID ENDPOINT'); + throw new AuthFailureError(); + } + + (req as RequestWithCrossRefPayload).payload = payload; + // validate caller is crossref client using provided endpoint and check if + next(); +}; + +router.post( + '/crossref/callback', + [identifyEndpoint('/crossref/callback'), ensureCrossrefNotifier], + asyncHandler(handleCrossrefNotificationCallback), +); + +export default router; diff --git a/desci-server/src/routes/v1/doi.ts b/desci-server/src/routes/v1/doi.ts new file mode 100644 index 000000000..060552558 --- /dev/null +++ b/desci-server/src/routes/v1/doi.ts @@ -0,0 +1,11 @@ +import { Router } from 'express'; + +import { asyncHandler, checkMintability, ensureNodeAccess, ensureUser, getDoi, mintDoi } from '../../internal.js'; + +const router = Router(); + +router.post('/check/:uuid', [ensureUser, ensureNodeAccess], asyncHandler(checkMintability)); +router.post('/mint/:uuid', [ensureUser, ensureNodeAccess], asyncHandler(mintDoi)); +router.get('/:identifier', [ensureUser], asyncHandler(getDoi)); + +export default router; diff --git a/desci-server/src/routes/v1/index.ts b/desci-server/src/routes/v1/index.ts index e523b6e7e..6fd4a4b07 100755 --- a/desci-server/src/routes/v1/index.ts +++ b/desci-server/src/routes/v1/index.ts @@ -3,17 +3,20 @@ import { generateNonce } from 'siwe'; import { prisma } from '../../client.js'; import { queryResearchFields } from '../../controllers/data/index.js'; +import { handleCrossrefNotificationCallback } from '../../controllers/doi/mint.js'; import { queryRor } from '../../controllers/proxy/index.js'; import { ipfsReadGatewayProxy } from '../../controllers/proxy/ipfsReadGateway.js'; import { nft } from '../../controllers/raw/nft.js'; -import { asyncHander } from '../../internal.js'; +import { asyncHandler } from '../../internal.js'; import { ensureUser } from '../../middleware/permissions.js'; import admin from './admin.js'; import attestations from './attestations/index.js'; import auth from './auth.js'; import communities from './communities/index.js'; +import { ensureCrossrefNotifier, identifyEndpoint } from './crossref.js'; import data from './data.js'; +import doi from './doi.js'; import log from './log.js'; import nodes from './nodes.js'; import pub from './pub.js'; @@ -27,7 +30,7 @@ const router = Router(); router.get( '/nonce', [ensureUser], - asyncHander(async function (req, res) { + asyncHandler(async function (req, res) { const nonce = generateNonce(); const user = (req as any).user; await prisma.user.update({ @@ -54,6 +57,7 @@ router.use('/log', log); router.use('/services', services); router.use('/communities', communities); router.use('/attestations', attestations); +router.use('/doi', doi); router.get('/nft/:id', nft); router.use('/referral', referral); @@ -61,4 +65,11 @@ router.get('/researchFields', [ensureUser], queryResearchFields); router.get('/ror', [ensureUser], queryRor); router.get('/ipfs/:cid', ipfsReadGatewayProxy); +// potential notification fallback catch +router.post( + '/crossref/callback', + [identifyEndpoint('/v1/crossref/callback'), ensureCrossrefNotifier], + asyncHandler(handleCrossrefNotificationCallback), +); + export default router; diff --git a/desci-server/src/routes/v1/nodes.ts b/desci-server/src/routes/v1/nodes.ts index b3b06ca66..7eca0871f 100755 --- a/desci-server/src/routes/v1/nodes.ts +++ b/desci-server/src/routes/v1/nodes.ts @@ -1,14 +1,22 @@ import { Router } from 'express'; +import { checkIfPublishedNode } from '../../controllers/nodes/checkIfPublishedNode.js'; +import { checkNodeAccess } from '../../controllers/nodes/checkNodeAccess.js'; import { addContributor } from '../../controllers/nodes/contributions/create.js'; import { deleteContributor } from '../../controllers/nodes/contributions/delete.js'; import { getNodeContributions } from '../../controllers/nodes/contributions/getNodeContributions.js'; import { getUserContributions } from '../../controllers/nodes/contributions/getUserContributions.js'; import { getUserContributionsAuthed } from '../../controllers/nodes/contributions/getUserContributionsAuthed.js'; +import { emailPublishPackage } from '../../controllers/nodes/contributions/prepubEmail.js'; import { updateContributor } from '../../controllers/nodes/contributions/update.js'; import { verifyContribution } from '../../controllers/nodes/contributions/verify.js'; +import { createDpid } from '../../controllers/nodes/createDpid.js'; import { dispatchDocumentChange, getNodeDocument } from '../../controllers/nodes/documents.js'; import { feed } from '../../controllers/nodes/feed.js'; +import { frontmatterPreview } from '../../controllers/nodes/frontmatterPreview.js'; +import { getDraftNodeStats } from '../../controllers/nodes/getDraftNodeStats.js'; +import { getPublishedNodes } from '../../controllers/nodes/getPublishedNodes.js'; +import { getPublishedNodeStats } from '../../controllers/nodes/getPublishedNodeStats.js'; import { show, draftUpdate, @@ -30,13 +38,21 @@ import { publishConsent, checkUserPublishConsent, checkPublishConsentSchema, + automateMetadata, + generateMetadata, + automateMetadataSchema, + generateMetadataSchema, + automateManuscriptDoi, + attachDoiSchema, } from '../../controllers/nodes/index.js'; import { retrieveTitle } from '../../controllers/nodes/legacyManifestApi.js'; +import { preparePublishPackage } from '../../controllers/nodes/preparePublishPackage.js'; import { prepublish } from '../../controllers/nodes/prepublish.js'; +import { searchNodes } from '../../controllers/nodes/searchNodes.js'; import { listSharedNodes } from '../../controllers/nodes/sharedNodes.js'; import { thumbnails } from '../../controllers/nodes/thumbnails.js'; import { versionDetails } from '../../controllers/nodes/versionDetails.js'; -import { asyncHander, attachUser, validate } from '../../internal.js'; +import { asyncHandler, attachUser, validate, ensureUserIfPresent } from '../../internal.js'; import { ensureNodeAccess, ensureWriteNodeAccess } from '../../middleware/authorisation.js'; import { ensureUser } from '../../middleware/permissions.js'; @@ -44,6 +60,14 @@ const router = Router(); router.post('/prepublish', [ensureUser, ensureNodeAccess], prepublish); router.post('/publish', [ensureUser], publish); +router.get('/stats', [ensureUser], getDraftNodeStats); +router.get('/stats/published', [ensureUser], getPublishedNodeStats); +router.get('/published/list', [ensureUser], getPublishedNodes); +router.get('/published/:uuid', [], checkIfPublishedNode); +router.get('/access/:uuid', [ensureUserIfPresent], checkNodeAccess); +router.post('/search/:query', [ensureUser], searchNodes); + +router.post('/createDpid', [ensureUser, ensureWriteNodeAccess], createDpid); router.post('/createDraft', [ensureUser], draftCreate); // is this api deprecated? router.post('/addComponentToDraft', [ensureUser], draftAddComponent); @@ -53,11 +77,11 @@ router.get('/', [ensureUser], list); router.post('/doi', [ensureUser], retrieveDoi); router.get('/pdf', proxyPdf); router.post('/consent', [], consent); -router.post('/consent/publish', [ensureUser, validate(publishConsentSchema)], asyncHander(publishConsent)); +router.post('/consent/publish', [ensureUser, validate(publishConsentSchema)], asyncHandler(publishConsent)); router.get( '/consent/publish/:uuid', [ensureUser, validate(checkPublishConsentSchema)], - asyncHander(checkUserPublishConsent), + asyncHandler(checkUserPublishConsent), ); router.post('/terms', [ensureUser], consent); router.get('/share/verify/:shareId', checkPrivateShareId); @@ -77,6 +101,22 @@ router.patch('/contributions/:uuid', [ensureUser, ensureWriteNodeAccess], update router.delete('/contributions/:uuid', [ensureUser, ensureWriteNodeAccess], deleteContributor); router.get('/contributions/user/:userId', [], getUserContributions); router.get('/contributions/user', [ensureUser], getUserContributionsAuthed); +router.post('/distribution', preparePublishPackage); +router.post('/distribution/preview', [ensureUser], frontmatterPreview); +router.post( + '/:uuid/automate-metadata', + [ensureUser, ensureNodeAccess, validate(automateMetadataSchema)], + automateMetadata, +); +router.post('/generate-metadata', [ensureUser, validate(generateMetadataSchema)], generateMetadata); +router.post('/distribution/email', [ensureUser], emailPublishPackage); + +// doi automation +router.post( + '/:uuid/automate-manuscript', + [ensureUser, ensureNodeAccess, validate(attachDoiSchema)], + asyncHandler(automateManuscriptDoi), +); router.delete('/:uuid', [ensureUser], deleteNode); diff --git a/desci-server/src/routes/v1/services.ts b/desci-server/src/routes/v1/services.ts index 548be06e2..37f5e2f49 100644 --- a/desci-server/src/routes/v1/services.ts +++ b/desci-server/src/routes/v1/services.ts @@ -1,10 +1,17 @@ import { Router } from 'express'; +import multer from 'multer'; +import { ephemeralThumbnail } from '../../controllers/proxy/ephemeralThumbnail.js'; import { orcidDid, orcidProfile } from '../../controllers/proxy/orcidProfile.js'; +import { ensureUser } from '../../internal.js'; const router = Router(); +const upload = multer(); + router.get('/orcid/profile/:orcidId', [], orcidProfile); router.get('/orcid/did/:did', [], orcidDid); +router.post('/thumbnails/ephemeral', [ensureUser, upload.single('file')], ephemeralThumbnail); + export default router; diff --git a/desci-server/src/server.ts b/desci-server/src/server.ts index 41c754c3f..392fecc1a 100644 --- a/desci-server/src/server.ts +++ b/desci-server/src/server.ts @@ -5,7 +5,6 @@ import * as child from 'child_process'; // import fs from 'fs'; import type { Server as HttpServer } from 'http'; // import path from 'path'; -import { fileURLToPath } from 'url'; import * as Sentry from '@sentry/node'; import * as Tracing from '@sentry/tracing'; @@ -24,13 +23,12 @@ import routes from './routes/index.js'; import { orcidConnect } from './controllers/auth/orcid.js'; import { orcidCheck } from './controllers/auth/orcidNext.js'; // import SocketServer from './wsServer.js'; -import { NotFoundError } from './internal.js'; -import { logger } from './logger.js'; +import { NotFoundError, RequestWithUser, extractAuthToken, extractUserFromToken } from './internal.js'; +import { als, logger } from './logger.js'; import { ensureUserIfPresent } from './middleware/ensureUserIfPresent.js'; import { errorHandler } from './middleware/errorHandler.js'; import { runWorkerUntilStopped } from './workers/publish.js'; -const __filename = fileURLToPath(import.meta.url); // const __dirname = path.dirname(__filename); const ENABLE_TELEMETRY = process.env.NODE_ENV === 'production'; @@ -90,6 +88,30 @@ class AppServer { next(); }); + // // attach user info to every request + this.app.use(async (req: RequestWithUser, res, next) => { + const token = await extractAuthToken(req); + + if (!token) { + req.userAuth = 'anonymous'; + } else { + const user = await extractUserFromToken(token); + req.userAuth = `${user?.id}`; + } + + next(); + }); + + // attach trace id to every request + this.app.use((req: RequestWithUser, res, next) => { + req.traceId = v4(); + res.header('X-Desci-Trace-Id', req.traceId); + + als.run({ traceId: req.traceId, timing: [new Date()], userAuth: req.userAuth }, () => { + next(); + }); + }); + this.#attachProxies(); this.#initTelemetry(); @@ -162,6 +184,12 @@ class AppServer { this.app.use( pinoHttp({ logger, + customProps: (req: RequestWithUser, res) => ({ + userAuth: req.userAuth, + traceId: (als.getStore() as any)?.traceId, + http: 1, + remoteAddress: getRemoteAddress(req), + }), serializers: { res: (res) => { if (IS_DEV) { @@ -216,5 +244,12 @@ class AppServer { await runWorkerUntilStopped(); } } - +function getRemoteAddress(req) { + const xForwardedFor = req.headers['x-forwarded-for']; + if (xForwardedFor) { + return xForwardedFor.split(',')[0].trim(); + } else { + return req.socket.remoteAddress; + } +} export const server = new AppServer(); diff --git a/desci-server/src/services/Attestation.ts b/desci-server/src/services/Attestation.ts index 489d45616..ca8f76813 100644 --- a/desci-server/src/services/Attestation.ts +++ b/desci-server/src/services/Attestation.ts @@ -2,7 +2,6 @@ import assert from 'assert'; import { HighlightBlock } from '@desci-labs/desci-models'; import { AnnotationType, Attestation, Prisma } from '@prisma/client'; -import { logger } from 'ethers'; import _ from 'lodash'; import { prisma } from '../client.js'; @@ -19,6 +18,8 @@ import { NoAccessError, VerificationError, VerificationNotFoundError, + ensureUuidEndsWithDot, + logger, } from '../internal.js'; import { communityService } from '../internal.js'; @@ -82,7 +83,7 @@ export class AttestationService { attestationId, attestationVersionId: attestationVersionEntry.id, desciCommunityId: attestationVersionEntry.attestation.communityId, - nodeDpid10: nodeDpid, + nodeUuid, nodeVersion, }, }); @@ -102,6 +103,17 @@ export class AttestationService { }; } + async assertUserIsMember(userId: number, communityId: number) { + const member = await prisma.communityMember.findUnique({ + where: { userId_communityId: { userId, communityId } }, + }); + + if (!member) { + logger.error({ userId, communityId }, 'UnAuthorized Verify Attestation Call'); + throw new NoAccessError('Only Community members are allowed'); + } + } + async #publishVersion(attestationVersion: Prisma.AttestationVersionUncheckedCreateInput) { return prisma.attestationVersion.create({ data: attestationVersion }); } @@ -218,9 +230,9 @@ export class AttestationService { }); } - async getAllNodeAttestations(dpid: string) { + async getAllNodeAttestations(uuid: string) { return prisma.nodeAttestation.findMany({ - where: { nodeDpid10: dpid, revoked: false }, + where: { nodeUuid: ensureUuidEndsWithDot(uuid), revoked: false }, include: { community: { select: { name: true, description: true, keywords: true, image_url: true } }, attestation: { select: { protected: true, verified_image_url: true } }, @@ -233,9 +245,9 @@ export class AttestationService { }); } - async getProtectedNodeClaims(dpid: string) { + async getProtectedNodeClaims(nodeUuid: string) { const data = await prisma.nodeAttestation.findMany({ - where: { nodeDpid10: dpid, revoked: false }, + where: { nodeUuid, revoked: false }, include: { community: { select: { name: true } }, attestation: { select: { protected: true } }, @@ -255,6 +267,7 @@ export class AttestationService { image_url: claim.attestationVersion.image_url, verifications: claim._count.NodeAttestationVerification, community: claim.community.name, + attestationId: claim.attestationId, nodeVersion: claim.nodeVersion, })) .value(); @@ -278,12 +291,6 @@ export class AttestationService { }); } - // async getAllCommunityAttestations(communityId: number) { - // const community = await communityService.findCommunityById(communityId); - // if (!community) throw new CommunityNotFoundError(); - // return prisma.attestation.findMany({ where: { communityId: communityId } }); - // } - async getCommunityEntryAttestations(communityId: number) { const community = await communityService.findCommunityById(communityId); if (!community) throw new CommunityNotFoundError(); @@ -445,6 +452,10 @@ export class AttestationService { return prisma.nodeAttestation.findFirst({ where: { id, nodeDpid10 } }); } + async getClaimOnUuid(id: number, nodeUuid: string) { + return prisma.nodeAttestation.findFirst({ where: { id, nodeUuid } }); + } + async verifyClaim(nodeAttestationId: number, userId: number) { assert(nodeAttestationId > 0, 'Error: nodeAttestationId is Zero'); assert(userId > 0, 'Error: userId is Zero'); @@ -454,10 +465,7 @@ export class AttestationService { const attestation = await this.findAttestationById(claim.attestationId); if (attestation.protected) { - const member = await prisma.communityMember.findUnique({ - where: { userId_communityId: { userId, communityId: attestation.communityId } }, - }); - if (!member) throw new NoAccessError('Only Community members are allowed'); + await this.assertUserIsMember(userId, claim.desciCommunityId); } const node = await prisma.node.findFirst({ where: { uuid: claim.nodeUuid } }); @@ -512,6 +520,11 @@ export class AttestationService { if (duplicate) throw new DuplicateReactionError(); + const attestation = await this.findAttestationById(claim.attestationId); + if (attestation.protected) { + await this.assertUserIsMember(authorId, claim.desciCommunityId); + } + return prisma.nodeAttestationReaction.create({ data: { authorId, reaction, nodeAttestationId: claimId } }); } @@ -543,6 +556,15 @@ export class AttestationService { }) { assert(authorId > 0, 'Error: authorId is zero'); assert(claimId > 0, 'Error: claimId is zero'); + + const claim = await this.findClaimById(claimId); + if (!claim) throw new ClaimNotFoundError(); + + const attestation = await this.findAttestationById(claim.attestationId); + if (attestation.protected) { + await this.assertUserIsMember(authorId, attestation.communityId); + } + const data: Prisma.AnnotationUncheckedCreateInput = { type: AnnotationType.COMMENT, authorId, @@ -568,6 +590,15 @@ export class AttestationService { }) { assert(authorId > 0, 'Error: authorId is zero'); assert(claimId > 0, 'Error: claimId is zero'); + + const claim = await this.findClaimById(claimId); + if (!claim) throw new ClaimNotFoundError(); + + const attestation = await this.findAttestationById(claim.attestationId); + if (attestation.protected) { + await this.assertUserIsMember(authorId, attestation.communityId); + } + const data: Prisma.AnnotationUncheckedCreateInput = { type: AnnotationType.HIGHLIGHT, authorId, diff --git a/desci-server/src/services/AutomatedMetadata.ts b/desci-server/src/services/AutomatedMetadata.ts new file mode 100644 index 000000000..305d3adb1 --- /dev/null +++ b/desci-server/src/services/AutomatedMetadata.ts @@ -0,0 +1,521 @@ +import { Readable } from 'stream'; + +import { DocumentId } from '@automerge/automerge-repo'; +import { ManifestActions, ResearchObjectV1Author, ResearchObjectV1AuthorRole } from '@desci-labs/desci-models'; +import axios from 'axios'; +import FormData from 'form-data'; + +import { logger as parentLogger } from '../logger.js'; +import { ONE_DAY_TTL, getFromCache, setToCache } from '../redisClient.js'; + +import { getOrcidFromURL } from './crossRef/utils.js'; +import repoService from './repoService.js'; + +const logger = parentLogger.child({ module: '[AutomatedMetadataClient]' }); + +const IPFS_RESOLVER = process.env.IPFS_RESOLVER_OVERRIDE || 'https://ipfs.desci.com/ipfs'; + +export const delay = async (timeMs: number) => { + return new Promise((resolve) => setTimeout(resolve, timeMs)); +}; + +export type MetadataParam = { + cid?: string; + doi?: string; +}; + +export type AutomatedMetadataResponse = { + output: Array<{ + creator?: { + [k in string]: { + '@id': string; + affiliation: string; + name: string; + role: string; + ror: string; + }; + }; + authors?: { + [k in string]: { + '@id': string; + affiliation: string; + name: string; + role: string; + ror: string; + }; + }; + datePublished?: [number, number, number]; // [year, month, day] + keywords?: Array<{ display_name: string; id: string; score: number }>; + license?: Array<{ + url: string; + 'content-version': string; + 'delay-in-days': number; + start: { + 'date-parts': Array<[number, number, number]>; + 'date-time': string; + timestamp: number; + }; + }>; + abstract?: string; + oa_url?: string | null; + title: string; + }>; +}; + +export type MetadataResponse = { + abstract?: string; + authors: Array<{ orcid?: string; name: string; affiliations?: { name: string; id: string }[] }>; + title: string; + pdfUrl: string | null; + keywords: string[]; + doi?: string; +}; + +export interface OpenAlexWork { + id: string; + title: string; + doi: string; + open_access: { + is_oa: boolean; + oa_status: string; + oa_url: string; + }; + best_oa_location: { + is_oa: boolean; + pdf_url: string; + }; + authorships: Array<{ + author_position: string; + author: { + id: string; + display_name: string; + orcid: string; + }; + institutions: Array<{ + id: string; + display_name: string; + ror: string; + country_code: string; + type: string; + lineage: string[]; + }>; + countries: string[]; + is_corresponding: boolean; + raw_author_name: string; + raw_affiliation_strings: string[]; + affiliations: Array<{ + raw_affiliation_string: string; + institution_ids: string[]; + }>; + }>; + keywords: Array<{ + id: string; + display_name: string; + score: number; + }>; + abstract_inverted_index?: { [key: string]: number[] }; +} + +const DEFAULT_GROBID_METADATA = { + authors: [], + title: '', + abstract: '', + doi: '', +}; + +/** + * A wrapper http client for querying, caching and parsing requests + * from the CrossRef Rest Api https://www.crossref.org/documentation/retrieve-metadata/rest-api/ + * Initialize constructor with CrossRef Api url https://api.crossref.org, Api token and a polite Mail + */ +export class AutomatedMetadataClient { + baseurl: string; + + constructor( + baseUrl: string, + private _accessToken: string, + ) { + if (!baseUrl) { + logger.error('Pass Cross ref api as argument to AutomatedMetadataClient'); + throw Error('Pass Cross ref api as argument to AutomatedMetadataClient'); + } + this.baseurl = baseUrl; + } + + /** + * Returns all the metadata associated with a pdf cid or doi url + */ + async getResourceMetadata(query: MetadataParam): Promise { + if (!query.cid && !query.doi) throw new Error('Invalid data'); + + const body: { pdf: string; doi?: string } | { doi: string; pdf?: string } = { pdf: '' }; + + if (query.cid) { + body.pdf = `${IPFS_RESOLVER}/${query.cid}`; + } + + if (query.doi) { + body.doi = query.doi; + } + logger.info({ body }, 'API INFO'); + + // config.body = body; + + const url = `${this.baseurl}/invoke-script`; + logger.info({ url }, 'url params'); + const config: RequestInit = { + method: 'POST', + mode: 'cors', + headers: { Accept: '*/*', 'content-type': 'application/json' }, + body: JSON.stringify(body), + }; + + // add plus token if available + if (this._accessToken && config.headers) { + config.headers['X-API-Key'] = `${this._accessToken}`; + } + + const request = new Request(url, config); + try { + const response = await this.performFetch(request, body.doi || body.pdf); + return response ? this.transformResponse(response) : null; + } catch (error) { + logger.error(error, 'ERROR'); + return null; + } + } + + /** + * Returns all the Grobid header metadata associated with a pdf cid + */ + async queryFromGrobid(cid: string) { + try { + if (!cid) throw new Error('Invalid data'); + + const pdfUrl = `${IPFS_RESOLVER}/${cid}`; + + let response = await axios.head(pdfUrl); + const contentType = response.headers['content-type']; + const fileSize = response.headers['content-length']; + + if (contentType.toLowerCase() !== 'application/pdf') { + logger.error({ contentType, cid: cid }, 'CID CONTENT NOT A PDF FILE'); + return DEFAULT_GROBID_METADATA; + } + + logger.info({ contentType, pdfUrl }, 'PDF RESPONSE CONTENT'); + + const axiosRes = await axios.get(pdfUrl, { responseType: 'arraybuffer' }); + logger.info({ status: axiosRes.status, headers: axiosRes.headers }, 'DOWNLOAD PDF AXIOS'); + + const fetchRes = await fetch(pdfUrl); + logger.info({ status: fetchRes.status, headers: fetchRes.headers }, 'DOWNLOAD PDF FETCH'); + const res = await fetchRes.arrayBuffer(); + const buffer = Buffer.from(res); + const inputStream = Readable.from(buffer); + // const blob = new Blob([res.data], { type: 'application/pdf' }); + logger.info({ SIZE: inputStream.readableLength, fileSize }, 'PDF CONTENT'); + + const formdata = new FormData(); + formdata.append('input', inputStream, { filename: 'manuscript.pdf', contentType: 'application/pdf' }); + + const url = 'https://grobid-dev.desci.com/api/processHeaderDocument'; + response = await axios.request({ url, method: 'POST', data: formdata, headers: { ...formdata.getHeaders() } }); + logger.info({ header: response.data }, 'GROBID RESPONSE'); + if (response.status !== 200) return DEFAULT_GROBID_METADATA; + // transform data + const headerMetadata = parseBibtext(response.data); + return headerMetadata; + } catch (error) { + logger.error(error, 'ERROR'); + return DEFAULT_GROBID_METADATA; + } + } + + /** + * Pull metadata from Open Alex api + */ + async queryDoiFromOpenAlex(doi: string): Promise { + try { + const result = await fetch( + `https://api.openalex.org/works/doi:${doi}?select=id,title,doi,authorships,keywords,open_access,best_oa_location,abstract_inverted_index`, + { + headers: { + Accept: '*/*', + 'content-type': 'application/json', + }, + }, + ); + logger.info({ status: result.status, message: result.statusText }, 'OPEN ALEX QUERY'); + const work = (await result.json()) as OpenAlexWork; + logger.info({ openAlexWork: work }, 'OPEN ALEX QUERY'); + return transformOpenAlexWorkToMetadata(work); + } catch (err) { + logger.error({ err }, 'ERROR: OPEN ALEX WORK QUERY'); + return null; + } + } + + async performFetch(request: Request, cacheKey: string): Promise { + const responseFromCache = await getFromCache(request.url); + logger.info({ responseFromCache, request: request.headers, cacheKey }, 'METADATA From Cache'); + if (responseFromCache) return responseFromCache; + + const response = (await fetch(request)) as Response; + let data: T; + logger.info({ status: response.status, header: response.headers.get('content-type') }, 'RESPONSE FROM METADATA'); + if (response.ok && response.status === 200) { + if (response.headers.get('content-type')?.includes('application/json')) { + data = (await response.json()) as T; + logger.info(data, 'SET TO CACHE'); + await setToCache(cacheKey, data, ONE_DAY_TTL); + return data; + } + } else { + logger.info({ body: await response.text() }, 'ERROR RESPONSE'); + } + return null as T; + } + + transformResponse(data: AutomatedMetadataResponse): MetadataResponse { + logger.info({ data }, 'TRANSFORM'); + const output = Array.isArray(data.output) ? data.output?.[0] : data.output; + + const contributors = output?.authors || output?.creator; + const authors = contributors + ? Object.entries(contributors).map(([name, creator]) => ({ + affiliations: [{ name: creator.affiliation, id: creator.ror }], + name, + ...(creator['@id'] && creator['@id'].toLowerCase() !== 'none' && { orcid: creator['@id'] }), + })) + : []; + const keywords = + output?.keywords && Array.isArray(output.keywords) ? output.keywords.map((keyword) => keyword.display_name) : []; + const metadata: MetadataResponse = { + authors, + keywords, + title: output.title, + pdfUrl: output.oa_url, + abstract: output.abstract ?? '', + }; + + return metadata; + } + + async automateMetadata(metadata: MetadataResponse, node: { uuid: string; documentId: string }) { + const actions: ManifestActions[] = []; + if (metadata.title) { + actions.push({ type: 'Update Title', title: metadata.title }); + } + + if (metadata.authors) { + actions.push({ + type: 'Add Contributors', + contributors: metadata.authors.map( + (author) => + ({ + name: author.name, + role: ResearchObjectV1AuthorRole.AUTHOR, + ...(author.affiliations.length > 0 && { organizations: author.affiliations }), + ...(author.orcid && { orcid: getOrcidFromURL(author.orcid) }), + }) as ResearchObjectV1Author, + ), + }); // + } + + const response = await repoService.dispatchAction({ + uuid: node.uuid, + documentId: node.documentId as DocumentId, + actions, + }); + logger.info(response, 'AUTOMATE METADATA'); + return response; + } +} + +/** + * Custom Bibtext to JSON parser for pdf headers returned + * from Grobid 'https://grobid-dev.desci.com/api/processHeaderDocument' + * @param input Bibtext string + * @returns Metadata + */ +const parseBibtext = (input: string) => { + const metadata: { + authors: string[]; + title: string; + abstract: string; + doi: string; + } = { title: '', authors: [], abstract: '', doi: '' }; + + let cursor = 0; + + const skipSpaces = (text: string) => { + let char = text[cursor]; + while (char === ' ') { + cursor++; + char = text[cursor]; + } + }; + + const parseFieldName = (text: string) => { + // parseFieldName + const start = cursor; + while (text[cursor] !== ' ') { + cursor++; + } + cursor++; + const name = text.slice(start, cursor).trim(); + console.log({ fieldName: name }); + return name; + }; + + const skipUntil = (delimiter: string) => { + // skip until delimiter + while (input[cursor] !== delimiter) { + cursor += 1; + } + + // move cursor to next char after the delimeter + cursor += 1; + // console.log("skipped until", input[cursor], delimiter); + }; + + const parseFieldValue = (fieldName: string) => { + // parseFieldValue + + let start = cursor, + line = ''; + console.log('start', start); + + // skip to start of value + skipUntil('{'); + if (input[cursor] === '}' && input[cursor - 1] === '{') return; + + switch (fieldName) { + case 'author': + console.log('Parse author'); + start = cursor; + console.log({ start, cursor }); + skipUntil('}'); + line = input.substring(start, cursor - 1); + const authors = line + .split(' and ') + .map((text) => + text + .trim() + .split(',') + .map((t) => t.trim()) + .join(' '), + ) + .filter(Boolean); + // console.log({ authors, line, cursor }); + metadata['authors'] = authors; + break; + case 'title': + console.log('Parse title'); + // skipUntil("{"); + start = cursor; + skipUntil('}'); + line = input.substring(start, cursor - 1); + const title = line.trim(); + // console.log({ title }); + metadata['title'] = title; + break; + case 'doi': + // Parse doi + start = cursor; + skipUntil('}'); + line = input.substring(start, cursor - 1); + const doi = line.trim(); + // console.log({ doi }); + metadata['doi'] = doi; + break; + case 'abstract': + // Parse abstract + start = cursor; + skipUntil('}'); + line = input.substring(start, cursor - 1); + const abstract = line.trim(); + metadata['abstract'] = abstract; + break; + default: + console.log('Unknown field value: ', fieldName); + skipUntil('}'); + break; + } + }; + + const skipBy = (n: number) => { + cursor += n; + }; + + while (cursor < input.length) { + const char = input[cursor]; + // console.log({ cursor, char }); + + switch (char) { + case '@': + console.log('Found @', { cursor }); + skipUntil('\n'); + break; + case '-1': + // skip to next character as this is irrelevant + skipUntil('\n'); + break; + case ' ': + // skip spaces + skipSpaces(input); + break; + case '{': + // skip opening tag + skipBy(1); + break; + case '}': + // skip closing tag + skipBy(1); + break; + case '\n': + // skip line break + skipBy(1); + break; + case ',': + // skip end of value delimiter + skipBy(1); + break; + case '\r': + // skip spaces + skipBy(1); + break; + default: + const fieldName = parseFieldName(input); + parseFieldValue(fieldName); + break; + } + + console.log({ cursor }); + } + + return metadata; +}; + +const transformOpenAlexWorkToMetadata = (work: OpenAlexWork): MetadataResponse => { + const authors = work.authorships.map((author) => ({ + orcid: author.author?.orcid ? getOrcidFromURL(author.author.orcid) : null, + name: author.author.display_name, + affiliations: author?.institutions.map((org) => ({ name: org.display_name, id: org?.ror || '' })) ?? [], + })); + + const keywords = work?.keywords.map((entry) => entry.display_name) ?? []; + + const abstract = work?.abstract_inverted_index ? transformInvertedAbstractToText(work.abstract_inverted_index) : ''; + + return { title: work.title, doi: work.doi, authors, pdfUrl: '', keywords, abstract }; +}; + +const transformInvertedAbstractToText = (abstract: OpenAlexWork['abstract_inverted_index']) => { + const words = []; + Object.entries(abstract).map(([word, positions]) => { + positions.forEach((pos) => words.splice(pos, 0, word)); + }); + return words.filter(Boolean).join(' '); +}; diff --git a/desci-server/src/services/Communities.ts b/desci-server/src/services/Communities.ts index 1b1d83e5a..bb23fd245 100644 --- a/desci-server/src/services/Communities.ts +++ b/desci-server/src/services/Communities.ts @@ -2,7 +2,7 @@ import { Attestation, CommunityMembershipRole, NodeAttestation, NodeFeedItem, Pr import _ from 'lodash'; import { prisma } from '../client.js'; -import { DuplicateDataError } from '../internal.js'; +import { DuplicateDataError, logger } from '../internal.js'; import { attestationService } from '../internal.js'; export type CommunityRadarNode = NodeAttestation & { annotations: number; reactions: number; verifications: number }; @@ -95,7 +95,7 @@ export class CommunityService { left outer JOIN "Annotation" ON t1."id" = "Annotation"."nodeAttestationId" left outer JOIN "NodeAttestationReaction" ON t1."id" = "NodeAttestationReaction"."nodeAttestationId" left outer JOIN "NodeAttestationVerification" ON t1."id" = "NodeAttestationVerification"."nodeAttestationId" - WHERE t1."revoked" = false AND + WHERE t1."revoked" = false AND t1."nodeDpid10" IS NOT NULL AND EXISTS (SELECT * from "CommunityEntryAttestation" c1 @@ -124,9 +124,11 @@ export class CommunityService { */ async getCuratedNodes(communityId: number) { const nodesOnRadar = await this.getCommunityRadar(communityId); + logger.info({ nodesOnRadar, communityId }, 'Radar'); const curated = nodesOnRadar.filter((node) => node.NodeAttestation.every((attestation) => attestation.verifications > 0), ); + logger.info({ curated, communityId }, 'CURATED'); return curated; } diff --git a/desci-server/src/services/Contributors.ts b/desci-server/src/services/Contributors.ts index 9b52f9835..839694b3e 100644 --- a/desci-server/src/services/Contributors.ts +++ b/desci-server/src/services/Contributors.ts @@ -164,7 +164,7 @@ class ContributorService { return false; } - async retrieveContributionsForNode( + async retrieveSelectedContributionsForNode( node: Node, contributorIds: string[], authedMode = false, @@ -181,12 +181,27 @@ class ContributorService { userId: contributor.user?.id, deleted: contributor.deleted, deletedAt: contributor.deletedAt, + ...(authedMode && { inviteSent: contributor.inviteSent }), ...(authedMode && { email: contributor.email, orcid: contributor.orcid }), }; return acc; }, {}); } + /** + * To be used within the backend, if the data from this is returned to the frontend, it can potentially leak data, + * opt for retrieveSelectedContributionsForNode instead if the data is to be returned to the frontend + */ + async retrieveAllContributionsForNode( + node: Node, + verifiedOnly?: boolean, + ): Promise<(NodeContribution & { user: User })[]> { + return prisma.nodeContribution.findMany({ + where: { nodeId: node.id, ...(verifiedOnly && { verified: true }) }, + include: { user: true }, + }); + } + async retrieveContributionsForUser(user: User): Promise { const contributions = await prisma.nodeContribution.findMany({ where: { userId: user.id }, diff --git a/desci-server/src/services/Doi.ts b/desci-server/src/services/Doi.ts new file mode 100644 index 000000000..9c038e588 --- /dev/null +++ b/desci-server/src/services/Doi.ts @@ -0,0 +1,203 @@ +import { PdfComponent, ResearchObjectComponentType, ResearchObjectV1 } from '@desci-labs/desci-models'; +import { DoiStatus, Prisma, PrismaClient } from '@prisma/client'; +import { v4 } from 'uuid'; + +import { + DuplicateMintError, + BadManifestError, + AttestationsError, + MintError, + ForbiddenMintError, +} from '../core/doi/error.js'; +import { logger as parentLogger } from '../logger.js'; +import { IndexedResearchObject, getIndexedResearchObjects } from '../theGraph.js'; +import { asyncMap, ensureUuidEndsWithDot, hexToCid } from '../utils.js'; + +import { attestationService } from './Attestation.js'; +import { WorkSelectOptions } from './crossRef/definitions.js'; +import { getManifestByCid } from './data/processing.js'; + +import { crossRefClient } from './index.js'; + +const DOI_PREFIX = process.env.DOI_PREFIX; + +if (!DOI_PREFIX) throw new Error('env DOI_PREFIX is missing!'); + +const logger = parentLogger.child({ module: '[DoiService]' }); +export class DoiService { + dbClient: PrismaClient; + + constructor(prismaClient: PrismaClient) { + this.dbClient = prismaClient; + } + + async assertIsFirstDoi(dpid: string) { + const isFirstDoi = await this.isFirstDoi(dpid); + if (!isFirstDoi) throw new DuplicateMintError(); + } + + async isFirstDoi(dpid: string) { + const exists = await this.dbClient.doiRecord.findUnique({ where: { dpid } }); + return !exists; + } + + async assertHasValidatedAttestations(uuid: string) { + const doiAttestations = await attestationService.getProtectedAttestations({ + protected: true, + community: { slug: 'desci-foundation' }, + }); + // logger.info(doiAttestations, 'DOI Requirements'); + let claims = await attestationService.getProtectedNodeClaims(uuid); + claims = claims.filter((claim) => claim.verifications > 0); + + const hasClaimedRequiredAttestation = doiAttestations.some((attestation) => + claims.find((claim) => claim.attestationId === attestation.id), + ); + logger.info({ hasClaimedRequiredAttestation }, 'hasClaimedRequiredAttestation'); + if (!hasClaimedRequiredAttestation) throw new AttestationsError(); + } + + async extractManuscriptDoi(manuscripts: PdfComponent[]) { + // todo: update this to use Grobid/openAlex + const manuscriptDois = await asyncMap(manuscripts, async (component) => { + const manuscriptTitle = + component.name.replace(/\.pdf/g, '') || + component.payload.title || + component.payload.path.split('/').pop().replace(/\.pdf/g, ''); + // check if manuscripts have doi assigned already + const works = await crossRefClient.listWorks({ + rows: 5, + select: [WorkSelectOptions.DOI, WorkSelectOptions.TITLE, WorkSelectOptions.AUTHOR], + queryTitle: manuscriptTitle, + }); + const doi = works?.data?.message?.items.find((item) => + item.title.some((t) => t.toLowerCase() === manuscriptTitle.toLowerCase()), + ); + logger.info({ status: works.ok, manuscript: manuscriptTitle, doi }, 'Search Manuscripts'); + + if (!doi) return null; + return { doi, component }; + }); + + return manuscriptDois.filter(Boolean); + } + + assertValidManifest(manifest: ResearchObjectV1) { + const hasTitle = manifest.title.trim().length > 0; + const hasAbstract = manifest?.description.trim().length > 0; + const hasContributors = manifest.authors.length > 0; + if (!hasTitle || !hasAbstract || !hasContributors) throw new BadManifestError(); + } + + // check mintability for either root node or manuscript + async checkMintability(nodeUuid: string) { + logger.info({ nodeUuid }, 'checkMintability'); + const uuid = ensureUuidEndsWithDot(nodeUuid); + + // retrieve node manifest/metadata + const { researchObjects } = await getIndexedResearchObjects([uuid]); + const researchObject = researchObjects[0] as IndexedResearchObject; + logger.info({ researchObject }, 'RESEARCH OBJECT'); + const manifestCid = hexToCid(researchObject?.recentCid); + + if (!manifestCid) throw new ForbiddenMintError('Node not published yet!'); + + const latestManifest = await getManifestByCid(manifestCid); + researchObject.versions.reverse(); + + // check if node has claimed doi already + // check with dpid instead or dpid/path/to/manuscript or dpid/path/to/file + await this.assertIsFirstDoi(latestManifest.dpid.id); + + // extract manuscripts + const manuscripts = latestManifest.components.filter( + (component) => + component.type === ResearchObjectComponentType.PDF || + component.name.endsWith('.pdf') || + component.payload?.path?.endsWith('.pdf'), + ) as PdfComponent[]; + logger.info(manuscripts, 'MANUSCRIPTS'); + + if (manuscripts.length > 0) { + const existingDois = manuscripts.filter((doc) => doc.payload?.doi && doc.payload.doi.length > 0); + // await this.extractManuscriptDoi(manuscripts); + + logger.info(existingDois, 'Existing DOI'); + // does manuscript(s) already have a DOI + if (existingDois.length) { + // Validate node has claimed all necessary attestations + await this.assertHasValidatedAttestations(uuid); + } + } else { + // Validate node has claimed all necessary attestations + await this.assertHasValidatedAttestations(uuid); + } + + // validate title, abstract and contributors + this.assertValidManifest(latestManifest); + + return { dpid: latestManifest.dpid.id, uuid, manifest: latestManifest, researchObject }; + } + + async mintDoi(nodeUuid: string) { + const { dpid, uuid, manifest, researchObject } = await this.checkMintability(nodeUuid); + // mint new doi + const doiSuffix = v4().substring(0, 8); + const doi = `${DOI_PREFIX}/${doiSuffix}`; + + const latestVersion = researchObject.versions[researchObject.versions.length - 1]; + const publicationDate = new Date(parseInt(latestVersion.time) * 1000).toLocaleDateString().replaceAll('/', '-'); + + const [month, day, year] = publicationDate.split('-'); + + const metadataResponse = await crossRefClient.registerDoi({ + manifest, + doi, + publicationDate: { day, month, year }, + }); + + logger.info({ doiSuffix, doi, uuid, metadataResponse }, 'DOI SUBMITTED'); + if (!metadataResponse.ok) { + throw new MintError("We couldn't register a DOI for this research object"); + } + + // only create doi if submission status is success + const submission = await crossRefClient.addSubmissiontoQueue({ + // doi: doiRecord.id, + dpid, + uuid: ensureUuidEndsWithDot(uuid), + uniqueDoi: doi, + batchId: metadataResponse.batchId, + }); + + // return submission queue data + return submission; + } + + async getDoiByDpidOrUuid(identifier: string) { + return this.dbClient.doiRecord.findFirst({ + where: { OR: [{ dpid: identifier }, { uuid: ensureUuidEndsWithDot(identifier) }] }, + }); + } + + async hasPendingSubmission(uuid: string) { + const pending = await this.dbClient.doiSubmissionQueue.findFirst({ + where: { uuid: ensureUuidEndsWithDot(uuid), status: DoiStatus.PENDING }, + }); + + return pending; + } + + async getPendingSubmission(batchId: string) { + return await this.dbClient.doiSubmissionQueue.findFirst({ + where: { batchId, status: DoiStatus.PENDING }, + }); + } + + async updateSubmission( + filter: Prisma.DoiSubmissionQueueWhereInput, + data: Prisma.DoiSubmissionQueueUncheckedUpdateManyInput, + ) { + return await this.dbClient.doiSubmissionQueue.updateMany({ where: filter, data }); + } +} diff --git a/desci-server/src/services/PublishPackage.ts b/desci-server/src/services/PublishPackage.ts new file mode 100644 index 000000000..763106856 --- /dev/null +++ b/desci-server/src/services/PublishPackage.ts @@ -0,0 +1,212 @@ +import { ResearchObjectV1 } from '@desci-labs/desci-models'; +import { Node } from '@prisma/client'; +import axios from 'axios'; + +import { prisma } from '../client.js'; +import { logger as parentLogger } from '../logger.js'; +import { ensureUuidEndsWithDot, toKebabCase } from '../utils.js'; + +import { attestationService } from './Attestation.js'; +import { pinFile } from './ipfs.js'; +import { publishServices } from './PublishServices.js'; +import { CidString, HeightPx } from './Thumbnails.js'; + +export type PrepareDistributionPdfParams = { + pdfCid: string; + node: Node; // Title extraction for now + doi?: string; // Temporary till we have DOI system operational + manifest: ResearchObjectV1; + manifestCid: string; +}; + +type PrepareDistributionPdfResult = { + pdfCid: string; +} | null; + +class PublishPackageService { + private logger = parentLogger.child({ module: 'Services::PublishPackageService' }); + + async prepareDistributionPdf({ + pdfCid, + node, + doi, + manifest, + manifestCid, + }: PrepareDistributionPdfParams): Promise { + this.logger.trace({ pdfCid, nodeUuid: node.uuid, doi, manifest, manifestCid }, 'Preparing distribution PDF'); + // Check if distro PDF already exists + const existingDistributionPdf = await prisma.distributionPdfs.findFirst({ + where: { originalPdfCid: pdfCid, manifestCid }, + }); + + // debugger; + if (existingDistributionPdf) { + return { pdfCid: existingDistributionPdf.distPdfCid }; + } + + if (process.env.ISOLATED_MEDIA_SERVER_URL === undefined) { + this.logger.error('process.env.ISOLATED_MEDIA_SERVER_URL is not defined'); + return null; + } + // debugger; + const title = manifest.title; + const demoMode = manifest?.dpid?.id === undefined; + const dpid = !demoMode ? manifest?.dpid?.id : 'UNPUBLISHED_DEMO'; + if (dpid === undefined) { + this.logger.warn({ dpid, nodeId: node.id }, 'Failed generating a publish package for node, dpid is undefined'); + throw new Error('DPID is undefined'); + } + + const license = PublishPackageService.extractManuscriptLicense(manifest, pdfCid); + // const paddedTimestamp = unixTimestamp.padEnd(13, '0'); + const publishTime = demoMode + ? Date.now().toString().slice(0, 10) + : await publishServices.retrieveBlockTimeByManifestCid(node.uuid, manifestCid); + + const publishDate = PublishPackageService.convertUnixTimestampToDate(publishTime); + const authors = manifest.authors?.map((author) => author.name); + + const attestations = await attestationService.getAllNodeAttestations(node.uuid); + + const openCodeAttestation = attestations.find((a) => a.attestationVersion.name === 'Open Code'); + const openDataAttestation = attestations.find((a) => a.attestationVersion.name === 'Open Data'); + + const attestationLinks = { + ...(openCodeAttestation && { + codeAvailableDpid: `https://beta.dpid.org/${dpid}/attestations/${toKebabCase(openCodeAttestation.attestationVersion.name)}`, + }), + ...(openDataAttestation && { + dataAvailableDpid: `https://beta.dpid.org/${dpid}/attestations/${toKebabCase(openDataAttestation.attestationVersion.name)}`, + }), + }; + + // Generate the PDF with the cover + this.logger.trace({ pdfCid, doi, title, dpid, license, publishDate, authors }, 'Generating PDF cover'); + const coverPdfStream = await axios.post( + `${process.env.ISOLATED_MEDIA_SERVER_URL}/v1/pdf/addCover`, + { cid: pdfCid, doi, title, ...attestationLinks, dpid, license, publishDate, authors }, + { + responseType: 'stream', + }, + ); + + this.logger.trace({ pdfCid, doi, title, dpid, license, publishDate, authors }, 'Generated PDF cover'); + // Save it on IPFS + const pinned = await pinFile(coverPdfStream.data); + + this.logger.trace({ pdfCid, doi, title, dpid, license, publishDate, authors }, 'Pinned PDF cover'); + // Save it to the database + await prisma.distributionPdfs.create({ + data: { originalPdfCid: pdfCid, distPdfCid: pinned.cid, nodeUuid: node.uuid, manifestCid }, + }); + + // LATER: Add data ref + + this.logger.trace( + { pdfCid, doi, title, dpid, license, publishDate, authors, pinnedCid: pinned.cid }, + 'Saved PDF cover', + ); + + // Return the CID + return { pdfCid: pinned.cid }; + } + + static convertUnixTimestampToDate(unixTimestamp: string): string { + const date = new Date(Number(unixTimestamp) * 1000); + const formattedDate = date.toLocaleString('en-US', { + month: 'long', + day: 'numeric', + year: 'numeric', + }); + return formattedDate; + } + + static extractManuscriptLicense(manifest: ResearchObjectV1, manuscriptCid): string { + const manuscriptComponent = manifest.components?.find( + (c) => c.payload?.url === manuscriptCid || c.payload?.cid === manuscriptCid, + ); + return manuscriptComponent?.payload?.licenseType ?? manifest.defaultLicense; + } + + async generatePdfPreview( + pdfCid: CidString, + heightPx: HeightPx, + pageNums: PageNumber[], + nodeUuid: string, + ): Promise { + this.logger.trace({ pdfCid, heightPx, pageNums, nodeUuid }, 'Generating PDF preview'); + if (process.env.ISOLATED_MEDIA_SERVER_URL === undefined) { + this.logger.error('process.env.ISOLATED_MEDIA_SERVER_URL is not defined'); + return null; + } + + // debugger; + // Generate the preview + const previewResponse = await axios.post( + `${process.env.ISOLATED_MEDIA_SERVER_URL}/v1/pdf/previews?height=${heightPx}`, + { cid: pdfCid, pages: pageNums }, + { + responseType: 'json', + }, + ); + + this.logger.trace({ pdfCid, heightPx, pageNums, nodeUuid }, 'Generated PDF preview'); + + const previewStreams = previewResponse.data; + + const previewMap: PreviewMap = {}; + + for (let i = 0; i < previewStreams.length; i++) { + const pageNumber = pageNums[i]; + // debugger; + const previewStream = previewStreams[i]; + // Save it on IPFS + const pinned = await pinFile(previewStream.data); + + previewMap[pageNumber] = pinned.cid; + } + + this.logger.trace({ pdfCid, heightPx, pageNums, nodeUuid, previewMap }, 'Pinned PDF preview'); + + // Save it to the database + // const existingPreviews = await prisma.pdfPreviews.findFirst({ + // where: { pdfCid, nodeUuid }, + // }); + + // if (existingPreviews) { + // await prisma.pdfPreviews.update({ + // where: { id: existingPreviews.id }, + // data: { previewMap }, + // }); + // } else { + // await prisma.pdfPreviews.create({ + // data: { nodeUuid: ensureUuidEndsWithDot(nodeUuid), pdfCid, previewMap }, + // }); + // } + + // LATER: Add data ref + return previewMap; + } +} + +export const publishPackageService = new PublishPackageService(); + +export type GeneratePdfCoverRequestBody = { + cid: string; + doi: string; + title: string; + dpid?: string; + codeAvailableDpid?: string; + dataAvailableDpid?: string; + authors?: string[]; + license: string; + publishDate: string; +}; + +export enum PREVIEW_TYPE { + FRONTMATTER = 'frontmatter', + CONTENT = 'content', +} + +export type PageNumber = number; +export type PreviewMap = Record; diff --git a/desci-server/src/services/PublishServices.ts b/desci-server/src/services/PublishServices.ts new file mode 100644 index 000000000..7864bb8d5 --- /dev/null +++ b/desci-server/src/services/PublishServices.ts @@ -0,0 +1,120 @@ +import { Node, NodeContribution, User } from '@prisma/client'; +import sgMail from '@sendgrid/mail'; + +import { prisma } from '../client.js'; +import { getNodeVersion, hexToCid } from '../internal.js'; +import { logger as parentLogger } from '../logger.js'; +import { SubmissionPackageEmailHtml } from '../templates/emails/utils/emailRenderer.js'; +import { getIndexedResearchObjects } from '../theGraph.js'; + +import { contributorService } from './Contributors.js'; +import { getLatestManifestFromNode } from './manifestRepo.js'; + +sgMail.setApiKey(process.env.SENDGRID_API_KEY); + +const logger = parentLogger.child({ + module: 'Services::PublishServices', +}); + +export class PublishServices { + async sendVersionUpdateEmailToAllContributors({ + node, + manuscriptCid, + ownerOnly, + verifiedOnly = false, + }: { + node: Node; + manuscriptCid: string; + ownerOnly?: boolean; + verifiedOnly?: boolean; + }) { + const contributors = ownerOnly ? [] : await contributorService.retrieveAllContributionsForNode(node, verifiedOnly); + const nodeOwner = await prisma.user.findUnique({ where: { id: node.ownerId } }); + const manifest = await getLatestManifestFromNode(node); + const dpid = manifest.dpid?.id; + const versionPublished = await getNodeVersion(node.uuid); + + if (!dpid) { + logger.error( + { nodeUuid: node.uuid, 'manifest.dpid': manifest?.dpid, nodeOwner, totalContributors: contributors.length }, + 'Failed to retrieve DPID for node, emails not sent during publish update.', + ); + } + + const ownerEmailIncluded = contributors.find((c) => c.email === nodeOwner.email); + if (!ownerEmailIncluded) { + // Add the owner to the email list incase they forgot to add themselves as a contributor + const ownerContributor = { email: nodeOwner.email, name: nodeOwner.name } as unknown as NodeContribution & { + user: User; + }; + contributors.push(ownerContributor); + } + + const emailPromises = contributors.map((contributor) => { + const emailHtml = SubmissionPackageEmailHtml({ + nodeOwner: nodeOwner.name, + nodeUuid: node.uuid, + nodeTitle: node.title, + nodeDpid: dpid, + versionUpdate: versionPublished, + manuscriptCid: manuscriptCid, + }); + + const emailMsg = { + to: contributor.email, + from: 'no-reply@desci.com', + subject: `[nodes.desci.com] Your submission package is ready`, + text: `${nodeOwner.name} has published their research object titled "${node.title}" that you have contributed to.`, + html: emailHtml, + }; + return { contributor, emailMsg }; + }); + + if (process.env.SHOULD_SEND_EMAIL && process.env.SENDGRID_API_KEY) { + await Promise.allSettled( + emailPromises.map((emailEntry) => { + // if (emailEntry.contributor.id !== undefined) { + // prisma.nodeContribution.update({ + // where: { id: emailEntry.contributor.id }, + // data: { inviteSent: true }, + // }); + // } + return sgMail.send(emailEntry.emailMsg); + }), + ); + } else { + logger.info( + { nodeEnv: process.env.NODE_ENV }, + 'Skipping add contributor email send in non-production environment', + ); + } + + return true; + } + + async retrieveBlockTimeByManifestCid(uuid: string, manifestCid: string) { + const { researchObjects } = await getIndexedResearchObjects([uuid]); + if (!researchObjects.length) + logger.warn({ fn: 'retrieveBlockTimeByManifestCid' }, `No research objects found for nodeUuid ${uuid}`); + const indexedNode = researchObjects[0]; + const targetVersion = indexedNode.versions.find((v) => hexToCid(v.cid) === manifestCid); + if (!targetVersion) { + logger.warn( + { fn: 'retrieveBlockTimeByManifestCid', uuid, manifestCid }, + `No version match was found for nodeUuid/manifestCid`, + ); + return '-1'; + } + return targetVersion.time; + } +} + +export interface NodeUpdatedEmailProps { + nodeOwner: string; + nodeTitle: string; + nodeUuid: string; + nodeDpid: string; + versionUpdate: string; +} + +export const publishServices = new PublishServices(); diff --git a/desci-server/src/services/Thumbnails.ts b/desci-server/src/services/Thumbnails.ts index 5c3b4f4c8..76f1a9d47 100644 --- a/desci-server/src/services/Thumbnails.ts +++ b/desci-server/src/services/Thumbnails.ts @@ -1,11 +1,14 @@ +import { Readable } from 'stream'; + import { ResearchObjectComponentType } from '@desci-labs/desci-models'; import axios from 'axios'; +import FormData from 'form-data'; import { prisma } from '../client.js'; import { logger as parentLogger } from '../logger.js'; import { ensureUuidEndsWithDot } from '../utils.js'; -import { getManifestByCid, getManifestFromNode, pinNewFiles } from './data/processing.js'; +import { getManifestByCid } from './data/processing.js'; import { pinFile } from './ipfs.js'; import { NodeUuid, getLatestManifestFromNode } from './manifestRepo.js'; @@ -107,7 +110,7 @@ export class ThumbnailsService { // Generate the thumbnail // debugger; const thumbnailStream = await axios.post( - `${process.env.ISOLATED_MEDIA_SERVER_URL}/v1/thumbnails?height${heightPx}`, + `${process.env.ISOLATED_MEDIA_SERVER_URL}/v1/thumbnails?height=${heightPx}`, { cid: cid, fileName: componentFileName }, { responseType: 'stream', @@ -137,6 +140,41 @@ export class ThumbnailsService { // Return the CID return { componentCid: cid, height: heightPx, thumbnailCid: pinned.cid }; } + + async generateThumbnailFromStream( + fileStream: Readable, + fileName: string, + heightPx: HeightPx = HEIGHT_PX, + ): Promise { + if (process.env.ISOLATED_MEDIA_SERVER_URL === undefined) { + logger.error('process.env.ISOLATED_MEDIA_SERVER_URL is not defined'); + throw new Error('Isolated media server URL is not defined'); + } + + try { + const form = new FormData(); + form.append('file', fileStream, { + filename: fileName, + contentType: 'application/octet-stream', + }); + + const response = await axios.post( + `${process.env.ISOLATED_MEDIA_SERVER_URL}/v1/thumbnails?height=${heightPx}`, + form, + { + headers: { + ...form.getHeaders(), + }, + responseType: 'stream', + }, + ); + + return response.data; + } catch (error) { + logger.error('Error generating thumbnail from stream:', error); + throw new Error('Failed to generate thumbnail from stream'); + } + } } export const thumbnailsService = new ThumbnailsService(); diff --git a/desci-server/src/services/crossRef/client.ts b/desci-server/src/services/crossRef/client.ts new file mode 100644 index 000000000..b8026f2f4 --- /dev/null +++ b/desci-server/src/services/crossRef/client.ts @@ -0,0 +1,380 @@ +import { ResearchObjectV1 } from '@desci-labs/desci-models'; +import FormData from 'form-data'; +import fetch from 'node-fetch'; +import { default as Remixml } from 'remixml'; +import { v4 } from 'uuid'; + +import { prisma } from '../../client.js'; +import { logger as parentLogger } from '../../logger.js'; +import { ONE_DAY_TTL, getFromCache, setToCache } from '../../redisClient.js'; +import { asyncMap } from '../../utils.js'; + +import { CrossRefHttpResponse, Items, QueryWorkParams, RegisterDoiResponse, Work } from './definitions.js'; +import { keysToDotsAndDashses } from './utils.js'; + +const logger = parentLogger.child({ module: '[CrossRefClient]' }); + +export const delay = async (timeMs: number) => { + return new Promise((resolve) => setTimeout(resolve, timeMs)); +}; + +const metadataTemplate = ` + + + &_.batchId; + &_.timestamp; + + &depositor.name; + &depositor.email; + + &_.registrant; + + + + &_.title; + + + + &_.name; + &_.surname; + + + + + &_.name; + + &_.id; + + + + + + + + &_.orcid; + + + &_.orcid; + + + + + + + &_.title; + + + &publishedDate.month; + &publishedDate.day; + &publishedDate.year; + + + &publishedDate.month; + &publishedDate.day; + &publishedDate.year; + + &_.dpid; + + &_.doi; + &_.doiResource; + + + + +`; + +type PublicationDate = { + day: string; + month: string; + year: string; +}; +/** + * A wrapper http client for querying, caching and parsing requests + * from the CrossRef Rest Api https://www.crossref.org/documentation/retrieve-metadata/rest-api/ + * Initialize constructor with CrossRef Api url https://api.crossref.org, Api token and a polite Mail + */ +class CrossRefClient { + baseurl = 'https://api.crossref.org'; + + constructor( + private _plusToken?: string, + private _mailto?: string, + ) {} + + /** + * Returns a list of all works (journal articles, + * conference proceedings, books, components, etc), + */ + async listWorks(query: QueryWorkParams = undefined) { + let params: { [k: string]: any } = query; + let url = `${this.baseurl}/works?`; + const config: RequestInit = { + method: 'GET', + mode: 'cors', + headers: {}, + }; + + // add plus token if available + if (this._plusToken) { + config.headers['Crossref-Plus-API-Token'] = `Bearer ${this._plusToken}`; + } + + // polite api + if (this._mailto) { + if (typeof params === 'object') { + params['mailto'] = this._mailto; + } else { + params = { + mailto: this._mailto, + }; + } + } + + logger.info({ params }, 'API INFO'); + + if (typeof params === 'object') { + params = keysToDotsAndDashses(params); + logger.info({ params }, 'parsed params'); + } + + for (const [key, value] of Object.entries(params)) { + switch (typeof value) { + case 'string': + url += `${key}=${value}&`; + break; + case 'number': + url += `${key}=${value}&`; + break; + case 'object': + url += `${key}=${value.join(',')}&`; + break; + default: + break; + } + } + + url = url.slice(0, -1); + url = encodeURI(url); + logger.info({ url }, 'url params'); + const request = new Request(url, config); + try { + return await this.performFetch>(request); + } catch (error) { + logger.error({ error }, 'LIST WORKS API ERROR'); + + // retry after 1 second + await delay(1000); + logger.info('Retrying API Request'); + return await this.performFetch>(request); + } + } + + // check if there's a pending submission for a dpid + async getPendingSubmission(dpid: string) { + // todo: retrieve doi whose submission log is pending + } + + async registerDoi(query: { + manifest: ResearchObjectV1; + doi: string; + publicationDate: PublicationDate; + }): Promise { + const contributors = await asyncMap(query.manifest.authors ?? [], async (author, index) => { + const user = author.orcid ? await prisma.user.findUnique({ where: { orcid: author.orcid } }) : null; + logger.info({ user: { orcid: user?.orcid } }); + const affiliations = user + ? ( + await prisma.userOrganizations.findMany({ where: { userId: user.id }, include: { organization: true } }) + )?.map((org) => ({ name: org.organization.name, id: org.organization.id })) + : author?.organizations?.map((org) => ({ name: org.name, id: org.id })); + + return { + name: author.name.split(' ')[0], + surname: author.name.split(' ').slice(1)?.join(' ') || '-', + isAuthenticated: !!user, + sequence: index === 0 ? 'first' : 'additional', + // don't substitute with `sandbox.orcid.org`, the submission will be rejected + // due to schema errors + ...(author.orcid && { + orcid: author.orcid.startsWith('https://orcid.org/') ? author.orcid : `https://orcid.org/${author.orcid}`, + }), + + // crossref schema only allows a maximum of one affiliation per contributor + ...(affiliations?.length > 0 && { affiliations: affiliations.slice(0, 1) }), + }; + }); + + const batchId = v4(); + + const param = { + _: { + batchId, + timestamp: Date.now(), + dpid: query.manifest.dpid.id, + doi: query.doi, + doiResource: `${process.env.DPID_URL_OVERRIDE}/${query.manifest.dpid.id}`, + title: query.manifest.title, + registrant: 'DeSci Labs AG', + contributors, + }, + depositor: { + name: 'DeSci Labs AG', + email: process.env.CROSSREF_EMAIL, + }, + publishedDate: query.publicationDate, + }; + + const metadata = Remixml.parse2txt(metadataTemplate, param); + + const url = `${process.env.CROSSREF_METADATA_API}?operation=doMDUpload&login_id=${process.env.CROSSREF_LOGIN || 'dslb'}&login_passwd=${process.env.CROSSREF_PASSWORD || 'pgz6wze1fmg-RPN_qkv'}`; + logger.info({ param, metadata, url }, 'METADATA TO POST'); + const buffer = Buffer.from(metadata, 'utf8'); + + // prefix filename with `@` as seen from the crossref documentation + // https://www.crossref.org/documentation/register-maintain-records/direct-deposit-xml/https-post/#00230 + const filename = `dpid_${param._.dpid}_upload.xml`; + // save file for debugging purposes + // await fs.writeFile(path.join(process.cwd(), filename), buffer); + const form = new FormData(); + form.append('fname', filename); + form.append('file', buffer, { filename }); + + try { + const response = await fetch(url, { + method: 'POST', + body: form, + headers: { + Accept: '*/*', + }, + }); + logger.info({ STATUS: response.status, message: response.statusText }, 'Response'); + const body = await response.text(); + logger.info({ body }, 'BODY'); + + if (!response.ok || response.status !== 200) { + // attach custom alert here + logger.error(body, 'METADATA SUBMISSION ERROR'); + return { ok: false }; + } + return { ok: true, batchId }; + } catch (error) { + logger.error(error, 'Post metadata Api Error'); + return { ok: false }; + } + } + /** + * Returns a list of all works (journal articles, + * conference proceedings, books, components, etc), + */ + async getDoiMetadata(doi: string) { + const params: { [k: string]: any } = {}; + let url = `https://www.crossref.org/openurl/?pid=${this._mailto}&format=unixref&id=${doi}`; + const config: RequestInit = { + method: 'GET', + mode: 'cors', + headers: {}, + }; + + // polite api + if (this._mailto) { + params['pid'] = this._mailto; + } + + params['format'] = 'unixref'; + params['id'] = doi; + + logger.info(params, 'API INFO'); + + for (const [key, value] of Object.entries(params)) { + url += `${key}=${value}&`; + } + + url = url.slice(0, -1); + url = encodeURI(url); + logger.info(url, 'url params'); + const request = new Request(url, config); + try { + const response = await global.fetch(request); + if (!response.ok) return null; + const body = await response.text(); + logger.info(body, 'XML RESPONSE'); + } catch (error) { + logger.error(error, 'OPEN URL SEARCH ERROR'); + return null; + } + } + + async performFetch(request: Request) { + const responseFromCache = await getFromCache(request.url); + // logger.info(responseFromCache, 'DOI From Cache'); + if (responseFromCache) return { ok: true, status: 200, data: responseFromCache }; + + const response = (await global.fetch(request)) as CrossRefHttpResponse; + response.data = undefined; + if (response.ok && response.status === 200) { + if (response.headers.get('content-type').includes('application/json')) { + response.data = (await response.json()) as T; + logger.info(response.ok, 'SET TO CACHE'); + await setToCache(request.url, response.data, ONE_DAY_TTL); + } + } + return response; + } + + async addSubmissiontoQueue({ + uniqueDoi, + dpid, + uuid, + batchId, + }: { + uniqueDoi: string; + dpid: string; + uuid: string; + batchId: string; + }) { + // check if there is no pending submission log + return await prisma.doiSubmissionQueue.create({ data: { batchId, uniqueDoi, dpid, uuid } }); + } + + async retrieveSubmission(retrieveUrl: string) { + // retrieve submission log whose batchId == param.['CROSSREF-EXTERNAL-ID'] + // update with notifiication payload + // query submssion payload from param.CROSSREF-RETRIEVE-URL + // only create doi if submission status is success + + try { + logger.info({ retrieveUrl }, 'ATTEMPT TO RETRIEVE SUBMISSION'); + const response = (await fetch(retrieveUrl).then((res) => res.json())) as NotificationResult; + logger.info(response, 'RETRIEVE SUBMISSION'); + // return interprete the response from the api to determine if the + // submission status has either `success | pending | failed` + const isSuccess = response?.completed !== null && !!response.recordCreated; + return { success: isSuccess, failure: !isSuccess }; + } catch (err) { + logger.error({ err }, 'ERROR RETRIEVING SUBMISSION'); + return { success: false, failure: true }; + } + } +} + +export default CrossRefClient; + +type NotificationResult = { + id: number; + status: string; + completed: string | null; + serviced: string; + notifyEndpoint: string; + notifyPayloadId: string; + notifyPayloadExpiration: string; + internalTrackingId: string; + externalTrackingId: string; + recordCreated: string | null; + recordUpdated: string | null; +}; + +// TODO: run yarn generate diff --git a/desci-server/src/services/crossRef/definitions.ts b/desci-server/src/services/crossRef/definitions.ts new file mode 100644 index 000000000..df21aab6b --- /dev/null +++ b/desci-server/src/services/crossRef/definitions.ts @@ -0,0 +1,58 @@ +export type CrossRefHttpResponse = ({ ok: true; data: T } & Response) | { ok: false; data: undefined }; + +export interface Item { + status: string; + 'message-type': string; + 'message-version': string; + message: T; +} + +export interface Items { + status: string; + messageType: string; + messageVersion: string; + message: { + itemsPerPage: number; + query: { + startIndex: number; + searchTerms: string | null; + }; + totalResults: number; + items: T[]; + }; +} + +export interface Work { + author: Author[]; + DOI: string; + prefix: string; + title: string[]; +} + +export interface Author { + given: string; + family: string; + name?: string; + sequence: string; + affiliation: { name: string }[]; + ORCID?: string; + authenticatedOrcid?: boolean; +} + +export interface QueryWorkParams { + offset?: number; + query?: string; + queryAuthor?: string; + queryTitle?: string; + rows?: number; + select?: WorkSelectOptions[]; +} + +export enum WorkSelectOptions { + DOI = 'DOI', + PREFIX = 'prefix', + TITLE = 'title', + AUTHOR = 'author', +} + +export type RegisterDoiResponse = { ok: true; batchId: string } | { ok: false; batchId?: never }; diff --git a/desci-server/src/services/crossRef/utils.ts b/desci-server/src/services/crossRef/utils.ts new file mode 100644 index 000000000..9777a9769 --- /dev/null +++ b/desci-server/src/services/crossRef/utils.ts @@ -0,0 +1,27 @@ +export function keysToDotsAndDashses(param: any) { + if (isObject(param)) { + const r = {}; + Object.keys(param).forEach((key) => { + r[toDotsAndDashes(key)] = keysToDotsAndDashses(param[key]); + }); + return r; + } else if (Array.isArray(param)) { + return param.map((param) => keysToDotsAndDashses(param)); + } + + return param; +} + +const isObject = (o: any) => Object(o) === o && !Array.isArray(o) && typeof o !== 'function'; + +const toDotsAndDashes = (str: string) => { + str = str.replace(/query[A-Z]/, (match) => `query.${match.slice(-1)}`); + str = str.replace(/[A-Z]/g, (match) => match.toLowerCase()); + return str; +}; + +export const getOrcidFromURL = (orcid: string) => { + const pattern = /[^/]+$/; + const match = orcid.match(pattern); + return match ? match[0] : orcid; +}; diff --git a/desci-server/src/services/data/externalCidProcessing.ts b/desci-server/src/services/data/externalCidProcessing.ts index 8d88a049f..d5c1c9947 100644 --- a/desci-server/src/services/data/externalCidProcessing.ts +++ b/desci-server/src/services/data/externalCidProcessing.ts @@ -9,6 +9,7 @@ import { import { User, Node, Prisma } from '@prisma/client'; import { prisma } from '../../client.js'; +import { ExternalCid } from '../../controllers/data/updateExternalCid.js'; import { persistManifest } from '../../controllers/data/utils.js'; import { logger as parentLogger } from '../../logger.js'; import { ensureUniquePathsDraftTree, getLatestDriveTime } from '../../services/draftTrees.js'; @@ -28,7 +29,6 @@ import { createManifestPersistFailError, createUnhandledError, } from './processingErrors.js'; -import { ExternalCid } from '../../controllers/data/updateExternalCid.js'; const logger = parentLogger.child({ module: 'Services::ExternalCidProcessing', @@ -48,7 +48,7 @@ interface ProcessExternalCidDataToIpfsParams { /** * Processes external CIDs, to pin the file or leafless UnixFS DAG. -*/ + */ export async function processExternalCidDataToIpfs({ externalCids, user, @@ -63,9 +63,7 @@ export async function processExternalCidDataToIpfs({ */ const cidTypesSizes: Record = {}; try { - externalCids = externalCids.map( - (extCid) => ({ ...extCid, cid: convertToCidV1(extCid.cid) }) - ); + externalCids = externalCids.map((extCid) => ({ ...extCid, cid: convertToCidV1(extCid.cid) })); for (const extCid of externalCids) { const { isDirectory, size } = await getExternalCidSizeAndType(extCid.cid); if (size !== undefined && isDirectory !== undefined) { diff --git a/desci-server/src/services/data/externalUrlProcessing.ts b/desci-server/src/services/data/externalUrlProcessing.ts index d78d681e9..a02b4c09f 100644 --- a/desci-server/src/services/data/externalUrlProcessing.ts +++ b/desci-server/src/services/data/externalUrlProcessing.ts @@ -60,7 +60,7 @@ const logger = parentLogger.child({ interface ProcessExternalUrlDataToIpfsParams { // files: any[]; - externalUrl: any; + externalUrl: { path: string; url: string; doi?: string }; user: User; node: Node; /** @@ -69,6 +69,7 @@ interface ProcessExternalUrlDataToIpfsParams { contextPath: string; componentType?: ResearchObjectComponentType; componentSubtype?: ResearchObjectComponentSubtypes; + autoStar?: boolean; } /** @@ -81,6 +82,7 @@ export async function processExternalUrlDataToIpfs({ contextPath, componentType, componentSubtype, + autoStar, }: ProcessExternalUrlDataToIpfsParams) { // debugger; let pinResult: IpfsPinnedResult[] = []; @@ -128,10 +130,17 @@ export async function processExternalUrlDataToIpfs({ */ if (componentType === ResearchObjectComponentType.PDF) { const url = externalUrl.url; - const res = await axios.get(url, { responseType: 'arraybuffer' }); - const buffer = Buffer.from(res.data, 'binary'); - externalUrlFiles = [{ path: externalUrl.path, content: buffer }]; - externalUrlTotalSizeBytes = buffer.length; + const response = await axios.head(url); + const contentType = response.headers['content-type']; + + if (contentType === 'application/pdf') { + const res = await axios.get(url, { responseType: 'arraybuffer' }); + const buffer = Buffer.from(res.data, 'binary'); + externalUrlFiles = [{ path: externalUrl.path, content: buffer }]; + externalUrlTotalSizeBytes = buffer.length; + } else { + throw new Error('Invalid file type. Only PDF files are supported.'); + } } } catch (e) { logger.warn( @@ -229,11 +238,40 @@ export async function processExternalUrlDataToIpfs({ componentType, componentSubtype, externalUrl, + star: autoStar, }); if (firstNestingComponents?.length > 0) { updatedManifest = await addComponentsToDraftManifest(node, firstNestingComponents); } + + logger.info({ EXTERNAL_DOI: externalUrl }, 'External URL DOI'); + if (componentType === ResearchObjectComponentType.PDF && externalUrl.doi) { + const componentIndex = updatedManifest.components.findIndex( + (comp) => comp.type === ResearchObjectComponentType.PDF, + ); + const comp = updatedManifest.components[componentIndex]; + const res = await repoService.dispatchAction({ + uuid: node.uuid, + documentId: node.manifestDocumentId as DocumentId, + actions: [ + { + type: 'Update Component', + component: { + ...comp, + payload: { + ...comp.payload, + ...(externalUrl.doi && { + doi: [externalUrl.doi], + }), + }, + }, + componentIndex, + }, + ], + }); + updatedManifest = res.manifest; + } } updatedManifest = updatedManifest ?? (await repoService.getDraftManifest(ltsNode.uuid as NodeUuid)); diff --git a/desci-server/src/services/data/processing.ts b/desci-server/src/services/data/processing.ts index e7c1b575f..9c26195b5 100644 --- a/desci-server/src/services/data/processing.ts +++ b/desci-server/src/services/data/processing.ts @@ -7,6 +7,7 @@ import { ResearchObjectComponentType, ResearchObjectComponentTypeMap, ResearchObjectV1, + extractComponentTypeFromTypeMap, extractExtension, isNodeRoot, neutralizePath, @@ -14,6 +15,7 @@ import { } from '@desci-labs/desci-models'; import { User, Node, DataType, Prisma } from '@prisma/client'; import axios from 'axios'; +import { CID } from 'multiformats'; import { v4 } from 'uuid'; import { prisma } from '../../client.js'; @@ -41,6 +43,7 @@ import { generateManifestPathsToDbTypeMap, getTreeAndFill, inheritComponentType, + prepareFirstNestingComponents, } from '../../utils/driveUtils.js'; import { EXTENSION_MAP } from '../../utils/extensions.js'; import { cleanupManifestUrl } from '../../utils/manifest.js'; @@ -59,7 +62,6 @@ import { createNotEnoughSpaceError, createUnhandledError, } from './processingErrors.js'; -import { CID } from 'multiformats'; interface ProcessS3DataToIpfsParams { files: any[]; @@ -71,6 +73,7 @@ interface ProcessS3DataToIpfsParams { contextPath: string; componentType?: ResearchObjectComponentType; componentSubtype?: ResearchObjectComponentSubtypes; + autoStar?: boolean; } const logger = parentLogger.child({ @@ -85,6 +88,7 @@ export async function processS3DataToIpfs({ user, node, contextPath, + autoStar, }: ProcessS3DataToIpfsParams): Promise> { let pinResult: IpfsPinnedResult[] = []; let manifestPathsToTypesPrune: Record = {}; @@ -135,18 +139,37 @@ export async function processS3DataToIpfs({ // const ltsManifest = await getLatestManifestFromNode(ltsNode); let updatedManifest = await repoService.getDraftManifest(ltsNode.uuid as NodeUuid); + const { filteredFiles } = filterFirstNestings(pinResult.slice(0, -1)); + if (componentTypeMap) { /** * Automatically create a new component(s) for the files added, to the first nesting. * It doesn't need to create a new component for every file, only the first nested ones, as inheritance takes care of the children files. * Only needs to happen if a predefined component type is to be added */ - // const firstNestingComponents = predefineComponentsForPinnedFiles({ - // pinnedFirstNestingFiles: filteredFiles, - // contextPath, - // componentType, - // componentSubtype, - // }); + if (autoStar) { + // debugger; + const firstNestingComponents = predefineComponentsForPinnedFiles({ + pinnedFirstNestingFiles: filteredFiles, + contextPath, + componentTypeMap, + star: true, + }); + const preparedComponents = prepareFirstNestingComponents(firstNestingComponents); + + const updatedDoc = await repoService.dispatchAction({ + uuid: node.uuid as NodeUuid, + documentId: node.manifestDocumentId as DocumentId, + actions: [ + { + type: 'Upsert Components', + components: preparedComponents, + }, + ], + }); + updatedManifest = updatedDoc.manifest; + } + updatedManifest = await assignTypeMapInManifest(node, updatedManifest, componentTypeMap, contextPath, DRAFT_CID); logger.info({ updatedManifest }, 'assignTypeMapInManifest'); } @@ -459,9 +482,11 @@ export function updateManifestDataBucket({ manifest, newRootCid }: UpdatingManif interface PredefineComponentsForPinnedFilesParams { pinnedFirstNestingFiles: IpfsPinnedResult[]; contextPath: string; - componentType: ResearchObjectComponentType; + componentTypeMap?: ResearchObjectComponentTypeMap; + componentType?: ResearchObjectComponentType; componentSubtype?: ResearchObjectComponentSubtypes; externalUrl?: { url: string; path: string }; + star?: boolean; } /** @@ -472,7 +497,9 @@ export function predefineComponentsForPinnedFiles({ contextPath, componentType, componentSubtype, + componentTypeMap = {}, externalUrl, + star, }: PredefineComponentsForPinnedFilesParams): FirstNestingComponent[] { const firstNestingComponents: FirstNestingComponent[] = pinnedFirstNestingFiles.map((file) => { const neutralFullPath = contextPath + '/' + file.path; @@ -482,9 +509,9 @@ export function predefineComponentsForPinnedFiles({ name: name, path: neutralFullPath, cid: file.cid, - componentType, + componentType: componentType || extractComponentTypeFromTypeMap(neutralFullPath, componentTypeMap), componentSubtype, - // star: true, // removed; starring by default was unpopular + ...(star && { star: true }), ...(externalUrl && { externalUrl: externalUrl.url }), }; }); diff --git a/desci-server/src/services/index.ts b/desci-server/src/services/index.ts new file mode 100644 index 000000000..55742e736 --- /dev/null +++ b/desci-server/src/services/index.ts @@ -0,0 +1,12 @@ +import { prisma } from '../client.js'; + +import { AutomatedMetadataClient } from './AutomatedMetadata.js'; +import CrossRefClient from './crossRef/client.js'; +import { DoiService } from './Doi.js'; + +export const doiService = new DoiService(prisma); +export const crossRefClient = new CrossRefClient('', process.env.CROSSREF_EMAIL); +export const metadataClient = new AutomatedMetadataClient( + process.env.AUTOMATED_METADATA_API || 'http://host.docker.internal:5005', // remove this after env have been added to CI + process.env.AUTOMATED_METADATA_API_KEY || '', +); diff --git a/desci-server/src/services/ipfs.ts b/desci-server/src/services/ipfs.ts index 87c945ff7..5d385a6a3 100644 --- a/desci-server/src/services/ipfs.ts +++ b/desci-server/src/services/ipfs.ts @@ -8,15 +8,15 @@ import { type ResearchObjectV1Component, } from '@desci-labs/desci-models'; import type { PBNode } from '@ipld/dag-pb'; -import * as dagPb from "@ipld/dag-pb"; +import * as dagPb from '@ipld/dag-pb'; import { DataReference, DataType, NodeVersion } from '@prisma/client'; import axios from 'axios'; +import { UnixFS } from 'ipfs-unixfs'; import toBuffer from 'it-to-buffer'; +import { create, CID, globSource } from 'kubo-rpc-client'; import { flatten, uniq } from 'lodash-es'; import * as multiformats from 'multiformats'; import { code as rawCode } from 'multiformats/codecs/raw'; -import { create, CID, globSource } from 'kubo-rpc-client' -import { UnixFS } from 'ipfs-unixfs'; import { prisma } from '../client.js'; import { PUBLIC_IPFS_PATH } from '../config/index.js'; @@ -298,10 +298,10 @@ export async function pinExternalDags(cids: string[]): Promise { export const pinFile = async (file: Buffer | Readable | ReadableStream): Promise => { const isOnline = await client.isOnline(); + // debugger; logger.debug({ fn: 'pinFile' }, `isOnline: ${isOnline}`); - - const uploaded = await client.add(file, { cidVersion: 1, pin: true }); - return { ...uploaded, cid: uploaded.cid.toString() }; + const uploadedFile = await client.add(file, { cidVersion: 1, pin: true }); + return { ...uploadedFile, cid: uploadedFile.cid.toString() }; }; export interface RecursiveLsResult extends IpfsPinnedResult { @@ -1005,7 +1005,7 @@ export async function getExternalCidSizeAndType(cid: string) { size = fSize; } else { size = unixFs.blockSizes.reduce((a, b) => a + b, BigInt(0)); - }; + } } if (isDirectory !== undefined && size !== undefined) return { isDirectory, size }; throw new Error(`Failed to resolve CID or determine file size/type for cid: ${cid}`); diff --git a/desci-server/src/services/nodeManager.ts b/desci-server/src/services/nodeManager.ts index 36b53b805..e932fa29d 100644 --- a/desci-server/src/services/nodeManager.ts +++ b/desci-server/src/services/nodeManager.ts @@ -66,6 +66,19 @@ export const setCeramicStream = async (uuid: string, ceramicStream: string) => { }); }; +export const setDpidAlias = async (uuid: string, dpidAlias: number) => { + logger.debug({ fn: 'setDpidAlias', uuid, dpidAlias }, 'node::setDpidAlias'); + uuid = ensureUuidEndsWithDot(uuid); + return await prisma.node.update({ + data: { + dpidAlias, + }, + where: { + uuid, + }, + }); +}; + export const createPublicDataRefs = async ( data: Prisma.PublicDataReferenceCreateManyInput[], userId: number | undefined, diff --git a/desci-server/src/services/orcid.ts b/desci-server/src/services/orcid.ts index 6944393cb..c3cc0a60a 100644 --- a/desci-server/src/services/orcid.ts +++ b/desci-server/src/services/orcid.ts @@ -1,16 +1,17 @@ import { ResearchObjectV1, ResearchObjectV1Author } from '@desci-labs/desci-models'; -import { AuthTokenSource, ORCIDRecord, OrcidPutCodes, PutcodeReference } from '@prisma/client'; +import { ActionType, AuthTokenSource, ORCIDRecord, OrcidPutCodes, PutcodeReference } from '@prisma/client'; -import { logger as parentLogger, prisma } from '../internal.js'; +import { logger as parentLogger, prisma, zeropad } from '../internal.js'; import { IndexedResearchObject, getIndexedResearchObjects } from '../theGraph.js'; import { hexToCid } from '../utils.js'; import { attestationService } from './Attestation.js'; import { getManifestByCid } from './data/processing.js'; +import { saveInteractionWithoutReq } from './interactionLog.js'; // const PUTCODE_REGEX = /put-code=.*?(?\d+)/m; -const DPID_URL_OVERRIDE = process.env.DPID_URL_OVERRIDE || 'https://dev-beta.dpid.org'; +const DPID_URL_OVERRIDE = process.env.DPID_URL_OVERRIDE || 'https://beta.dpid.org'; const ORCID_DOMAIN = process.env.ORCID_API_DOMAIN || 'sandbox.orcid.org'; type Claim = Awaited>[number]; const logger = parentLogger.child({ module: 'ORCIDApiService' }); @@ -144,7 +145,7 @@ class OrcidApiService { const researchObject = researchObjects[0] as IndexedResearchObject; const manifestCid = hexToCid(researchObject.recentCid); const latestManifest = await getManifestByCid(manifestCid); - let claims = await attestationService.getProtectedNodeClaims(latestManifest.dpid.id); + let claims = await attestationService.getProtectedNodeClaims(nodeUuid); claims = claims.filter((claim) => claim.verifications > 0); logger.info({ claims: claims.length }, '[ORCID::DELETE]:: CHECK CLAIMS'); @@ -196,24 +197,37 @@ class OrcidApiService { }, }); - await prisma.orcidPutCodes.delete({ - where: { - id: putCode.id, - }, - }); - - logger.info( - { - status: response.status, - statusText: response.statusText, + if (response.ok) { + await saveInteractionWithoutReq(ActionType.REMOVE_ORCID_WORK_RECORD, { orcid, - putCode: { - code: putCode.putcode, - reference: putCode.reference, + }); + await prisma.orcidPutCodes.delete({ + where: { + id: putCode.id, }, - }, - 'ORCID RECORD DELETED', - ); + }); + + logger.info( + { + status: response.status, + statusText: response.statusText, + orcid, + putCode: { + code: putCode.putcode, + reference: putCode.reference, + }, + }, + 'ORCID RECORD DELETED', + ); + } else { + await saveInteractionWithoutReq(ActionType.ORCID_API_ERROR, { + orcid, + putCode, + status: response.status, + error: await response.json(), + }); + logger.error({ orcid, putCode, status: response.status }, 'Error: REMOVE ORCID WORK RECORD'); + } } /** @@ -236,7 +250,7 @@ class OrcidApiService { researchObject.versions.reverse(); const nodeVersion = researchObject.versions.length; - let claims = await attestationService.getProtectedNodeClaims(latestManifest.dpid.id); + let claims = await attestationService.getProtectedNodeClaims(nodeUuid); claims = claims.filter((claim) => claim.verifications > 0); // TODO: if claims is empty remove orcid record @@ -370,17 +384,34 @@ class OrcidApiService { }, }); } + await saveInteractionWithoutReq(ActionType.UPDATE_ORCID_RECORD, { + userId, + orcid, + uuid, + putCode: returnedCode, + }); logger.info( { uuid, userId, status: response.status, returnedCode, reference: PutcodeReference.PREPRINT }, '[ORCID_API_SERVICE]:: Node Record UPDATED', ); } else { - logger.info( - { status: response.status, response, body: await response.text() }, - '[ORCID_API_SERVICE]::ORCID NODE API ERROR', - ); + const body = await response.text(); + await saveInteractionWithoutReq(ActionType.ORCID_API_ERROR, { + userId, + orcid, + uuid, + statusCode: response.status, + error: body, + }); + logger.info({ status: response.status, response, body }, '[ORCID_API_SERVICE]::ORCID NODE API ERROR'); } } catch (err) { + await saveInteractionWithoutReq(ActionType.ORCID_API_ERROR, { + userId, + orcid, + uuid, + error: err, + }); logger.info({ err }, '[ORCID_API_SERVICE]::NODE API Error Response'); } } @@ -496,17 +527,38 @@ class OrcidApiService { }); } + await saveInteractionWithoutReq(ActionType.UPDATE_ORCID_RECORD, { + userId, + orcid, + uuid, + claimId: claim.id, + putCode: returnedCode, + }); + logger.info( { uuid, claimId: claim.id, userId, status: response.status, returnedCode, reference: putCodeReference }, 'ORCID CLAIM RECORD UPDATED', ); } else { - logger.info( - { status: response.status, response, body: await response.text() }, - '[ORCID_API_SERVICE]::ORCID CLAIM API ERROR', - ); + const body = await response.text(); + await saveInteractionWithoutReq(ActionType.ORCID_API_ERROR, { + userId, + orcid, + uuid, + claimId: claim.id, + statusCode: response.status, + error: body, + }); + logger.info({ status: response.status, response, body }, '[ORCID_API_SERVICE]::ORCID CLAIM API ERROR'); } } catch (err) { + await saveInteractionWithoutReq(ActionType.ORCID_API_ERROR, { + userId, + orcid, + uuid, + claimId: claim.id, + error: err, + }); logger.info({ err }, '[ORCID_API_SERVICE]::CLAIM API Error Response'); } } @@ -584,8 +636,6 @@ const generateClaimWorkRecord = ({ ); }; -const zeropad = (data: string) => (data.length < 2 ? `0${data}` : data); - /** * Generate an ORCID work summary xml string based for a research Node * Model Reference https://github.com/ORCID/orcid-model/blob/master/src/main/resources/record_3.0/work-3.0.xsd diff --git a/desci-server/src/services/repoService.ts b/desci-server/src/services/repoService.ts index 0d82bd1a9..2c9a75557 100644 --- a/desci-server/src/services/repoService.ts +++ b/desci-server/src/services/repoService.ts @@ -39,7 +39,7 @@ class RepoService { `${this.baseUrl}/v1/nodes/documents/dispatch`, arg, ); - logger.info({ arg, response: response.data }, 'Disatch Changes Response'); + logger.info({ arg, ok: response.data.ok }, 'Disatch Changes Response'); if (response.status === 200 && response.data.ok) { return response.data.document; } else { @@ -90,7 +90,7 @@ class RepoService { const response = await this.#client.get>( `${this.baseUrl}/v1/nodes/documents/draft/${arg.uuid}`, ); - logger.info({ response: response.data }, 'Draft Retrieval Response'); + logger.info({ response: response.status }, 'Draft Retrieval Response'); if (response.status === 200 && response.data.ok) { return response.data.document; } else { diff --git a/desci-server/src/templates/emails/NodeUpdated.tsx b/desci-server/src/templates/emails/NodeUpdated.tsx new file mode 100644 index 000000000..236f7d4c2 --- /dev/null +++ b/desci-server/src/templates/emails/NodeUpdated.tsx @@ -0,0 +1,106 @@ +import { Body, Container, Head, Heading, Html, Preview, Text, Button, Section } from '@react-email/components'; +import * as React from 'react'; + +import MainLayout from './MainLayout.js'; + +export interface NodeUpdatedEmailProps { + nodeOwner: string; + nodeTitle: string; + nodeUuid: string; + nodeDpid: string; + versionUpdate: string; + manuscriptCid: string; +} + +const DAPP_URL = process.env.DAPP_URL || 'http://localhost:3000'; + +export const NodeUpdated = ({ + nodeOwner, + nodeTitle, + nodeUuid, + nodeDpid, + versionUpdate, + manuscriptCid, +}: NodeUpdatedEmailProps) => { + if (nodeUuid?.endsWith('.') || nodeUuid?.endsWith('=')) nodeUuid = nodeUuid.slice(0, -1); + nodeOwner = nodeOwner || 'The node owner'; + nodeDpid = nodeDpid || '(DEMO)'; + versionUpdate = versionUpdate || '1'; // For demo case + const nodeUrl = `${DAPP_URL}/dpid/${nodeDpid}/${versionUpdate}`; + const manuscriptUrl = `${process.env.IPFS_RESOLVER_OVERRIDE}/${manuscriptCid}`; + return ( + + + + DPID {nodeDpid} has been updated + + + + DPID {nodeDpid} has been updated to version {versionUpdate} + + + {nodeOwner} has published an updated version of their research object titled{' '} + "{nodeTitle}" that you have contributed to. + + +
+ + +
+
+ + +
+ ); +}; + +export default NodeUpdated; + +const main = { + backgroundColor: '#ffffff', + margin: '0 auto', + fontFamily: + "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", +}; + +const container = { + margin: '0 auto', + padding: '0px 20px', +}; + +const h1 = { + color: '#000000', + fontSize: '30px', + fontWeight: '700', + margin: '30px 0', + padding: '0', + lineHeight: '42px', +}; + +const heroText = { + fontSize: '20px', + lineHeight: '28px', + marginBottom: '30px', +}; diff --git a/desci-server/src/templates/emails/SubmissionPackage.tsx b/desci-server/src/templates/emails/SubmissionPackage.tsx new file mode 100644 index 000000000..ee0822cab --- /dev/null +++ b/desci-server/src/templates/emails/SubmissionPackage.tsx @@ -0,0 +1,108 @@ +import { Body, Container, Head, Heading, Html, Preview, Text, Button, Section } from '@react-email/components'; +import * as React from 'react'; + +import { PUBLIC_IPFS_PATH } from '../../config/index.js'; + +import MainLayout from './MainLayout.js'; + +export interface SubmissionPackageEmailProps { + nodeOwner: string; + nodeTitle: string; + nodeUuid: string; + nodeDpid: string; + versionUpdate: string; + manuscriptCid: string; +} + +const DAPP_URL = process.env.DAPP_URL || 'http://localhost:3000'; + +export const SubmissionPackage = ({ + nodeOwner, + nodeTitle, + nodeUuid, + nodeDpid, + versionUpdate, + manuscriptCid, +}: SubmissionPackageEmailProps) => { + if (nodeUuid?.endsWith('.') || nodeUuid?.endsWith('=')) nodeUuid = nodeUuid.slice(0, -1); + nodeOwner = nodeOwner || 'The node owner'; + nodeDpid = nodeDpid || '(DEMO)'; + versionUpdate = versionUpdate || '1'; // For demo case + const nodeUrl = `${DAPP_URL}/dpid/${nodeDpid}/${versionUpdate}`; + const manuscriptUrl = `${PUBLIC_IPFS_PATH}/${manuscriptCid}`; + return ( + + + + Your submission package is ready + + + + A submission package has been created for your node with DPID {nodeDpid} + + + {nodeOwner} has published their research object titled "{nodeTitle}" + that you have contributed to. + + +
+ + +
+
+ + +
+ ); +}; + +export default SubmissionPackage; + +const main = { + backgroundColor: '#ffffff', + margin: '0 auto', + fontFamily: + "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif", +}; + +const container = { + margin: '0 auto', + padding: '0px 20px', +}; + +const h1 = { + color: '#000000', + fontSize: '30px', + fontWeight: '700', + margin: '30px 0', + padding: '0', + lineHeight: '42px', +}; + +const heroText = { + fontSize: '20px', + lineHeight: '28px', + marginBottom: '30px', +}; diff --git a/desci-server/src/templates/emails/utils/emailRenderer.tsx b/desci-server/src/templates/emails/utils/emailRenderer.tsx index fa79e326d..5dec6d314 100644 --- a/desci-server/src/templates/emails/utils/emailRenderer.tsx +++ b/desci-server/src/templates/emails/utils/emailRenderer.tsx @@ -3,6 +3,8 @@ import { render } from '@react-email/components'; import AttestationClaimedEmail, { AttestationClaimedEmailProps } from '../AttestationClaimed.js'; import ContributorInvite, { ContributorInviteEmailProps } from '../ContributorInvite.js'; import MagicCodeEmail, { MagicCodeEmailProps } from '../MagicCode.js'; +import NodeUpdated, { NodeUpdatedEmailProps } from '../NodeUpdated.js'; +import SubmissionPackage, { SubmissionPackageEmailProps } from '../SubmissionPackage.js'; export const ContributorInviteEmailHtml = ({ inviter, @@ -17,3 +19,7 @@ export const MagicCodeEmailHtml = ({ magicCode, ip }: MagicCodeEmailProps) => re export const AttestationClaimedEmailHtml = (props: AttestationClaimedEmailProps) => render(AttestationClaimedEmail(props)); + +export const NodeUpdatedEmailHtml = (props: NodeUpdatedEmailProps) => render(NodeUpdated(props)); + +export const SubmissionPackageEmailHtml = (props: SubmissionPackageEmailProps) => render(SubmissionPackage(props)); diff --git a/desci-server/src/types/ProcessEnv.d.ts b/desci-server/src/types/ProcessEnv.d.ts index 1baa0a7f6..e7fe3592b 100755 --- a/desci-server/src/types/ProcessEnv.d.ts +++ b/desci-server/src/types/ProcessEnv.d.ts @@ -10,5 +10,15 @@ declare namespace NodeJS { JWT_SECRET: string; JWT_EXPIRATION: string; MAX_LOCK_TIME: string; + CROSSREF_EMAIL: string; + CROSSREF_DOI_URL: string; + CROSSREF_METADATA_API: string; + ORCID_API_DOMAIN: string; + CROSSREF_LOGIN: string; + CROSSREF_PASSWORD: string; + CROSSREF_NOTIFY_ENDPOINT: string; + CROSSREF_API_KEY: string; + AUTOMATED_METADATA_API: string; + AUTOMATED_METADATA_API_KEY: string; } } diff --git a/desci-server/src/utils.ts b/desci-server/src/utils.ts index 75fb8002e..fe63496d2 100644 --- a/desci-server/src/utils.ts +++ b/desci-server/src/utils.ts @@ -50,8 +50,8 @@ export const hexToCid = (hexCid: string) => { return cidString; }; -export async function asyncMap(arr: E[], predicate: (input: E) => Promise): Promise { - const results = await Promise.all(arr.map(predicate)); +export async function asyncMap(arr: E[], predicate: (input: E, index: number) => Promise): Promise { + const results = await Promise.all(arr.map((value, index) => predicate(value, index))); return results as T[]; } @@ -256,3 +256,18 @@ export function formatOrcidString(orcidId: string): string { return formattedOrcid; } + +export function toKebabCase(name: string) { + const lowercaseName = name.toLowerCase(); + + // Replace spaces, underscores, and dashes with a single dash + const dashedName = lowercaseName.replace(/[\s_-]+/g, '-'); + + // Remove any non-alphanumeric characters except dashes + const urlSafeName = dashedName.replace(/[^a-z0-9-]/g, ''); + + // Remove any leading or trailing dashes + const trimmedName = urlSafeName.replace(/^-+|-+$/g, ''); + + return trimmedName; +} diff --git a/desci-server/src/utils/asyncHandler.ts b/desci-server/src/utils/asyncHandler.ts index dc7611657..18ae132db 100644 --- a/desci-server/src/utils/asyncHandler.ts +++ b/desci-server/src/utils/asyncHandler.ts @@ -1,7 +1,9 @@ import { NextFunction, Request, Response } from 'express'; -export type AsyncFunction = (req: Request, res: Response, next: NextFunction) => Promise; +export type AsyncFunction = (req: R, res: Response, next: NextFunction) => Promise; -export const asyncHander = (execution: AsyncFunction) => (req: Request, res: Response, next: NextFunction) => { - execution(req, res, next).catch(next); -}; +export const asyncHandler = + (execution: AsyncFunction) => + (req: Request, res: Response, next: NextFunction) => { + execution(req as R, res, next).catch(next); + }; diff --git a/desci-server/src/utils/draftTreeUtils.ts b/desci-server/src/utils/draftTreeUtils.ts index 0cdd055bc..c99e7184b 100644 --- a/desci-server/src/utils/draftTreeUtils.ts +++ b/desci-server/src/utils/draftTreeUtils.ts @@ -9,12 +9,12 @@ import { } from '@desci-labs/desci-models'; import { createLink, createNode, encode, prepare, type PBLink } from '@ipld/dag-pb'; import { DraftNodeTree, Node, Prisma, User } from '@prisma/client'; -import { UnixFS }from 'ipfs-unixfs'; +import { UnixFS } from 'ipfs-unixfs'; +import { CID } from 'multiformats'; import { prisma } from '../client.js'; import { logger as parentLogger } from '../logger.js'; import { client } from '../services/ipfs.js'; -import { CID } from 'multiformats'; const logger = parentLogger.child({ module: 'Utils::DraftTreeUtils', diff --git a/desci-server/src/utils/driveUtils.ts b/desci-server/src/utils/driveUtils.ts index b42152929..f3bcc04ad 100644 --- a/desci-server/src/utils/driveUtils.ts +++ b/desci-server/src/utils/driveUtils.ts @@ -393,6 +393,26 @@ export function DANGEROUSLY_addComponentsToManifest( return manifest; } +export function prepareFirstNestingComponents(firstNestingComponents: FirstNestingComponent[]) { + const preparedComponents: ResearchObjectV1Component[] = []; + firstNestingComponents.forEach((c) => { + const comp = { + id: randomUUID(), + name: c.name, + ...(c.componentType && { type: c.componentType }), + ...(c.componentSubtype && { subtype: c.componentSubtype }), + payload: { + cid: c.cid, + path: c.path, + ...(c.externalUrl && { externalUrl: c.externalUrl }), + }, + starred: c.star || false, + }; + preparedComponents.push(comp); + }); + return preparedComponents; +} + export async function addComponentsToDraftManifest(node: Node, firstNestingComponents: FirstNestingComponent[]) { //add duplicate path check const components = firstNestingComponents.map((entry) => { diff --git a/desci-server/src/utils/manifest.ts b/desci-server/src/utils/manifest.ts index 1b1916701..1c359e98f 100644 --- a/desci-server/src/utils/manifest.ts +++ b/desci-server/src/utils/manifest.ts @@ -45,3 +45,5 @@ export const resolveNodeManifest = async (targetCid: string, query?: string) => return null; } }; + +export const zeropad = (data: string) => (data.length < 2 ? `0${data}` : data); diff --git a/desci-server/src/utils/sendCookie.ts b/desci-server/src/utils/sendCookie.ts index 18428d729..f7e759ab8 100644 --- a/desci-server/src/utils/sendCookie.ts +++ b/desci-server/src/utils/sendCookie.ts @@ -2,12 +2,26 @@ import { type Response } from 'express'; import { oneDay, oneMinute, oneYear } from '../controllers/auth/magic.js'; import { logger } from '../logger.js'; -export const sendCookie = (res: Response, token: string, isDevMode: boolean, cookieName = 'auth') => { + +/** + * To enable a wildcard auth cookie that works across all subdomains, we need to modify the auth cookie name for each domain. + */ + +const AUTH_COOKIE_DOMAIN_MAPPING = { + 'https://nodes-api.desci.com': 'auth', + 'https://nodes-api-dev.desci.com': 'auth-dev', + 'https://nodes-api-staging.desci.com': 'auth-stage', +}; + +// auth, auth-stage, auth-dev +export const AUTH_COOKIE_FIELDNAME = AUTH_COOKIE_DOMAIN_MAPPING[process.env.SERVER_URL] || 'auth'; + +export const sendCookie = (res: Response, token: string, isDevMode: boolean, cookieName = AUTH_COOKIE_FIELDNAME) => { if (isDevMode && process.env.SERVER_URL === 'https://nodes-api-dev.desci.com') { // insecure cookie for local dev, should only be used for testing logger.info({ fn: 'sendCookie' }, `insecure dev cookie set`); res.cookie(cookieName, token, { - maxAge: cookieName === 'auth' ? oneDay : oneMinute, + maxAge: cookieName === AUTH_COOKIE_FIELDNAME ? oneDay : oneMinute, httpOnly: true, sameSite: 'strict', }); @@ -16,7 +30,7 @@ export const sendCookie = (res: Response, token: string, isDevMode: boolean, coo (process.env.COOKIE_DOMAIN?.split(',') || [undefined]).map((domain) => { logger.info({ fn: 'sendCookie', domain, env: process.env.NODE_ENV }, `cookie set`); res.cookie(cookieName, token, { - maxAge: cookieName === 'auth' ? oneYear : oneMinute, + maxAge: cookieName === AUTH_COOKIE_FIELDNAME ? oneYear : oneMinute, httpOnly: true, // Ineffective whilst we still return the bearer token to the client in the response secure: process.env.NODE_ENV === 'production', domain: process.env.NODE_ENV === 'production' ? domain || '.desci.com' : 'localhost', diff --git a/desci-server/src/workers/publish.ts b/desci-server/src/workers/publish.ts index 33fb41354..9486c3703 100644 --- a/desci-server/src/workers/publish.ts +++ b/desci-server/src/workers/publish.ts @@ -7,7 +7,6 @@ import { prisma } from '../client.js'; import { publishHandler } from '../controllers/nodes/publish.js'; import { logger as parentLogger } from '../logger.js'; import { lockService } from '../redisClient.js'; -import { getManifestByCid } from '../services/data/processing.js'; import { fixDpid, getTargetDpidUrl } from '../services/fixDpid.js'; enum ProcessOutcome { @@ -25,7 +24,7 @@ const logger = parentLogger.child({ module: 'PUBLISH WORKER', hostname }); const checkTransaction = async (transactionId: string, uuid: string) => { const provider = ethers.getDefaultProvider(ETHEREUM_RPC_URL); - if (!process.env.MUTE_PUBLISH_WORKER) + if (!process.env.MUTE_PUBLISH_WORKER) { logger.info( { uuid, @@ -34,6 +33,7 @@ const checkTransaction = async (transactionId: string, uuid: string) => { }, 'TX::check transaction', ); + } const tx = await provider.getTransactionReceipt(transactionId); logger.info({ tx, uuid, transactionId, ETHEREUM_RPC_URL, network: await provider.getNetwork() }, 'TX::Receipt'); @@ -60,7 +60,6 @@ async function processPublishQueue() { } else { logger.warn('DPID URL not set, skipping dpid fix'); } - lockService.freeLock(task.transactionId); }) .catch((err) => { @@ -71,7 +70,7 @@ async function processPublishQueue() { } else if (txStatus === 0) { await prisma.publishTaskQueue.update({ where: { id: task.id }, data: { status: PublishTaskQueueStatus.FAILED } }); lockService.freeLock(task.transactionId); - if (!process.env.MUTE_PUBLISH_WORKER) logger.info({ txStatus }, 'PUBLISH TX FAILED'); + if (!process.env.MUTE_PUBLISH_WORKER) logger.error({ txStatus }, 'PUBLISH TX FAILED'); } else { await prisma.publishTaskQueue.update({ where: { id: task.id }, @@ -95,16 +94,16 @@ const dequeueTask = async () => { if (!tasks.length) { tasks = await prisma.publishTaskQueue.findMany({ where: { status: PublishTaskQueueStatus.PENDING }, take: 5 }); } - if (!process.env.MUTE_PUBLISH_WORKER) logger.info({ tasks }, 'TASKS'); + if (!process.env.MUTE_PUBLISH_WORKER) logger.trace({ tasks }, 'TASKS'); for (const task of tasks) { const taskLock = await lockService.aquireLock(task.transactionId); - logger.info({ taskLock, task }, 'ATTEMPT TO ACQUIRE LOCK'); + logger.trace({ taskLock, task }, 'ATTEMPT TO ACQUIRE LOCK'); if (taskLock) { nextTask = task; break; } } - if (!process.env.MUTE_PUBLISH_WORKER) logger.info({ nextTask }, 'DEQUEUE TASK'); + if (!process.env.MUTE_PUBLISH_WORKER) logger.trace({ nextTask }, 'DEQUEUE TASK'); return nextTask; }; @@ -116,7 +115,7 @@ export async function runWorkerUntilStopped() { while (true) { try { const outcome = await processPublishQueue(); - if (!process.env.MUTE_PUBLISH_WORKER) logger.info({ outcome }, 'Processed Queue'); + if (!process.env.MUTE_PUBLISH_WORKER) logger.trace({ outcome }, 'Processed Queue'); switch (outcome) { case ProcessOutcome.EmptyQueue: await delay(10000); diff --git a/desci-server/test/integration/Attestation.test.ts b/desci-server/test/integration/Attestation.test.ts index 9a908ff74..45a484d80 100644 --- a/desci-server/test/integration/Attestation.test.ts +++ b/desci-server/test/integration/Attestation.test.ts @@ -337,7 +337,7 @@ describe('Attestations Service', async () => { expect(res.status).to.equal(200); // verify only one claim exists on the old version of the node - const attestations = await attestationService.getAllNodeAttestations('1'); + const attestations = await attestationService.getAllNodeAttestations(node.uuid); expect(attestations.length).to.equal(2); }); }); @@ -1508,7 +1508,7 @@ describe('Attestations Service', async () => { it('should show DPID 1 node attestations(API)', async () => { const JwtToken = jwt.sign({ email: users[0].email }, process.env.JWT_SECRET!, { expiresIn: '1y' }); const authHeaderVal = `Bearer ${JwtToken}`; - const res = await request(app).get(`/v1/attestations/${1}`).set('authorization', authHeaderVal); + const res = await request(app).get(`/v1/attestations/${node.uuid}`).set('authorization', authHeaderVal); const attestations: NodeAttestationFragment[] = res.body.data; console.log(attestations); expect(attestations.length).to.be.equal(3); @@ -1518,7 +1518,7 @@ describe('Attestations Service', async () => { it('should show DPID 2 node attestations(API)', async () => { const JwtToken = jwt.sign({ email: users[0].email }, process.env.JWT_SECRET!, { expiresIn: '1y' }); const authHeaderVal = `Bearer ${JwtToken}`; - const res = await request(app).get(`/v1/attestations/${2}`).set('authorization', authHeaderVal); + const res = await request(app).get(`/v1/attestations/${node2.uuid}`).set('authorization', authHeaderVal); const attestations: NodeAttestationFragment[] = res.body.data; expect(attestations.length).to.be.equal(4); }); @@ -2029,7 +2029,7 @@ describe('Attestations Service', async () => { }); expect(res.status).to.equal(200); - const claims = await attestationService.getAllNodeAttestations('1'); + const claims = await attestationService.getAllNodeAttestations(node.uuid); expect(claims.length).to.equal(1); }); @@ -2077,10 +2077,10 @@ describe('Attestations Service', async () => { }); expect(res.status).to.equal(200); - const attestations = await attestationService.getAllNodeAttestations('1'); + const attestations = await attestationService.getAllNodeAttestations(node.uuid); expect(attestations.length).to.equal(2); - res = await request(app).get(`/v1/attestations/${1}`).set('authorization', authHeaderVal); + res = await request(app).get(`/v1/attestations/${node.uuid}`).set('authorization', authHeaderVal); const claims = res.body.data as NodeClaim[]; const revoked = claims.find((c) => c.id === claim.id); expect(revoked?.revoked).to.be.false; @@ -2179,49 +2179,103 @@ describe('Attestations Service', async () => { expect(verifications.some((v) => v.userId === members[0].userId)).to.equal(true); expect(verifications.some((v) => v.userId === members[1].userId)).to.equal(true); }); + }); - it.skip('should prevent double verification of Node Attestation(Claim)', async () => { - try { - await attestationService.verifyClaim(openCodeClaim.id, users[1].id); - } catch (err) { - expect(err).to.be.instanceOf(DuplicateVerificationError); - } - }); + describe('Protected Attestation Review', async () => { + let openCodeClaim: NodeAttestation; + let openDataClaim: NodeAttestation; + let node: Node; + const nodeVersion = 0; + let attestationVersion: AttestationVersion; + let author: User; + let members: (CommunityMember & { + user: User; + })[]; + let UserJwtToken: string, + UserAuthHeaderVal: string, + MemberJwtToken1: string, + MemberJwtToken2: string, + memberAuthHeaderVal1: string, + memberAuthHeaderVal2: string; - it.skip('should restrict author from verifying their claim', async () => { - try { - assert(author.id === node.ownerId); - await attestationService.verifyClaim(openCodeClaim.id, author.id); - } catch (err) { - expect(err).to.be.instanceOf(VerificationError); - } - }); + before(async () => { + node = nodes[0]; + author = users[0]; + assert(node.uuid); + const versions = await attestationService.getAttestationVersions(protectedOpenCode.id); + attestationVersion = versions[versions.length - 1]; + openCodeClaim = await attestationService.claimAttestation({ + attestationId: protectedOpenCode.id, + attestationVersion: attestationVersion.id, + nodeDpid: '1', + nodeUuid: node.uuid, + nodeVersion, + claimerId: author.id, + }); - it.skip('should remove verification', async () => { - const removedVerification = await attestationService.removeVerification(verification.id, users[1].id); - expect(removedVerification).to.not.be.null; - expect(removedVerification).to.not.be.undefined; - expect(removedVerification.id).to.equal(verification.id); + members = await communityService.getAllMembers(desciCommunity.id); + MemberJwtToken1 = jwt.sign({ email: members[0].user.email }, process.env.JWT_SECRET!, { + expiresIn: '1y', + }); + memberAuthHeaderVal1 = `Bearer ${MemberJwtToken1}`; - const voidVerification = await attestationService.getUserClaimVerification(openCodeClaim.id, users[1].id); - expect(voidVerification).to.be.null; + MemberJwtToken2 = jwt.sign({ email: members[1].user.email }, process.env.JWT_SECRET!, { + expiresIn: '1y', + }); + memberAuthHeaderVal2 = `Bearer ${MemberJwtToken2}`; + + UserJwtToken = jwt.sign({ email: users[1].email }, process.env.JWT_SECRET!, { + expiresIn: '1y', + }); + UserAuthHeaderVal = `Bearer ${UserJwtToken}`; }); - it.skip('should allow multiple users verify a node attestation(claim)', async () => { - const user2Verification = await attestationService.verifyClaim(openCodeClaim.id, users[2].id); - expect(user2Verification.nodeAttestationId).to.be.equal(openCodeClaim.id); - expect(user2Verification.userId).to.be.equal(users[2].id); + after(async () => { + await prisma.$queryRaw`TRUNCATE TABLE "NodeAttestation" CASCADE;`; + await prisma.$queryRaw`TRUNCATE TABLE "Annotation" CASCADE;`; + await prisma.$queryRaw`TRUNCATE TABLE "NodeAttestationVerification" CASCADE;`; + // await prisma.$queryRaw`TRUNCATE TABLE "CommunityMember" CASCADE;`; + }); - const user3Verification = await attestationService.verifyClaim(openCodeClaim.id, users[3].id); - expect(user3Verification.nodeAttestationId).to.be.equal(openCodeClaim.id); - expect(user3Verification.userId).to.be.equal(users[3].id); + it('should allow only community members review/comment a claimed attestation', async () => { + let body = { + authorId: members[0].userId, + claimId: openCodeClaim.id, + body: 'review 1', + }; + let res = await request(app) + .post(`/v1/attestations/comment`) + .set('authorization', memberAuthHeaderVal1) + .send(body); + expect(res.statusCode).to.equal(200); - const verifications = await attestationService.getAllClaimVerfications(openCodeClaim.id); - expect(verifications.length).to.be.equal(2); + body = { + authorId: members[1].userId, + claimId: openCodeClaim.id, + body: 'review 2', + }; + res = await request(app).post(`/v1/attestations/comment`).set('authorization', memberAuthHeaderVal2).send(body); + expect(res.statusCode).to.equal(200); - assert(node.uuid); - const nodeVerifications = await attestationService.getAllNodeVerfications(node.uuid); - expect(nodeVerifications.length).to.be.equal(2); + const comments = await attestationService.getAllClaimComments({ nodeAttestationId: openCodeClaim.id }); + expect(comments.length).to.equal(2); + expect(comments.some((v) => v.authorId === members[0].userId && v.body)).to.equal(true); + expect(comments.some((v) => v.authorId === members[1].userId)).to.equal(true); + }); + + it('should prevent non community members from reviewing a protected attestation(claim)', async () => { + const apiResponse = await request(app) + .post(`/v1/attestations/comment`) + .set('authorization', UserAuthHeaderVal) + .send({ + authorId: users[1].id, + claimId: openCodeClaim.id, + body: 'review 1', + }); + expect(apiResponse.statusCode).to.equal(401); + + const comments = await attestationService.getAllClaimComments({ nodeAttestationId: openCodeClaim.id }); + expect(comments.length).to.equal(2); }); }); }); diff --git a/desci-server/tsconfig-test.json b/desci-server/tsconfig-test.json new file mode 100755 index 000000000..5683e0534 --- /dev/null +++ b/desci-server/tsconfig-test.json @@ -0,0 +1,39 @@ +{ + "compilerOptions": { + "module": "nodenext", + /** + * Implied by "module: nodenext": + * "moduleResolution": "nodenext", + * "esModuleInterop": true, + */ + "target": "esnext", + // Recommended by docs, but a lot of errors + // "verbatimModuleSyntax": true, + "lib": [ + "esnext", + "dom" + ], + "noEmit": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "resolveJsonModule": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "skipLibCheck": true, + // dagConcat.cjs requires this + "allowJs": true, + "inlineSourceMap": true, + "paths": { + // Overrides a built-in Response type + "express": [ + "./src/types/express" + ] + }, + "jsx": "react" + }, + "include": [ + "test/**/*.ts" + ], + "compileOnSave": true +} \ No newline at end of file diff --git a/desci-server/yarn.lock b/desci-server/yarn.lock index 60f309f24..c64176e10 100644 --- a/desci-server/yarn.lock +++ b/desci-server/yarn.lock @@ -7,6 +7,11 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@adraffy/ens-normalize@1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" + integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== + "@alloc/quick-lru@^5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" @@ -1349,6 +1354,13 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== +"@babel/runtime@7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.0.tgz#4fc1d642a9fd0299754e8b5de62c631cf5568205" + integrity sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/runtime@^7.13.10", "@babel/runtime@^7.23.5": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.1.tgz#431f9a794d173b53720e69a6464abc6f0e2a5c57" @@ -1356,6 +1368,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" + integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.21.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.0.tgz#584c450063ffda59697021430cb47101b085951e" @@ -1427,6 +1446,453 @@ resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz#4b3f07af047f984c082de34b116e765cb9af975f" integrity sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w== +"@ceramicnetwork/anchor-listener@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/anchor-listener/-/anchor-listener-4.13.0.tgz#241d9b6898d7e83901e97a4418015bc0cf4d3d32" + integrity sha512-HGqnMlHIy4F0HheEGoajUmVAkEmLmadFq60QtegYlul03b12X2F56QPolmdnkfvilZDIgXR5z/OGloZKKso9UA== + dependencies: + "@ceramicnetwork/anchor-utils" "^4.13.0" + "@ethersproject/providers" "^5.5.1" + rxjs "^7.8.1" + +"@ceramicnetwork/anchor-utils@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/anchor-utils/-/anchor-utils-4.13.0.tgz#8b25cd6b89c32777dedb614479253a07ac397f45" + integrity sha512-qkmh+hk9uuNUO2TtRPbXZjBsD+Jsazl1olQGP/yAsBmjriE6szzJhf5hnBclRcJ78ssOFcn8k3NPuzBycJFFGg== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ethersproject/abi" "^5.7.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/blockchain-utils-linking@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/blockchain-utils-linking/-/blockchain-utils-linking-5.3.0.tgz#fdab99a1aa70235e946bdebbc7b05b69041f896d" + integrity sha512-UDxnnlmWHobCRR3ni7SBf9HdNojDxExOPenLx0tjXBcYeJk5LN/APU1OkVOCd0YePRhr1v9b7kxCF0NwtEIUAA== + dependencies: + "@ceramicnetwork/streamid" "^5.3.0" + "@didtools/cacao" "^3.0.0" + "@stablelib/random" "^1.0.1" + "@stablelib/sha256" "^1.0.1" + caip "~1.1.0" + near-api-js "^0.44.2" + uint8arrays "^5.0.1" + +"@ceramicnetwork/blockchain-utils-validation@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/blockchain-utils-validation/-/blockchain-utils-validation-5.13.0.tgz#cb27609503d63f4e684b44434eea5ae56131cffd" + integrity sha512-g96+mR7s+rZ1lFSLHsdYx3cAXybBqExG7e7K7kKYQ/EJkKFNDAb0ABGCA1+3VdYvRwJJHq5XYyPiR1e1f6gPfA== + dependencies: + "@ceramicnetwork/blockchain-utils-linking" "^5.3.0" + "@ceramicnetwork/common" "^5.13.0" + "@ethersproject/contracts" "^5.5.0" + "@ethersproject/providers" "^5.5.1" + "@ethersproject/wallet" "^5.5.0" + "@noble/curves" "^1.1.0" + "@polkadot/util-crypto" "^7.0.2" + "@smontero/eosio-signing-tools" "^0.0.6" + "@taquito/utils" "^11.2.0" + "@tendermint/sig" "^0.6.0" + "@zondax/filecoin-signing-tools" "^0.18.2" + caip "~1.1.0" + tweetnacl "^1.0.3" + uint8arrays "^5.0.1" + +"@ceramicnetwork/codecs@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/codecs/-/codecs-2.4.1.tgz#345ea2857915191d563abe7b9b165075b289f644" + integrity sha512-QhdUHp7PJm+qL05f6ovlUe7K85urBt3V7JKQrmq33jCYt4YlVT2bTyUdsrgcyA+IJZnXP1KEWuSdcpE1V3Qe/A== + dependencies: + "@ceramicnetwork/streamid" "^3.4.1" + cartonne "^3.0.1" + codeco "^1.1.0" + dag-jose "^4.0.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/codecs@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/codecs/-/codecs-4.13.0.tgz#206597f42a5700f694a6eb6437c37acea28f3c5f" + integrity sha512-/p7+PdP4c+qBZXuHy1nd7cPNvlx/WHaCZgCdsLoB/ff+jbt0z0wIf34snEXvJddTAxfi5fAYYoMaqr7IhG0l7A== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + cartonne "^3.0.1" + codeco "^1.1.0" + dag-jose "^4.0.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/common@^3.4.1": + version "3.4.1" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/common/-/common-3.4.1.tgz#47f24157742fbfb9a9137a585818fa5dc29e74ca" + integrity sha512-SVtPG6tkaDF77iM2mweXV+JSgZa3tKvuku0TIrA+pZswa1EHtnRHssSilaj4q91JNaTy2Gsk86oK6MuQp9+LKg== + dependencies: + "@ceramicnetwork/codecs" "^2.4.1" + "@ceramicnetwork/streamid" "^3.4.1" + "@didtools/cacao" "^3.0.0" + "@didtools/pkh-ethereum" "^0.2.0" + "@didtools/pkh-solana" "^0.2.0" + "@didtools/pkh-stacks" "^0.2.0" + "@didtools/pkh-tezos" "^0.3.0" + "@stablelib/random" "^1.0.1" + caip "~1.1.0" + flat "^5.0.2" + it-first "^3.0.4" + jet-logger "1.2.2" + lodash.clonedeep "^4.5.0" + logfmt "^1.3.2" + multiformats "^13.0.0" + rxjs "^7.8.1" + uint8arrays "^5.0.1" + +"@ceramicnetwork/common@^5.1.0", "@ceramicnetwork/common@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/common/-/common-5.13.0.tgz#0157449b8e8cf96148f81389bd79f1a78977b362" + integrity sha512-gYLXoABZqdhkci8JgeASkmWuGJSSGrLrscqa1RADb2VM1uq6Mv08oojCEgHN5MpxB8Hyb3/zbf1JHIttY4mpwQ== + dependencies: + "@ceramicnetwork/model-metrics" "^1.2.5" + "@ceramicnetwork/streamid" "^5.3.0" + "@didtools/cacao" "^3.0.0" + "@didtools/key-webauthn" "^2.0.2" + "@didtools/pkh-ethereum" "^0.2.0" + "@didtools/pkh-solana" "^0.2.0" + "@didtools/pkh-stacks" "^0.2.0" + "@didtools/pkh-tezos" "^0.3.0" + "@ipld/dag-cbor" "^9.1.0" + "@stablelib/random" "^1.0.1" + caip "~1.1.0" + flat "^5.0.2" + it-first "^3.0.4" + jet-logger "1.2.2" + lodash.clonedeep "^4.5.0" + logfmt "^1.3.2" + multiformats "^13.0.0" + rxjs "^7.8.1" + uint8arrays "^5.0.1" + +"@ceramicnetwork/core@^5.2.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/core/-/core-5.14.0.tgz#6ff0ac6daa7a08ba3b80074683488894c39ae34d" + integrity sha512-ybKYgfMRhDkoraiskDee8Gp5holzdg9dy06cvczSAhEkTQFUZqrrO/hozaSyumoHO5SP7Xzyx2svYVGvOxyCXg== + dependencies: + "@ceramicnetwork/anchor-listener" "^4.13.0" + "@ceramicnetwork/anchor-utils" "^4.13.0" + "@ceramicnetwork/codecs" "^4.13.0" + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/indexing" "^4.14.0" + "@ceramicnetwork/ipfs-topology" "^5.13.0" + "@ceramicnetwork/job-queue" "^4.14.0" + "@ceramicnetwork/model-metrics" "^1.2.5" + "@ceramicnetwork/observability" "^1.4.4" + "@ceramicnetwork/pinning-aggregation" "^5.13.0" + "@ceramicnetwork/pinning-ipfs-backend" "^5.13.0" + "@ceramicnetwork/stream-caip10-link" "^5.13.0" + "@ceramicnetwork/stream-caip10-link-handler" "^5.14.0" + "@ceramicnetwork/stream-handler-common" "^4.13.0" + "@ceramicnetwork/stream-model" "^4.13.0" + "@ceramicnetwork/stream-model-handler" "^4.14.0" + "@ceramicnetwork/stream-model-instance" "^4.14.0" + "@ceramicnetwork/stream-model-instance-handler" "^4.14.0" + "@ceramicnetwork/stream-tile" "^5.13.0" + "@ceramicnetwork/stream-tile-handler" "^5.14.0" + "@ceramicnetwork/streamid" "^5.3.0" + "@ceramicnetwork/wasm-bloom-filter" "^0.1.0" + "@datastructures-js/priority-queue" "^6.1.0" + "@ethersproject/providers" "^5.5.1" + "@ipld/dag-cbor" "^7.0.0" + "@scarf/scarf" "^1.1.1" + "@stablelib/random" "^1.0.1" + "@stablelib/sha256" "^1.0.1" + "@stablelib/uuid" "^1.0.1" + ajv "^8.8.2" + ajv-formats "^2.1.1" + await-semaphore "^0.1.3" + cartonne "^3.0.1" + codeco "^1.1.0" + dag-jose "^4.0.0" + dids "^5.0.0" + it-all "^3.0.1" + it-batch "^3.0.1" + it-first "^3.0.4" + knex "^2.5.1" + least-recent "^1.0.3" + level "^8.0.1" + lodash.clonedeep "^4.5.0" + mapmoize "^1.2.1" + multiformats "^13.0.0" + p-queue "^8.0.1" + pg "^8.11.3" + rxjs "^7.8.1" + sqlite3 "^5.0.8" + uint8arrays "^5.0.1" + +"@ceramicnetwork/http-client@^5.2.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/http-client/-/http-client-5.14.0.tgz#2515b74909f79b80a78b4d646c279bf2de0c675a" + integrity sha512-/wcqy7ikaxaeXDRxx+CSgIJZtTisp0WD0lRxIIDrmqblmwsmame1sK0EFQ1Ha6YzxAQ13ZMgUfWbzv8lbFG7jw== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/stream-caip10-link" "^5.13.0" + "@ceramicnetwork/stream-model" "^4.13.0" + "@ceramicnetwork/stream-model-instance" "^4.14.0" + "@ceramicnetwork/stream-tile" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + "@scarf/scarf" "^1.1.1" + query-string "^7.1.0" + rxjs "^7.8.1" + +"@ceramicnetwork/indexing@^4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/indexing/-/indexing-4.14.0.tgz#2bffc342106c9fe9d4e97b4b3ad354140a86a386" + integrity sha512-9J9WKcJdGDmvWdeniZhRcoVpZoGwVmYxOKNuHEQTySnDbiJp0mHZHY8BVNbasf4Ih/PrcJ6/O0cz2tBzKKGeVg== + dependencies: + "@ceramicnetwork/anchor-listener" "^4.13.0" + "@ceramicnetwork/anchor-utils" "^4.13.0" + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/job-queue" "^4.14.0" + "@ceramicnetwork/stream-model" "^4.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + "@ethersproject/providers" "^5.5.1" + knex "^2.5.1" + lodash.clonedeep "^4.5.0" + multiformats "^13.0.0" + p-queue "^8.0.1" + pg-boss "^8.2.0" + rxjs "^7.8.1" + uint8arrays "^5.0.1" + +"@ceramicnetwork/ipfs-topology@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/ipfs-topology/-/ipfs-topology-5.13.0.tgz#c1c958e0074cd5b1a6829787e78c3b6f9383a8ef" + integrity sha512-uG3wMoo1PssGw7+++NDjfU9+cCb7MZpyPZHanMMTBgXzae1fasRHBOq7FSlBfo8d2pbjlzrshfpqxsP4G2YtUQ== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + +"@ceramicnetwork/job-queue@^4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/job-queue/-/job-queue-4.14.0.tgz#b88131cb41a40ab713147812f390e9662ce98f1e" + integrity sha512-yxZbs11npPOIlwomO7W6bOByT3LWktUpHkhMxnEcrPt4ITmN59D+Lptq1xXffwog0ciTHEUhZiePQmbgxubKvA== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + pg "^8.11.3" + pg-boss "^8.2.0" + rxjs "^7.8.1" + +"@ceramicnetwork/model-metrics@^1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/model-metrics/-/model-metrics-1.2.5.tgz#5a8b4f12918671d7d532bf768f06ef1d8ed3cf67" + integrity sha512-L2T0K57CWCyHzTkGmBdM3BNX35YRPX9KqRVkPSjBv2q3Cwwm9KkrBRYHLN6W+37eWVBmKOq57lSTiQsnuSskAw== + dependencies: + "@ceramicnetwork/stream-model-instance" "^2.3.0" + "@ceramicnetwork/streamid" "^3.3.0" + dids "^5.0.2" + fs "0.0.1-security" + key-did-provider-ed25519 "^3.0.2" + key-did-resolver "^4.0.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/observability@^1.4.4": + version "1.5.6" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/observability/-/observability-1.5.6.tgz#b47cdb493090ff399e446224f99f9d548ba49ffd" + integrity sha512-cminxgAru5VvoBPEMURTaWzdEQqVMiV1e89iaAqPyjr+hAjALWStm90btNPt/PlHlpdkr/jmi4AFi1mFtdT9mQ== + dependencies: + "@opentelemetry/api" "^1.8.0" + "@opentelemetry/exporter-metrics-otlp-http" "^0.50.0" + "@opentelemetry/exporter-prometheus" "^0.50.0" + "@opentelemetry/exporter-trace-otlp-http" "^0.50.0" + "@opentelemetry/resources" "^1.23.0" + "@opentelemetry/sdk-metrics" "^1.23.0" + "@opentelemetry/sdk-trace-base" "^1.23.0" + "@opentelemetry/semantic-conventions" "^1.23.0" + "@types/node" "^20.11.16" + +"@ceramicnetwork/pinning-aggregation@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/pinning-aggregation/-/pinning-aggregation-5.13.0.tgz#167b9b5af6361aad81e28b1278580b92b593ece8" + integrity sha512-vbFgtH2K8l5PhGO0FVNDK3vFmtwk8KB/TaPkPPAfIiB/huBncx0x5yVv65zRNlhNpLVIBQDGpdN4ICjHokcjsg== + dependencies: + "@stablelib/sha256" "^1.0.1" + uint8arrays "^5.0.1" + +"@ceramicnetwork/pinning-ipfs-backend@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/pinning-ipfs-backend/-/pinning-ipfs-backend-5.13.0.tgz#856116f5d8c37a489cfc7d6dd018e7a2e02283c6" + integrity sha512-NReyMGFO7cJ/+J/jmJZS7QJ9RG0TShbp7vroJvQpHtY0ggWdfhOIrmzgLgbq63ZFF+vbg6SGgTvWKAAWdgsAMw== + dependencies: + "@stablelib/sha256" "^1.0.1" + ipfs-http-client "^60.0.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-caip10-link-handler@^5.14.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-caip10-link-handler/-/stream-caip10-link-handler-5.14.0.tgz#935128872b52109aea39bba4e70c80e8adaebf36" + integrity sha512-NQHfM65FyJeAL5UBcwJ3EIOy/RFNZPdwLAhfKmZlQGwWmCXBRyJc6vGxxbs/fIEoKRw8AbjwLhCHt6cNSn1qgQ== + dependencies: + "@ceramicnetwork/blockchain-utils-validation" "^5.13.0" + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/stream-caip10-link" "^5.13.0" + "@ceramicnetwork/stream-handler-common" "^4.13.0" + +"@ceramicnetwork/stream-caip10-link@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-caip10-link/-/stream-caip10-link-5.13.0.tgz#e2f5ee8d592c6921e64b813e462155d1996c98a4" + integrity sha512-RJpsO/AERl/tAezICArYW+Wn67aqHzl4lC19D7r4lfI8Y+KOp1o4h7VkCgTFsXr5ulDQPbkE2WQqIkry8kXoUg== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + caip "~1.1.0" + did-resolver "^4.0.1" + lodash.clonedeep "^4.5.0" + +"@ceramicnetwork/stream-handler-common@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-handler-common/-/stream-handler-common-4.13.0.tgz#1b02d2b691bac0c38c9e5805b3becda64de2446b" + integrity sha512-YEl/TKlcNUw0ll//Ry3n7s7lbrKdVc9e1GTdxY+cPngb4vPt/pqAhlNfRR4WtQsruZ1GjRPQ239/1arTKdINrg== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/observability" "^1.4.4" + "@ceramicnetwork/streamid" "^5.3.0" + lodash.clonedeep "^4.5.0" + +"@ceramicnetwork/stream-model-handler@^4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-handler/-/stream-model-handler-4.14.0.tgz#7408575014122de72d7576a25f04c9fec6832346" + integrity sha512-Np6y99Wtp/vXm4XdmhRQHFVDFOmgigrz2YeoqB5C8JZDIhNv+aQsbDOqEn2dxH4oTt5nhp4PmyPAjxaqxpHI0A== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/stream-handler-common" "^4.13.0" + "@ceramicnetwork/stream-model" "^4.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + ajv "^8.8.2" + ajv-formats "^2.1.1" + fast-json-patch "^3.1.0" + json-ptr "^3.1.1" + lodash.clonedeep "^4.5.0" + lodash.ismatch "^4.4.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-model-instance-handler@^4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-instance-handler/-/stream-model-instance-handler-4.14.0.tgz#1e7be9aabb25cc3f9824f1d4a5144cd9f434b912" + integrity sha512-qpGkC3iTDSK4BYwcVlEyG7pRJKXwIm4zFGGBlUqcxXUE84QfkTOsHs0WdKeEKhCLs6F0Arn2REnPmk5JuQHOvg== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/stream-handler-common" "^4.13.0" + "@ceramicnetwork/stream-model" "^4.13.0" + "@ceramicnetwork/stream-model-instance" "^4.14.0" + "@ceramicnetwork/streamid" "^5.3.0" + ajv "^8.8.2" + ajv-formats "^2.1.1" + fast-json-patch "^3.1.0" + lodash.clonedeep "^4.5.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-model-instance@^2.3.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-instance/-/stream-model-instance-2.4.1.tgz#d680d926cb90719f30c0e8c2cb29c336cd77a900" + integrity sha512-vp+oY27BFM64pXN2l4riwK3/3rN1DCEZe/iBrWWJ79SC99S9jFsSnx2TB0RLkBF+n87IsWi+t1WA+FR1KNIe/Q== + dependencies: + "@ceramicnetwork/common" "^3.4.1" + "@ceramicnetwork/streamid" "^3.4.1" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + fast-json-patch "^3.1.0" + object-sizeof "^2.6.1" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-model-instance@^4.14.0", "@ceramicnetwork/stream-model-instance@^4.2.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model-instance/-/stream-model-instance-4.14.0.tgz#d6bb56744a9f696b0a8eaf2b37388567b8970ba8" + integrity sha512-PxSZcyCW0IH8vqKD+eJNpQOHM+y2BzoV1qWuq3hg6ZIpQNWeM264NuVB42KxvAkzplG3se6EVu1iAEuDAVU83Q== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + fast-json-patch "^3.1.0" + object-sizeof "^2.6.1" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-model@^4.1.0", "@ceramicnetwork/stream-model@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-model/-/stream-model-4.13.0.tgz#b846a17a7c5b21b40d079c32734bd76f0a30559a" + integrity sha512-fUf9YFTn5RxlWP+n80AgrLkAOmolWP5pjXxDbefg2ev8FJlANWU4J66QIdQPiWNhk8QNCMFN3O7Z/bvkWJyFgg== + dependencies: + "@ceramicnetwork/codecs" "^4.13.0" + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + ajv "^8.8.2" + ajv-formats "^2.1.1" + codeco "^1.1.0" + fast-json-patch "^3.1.0" + json-schema-typed "^8.0.1" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-tile-handler@^5.14.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-tile-handler/-/stream-tile-handler-5.14.0.tgz#9c6710a5d7332576bd00bec9307876aebe014296" + integrity sha512-DxEOggVij1qxDBdkhwoHA1ZjO7ewj31zzhXIe3sDqUhSX5L9iQotE28pyboPiHtoDyk60bapwUAgS1t4aShqlA== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/stream-handler-common" "^4.13.0" + "@ceramicnetwork/stream-tile" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + ajv "^8.8.2" + ajv-formats "^2.1.1" + fast-json-patch "^3.1.0" + least-recent "^1.0.3" + lodash.clonedeep "^4.5.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/stream-tile@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/stream-tile/-/stream-tile-5.13.0.tgz#a06a09b2375712548fe3ae225915d7c140b3a137" + integrity sha512-9qKcZtKIKGu/8Ef1dn89xA7PIabT8hh6Ft+Fdb9k0vZckYlAnDyhzxQCfewcc+AhK4Z3m7qxfQl56dgN+ieWgQ== + dependencies: + "@ceramicnetwork/common" "^5.13.0" + "@ceramicnetwork/streamid" "^5.3.0" + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/random" "^1.0.1" + dids "^5.0.0" + fast-json-patch "^3.1.0" + lodash.clonedeep "^4.5.0" + uint8arrays "^5.0.1" + +"@ceramicnetwork/streamid@^3.3.0", "@ceramicnetwork/streamid@^3.4.1": + version "3.4.1" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/streamid/-/streamid-3.4.1.tgz#41e44cc9e3ac0603dfd6666f1dae07ac3cf2d837" + integrity sha512-m6uZjcdMdwzyO6TIVTJF4IJYjuceflmYDrlRxDcXrZySBNNKnL40tSHbzpcTfOy5YcIsTqJFxqUZQrFrC0mlDA== + dependencies: + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/sha256" "^1.0.1" + cborg "^1.10.2" + mapmoize "^1.2.1" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + varint "^6.0.0" + +"@ceramicnetwork/streamid@^5.0.0", "@ceramicnetwork/streamid@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/streamid/-/streamid-5.3.0.tgz#576c9349713004cd474ad08ff30714a3314f25b9" + integrity sha512-U/4k2iAjWIW3Ra3H8K0qJJjy9i9Zgw88gz9ecbIBDOF8Ud59ahEJpQYgdAnWc7kkSPpiZojZDTneZCgUYGQuRg== + dependencies: + "@ipld/dag-cbor" "^7.0.0" + "@stablelib/sha256" "^1.0.1" + cborg "^4.0.8" + mapmoize "^1.2.1" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + varint "^6.0.0" + +"@ceramicnetwork/wasm-bloom-filter@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@ceramicnetwork/wasm-bloom-filter/-/wasm-bloom-filter-0.1.0.tgz#5d9705ff07a4b1a6a97115a68b1a57f117c804d0" + integrity sha512-vCKJsphSqVFpQISEBK/B59s278xmyab7BYX4yPZGI9aP92jjtGrrkQGaCQF+JOd/0ZSNRbYA3uOUH4BcKaoTCg== + "@chainsafe/is-ip@^2.0.1": version "2.0.2" resolved "https://registry.yarnpkg.com/@chainsafe/is-ip/-/is-ip-2.0.2.tgz#7311e7403f11d8c5cfa48111f56fcecaac37c9f6" @@ -1628,6 +2094,77 @@ "@types/conventional-commits-parser" "^5.0.0" chalk "^5.3.0" +"@composedb/client@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@composedb/client/-/client-0.7.1.tgz#382546e7a4a636debe6d3359d832724b9fe76087" + integrity sha512-LUMnaiNUbBLqqifxAybAigG+n7F+u8xhLOPsPR0F0KHPtJkJ8sXm0lpcHQPx6B4Tm5Tlb6F7Tu27WvGp+7wVCA== + dependencies: + "@ceramicnetwork/http-client" "^5.2.0" + "@ceramicnetwork/stream-model" "^4.1.0" + "@ceramicnetwork/stream-model-instance" "^4.2.0" + "@composedb/constants" "^0.7.1" + "@composedb/graphql-scalars" "^0.7.1" + "@composedb/runtime" "^0.7.1" + "@graphql-tools/batch-execute" "^9.0.4" + "@graphql-tools/stitch" "^9.0.5" + "@graphql-tools/utils" "^10.1.0" + dataloader "^2.2.2" + graphql "^16.8.1" + graphql-relay "^0.10.0" + +"@composedb/constants@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@composedb/constants/-/constants-0.7.1.tgz#4477f093ebb7ab3b9c17d79952416310b2a32602" + integrity sha512-fJrhOlM0kr9AVBR5iGwPXxCMbyzs06OCAcsqla1X4qWhMDHGvX/yMKV65FJIY38qwkuSdOUvhfh7vfsSmHIRnQ== + +"@composedb/graphql-scalars@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@composedb/graphql-scalars/-/graphql-scalars-0.7.1.tgz#01cdce359d4d5715df9d4f642f9ad19e0ddb1cbe" + integrity sha512-TX6f/1E3RZzWjDAKn3eRZ9z7zAPaE7BKWpOiomw9T3K787WPGmOIypnOOakdGE9dOf6ViYQ8eq4R6pzv0bbBpA== + dependencies: + "@ceramicnetwork/streamid" "^5.0.0" + "@composedb/types" "^0.7.1" + caip "^1.1.0" + graphql "^16.8.1" + graphql-scalars "^1.22.5" + multiformats "^13.1.0" + +"@composedb/loader@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@composedb/loader/-/loader-0.7.1.tgz#3e1ad9626f765683d80ed826a5d4e3ead558ce72" + integrity sha512-qmyWrNazJF/0Uc4rZqrttvbOnb0smjqTSF5i5aekThIWJtvBQ+a/GkoNjQvVQH3bWFfeRZS9TgNpD4SUpdFJpw== + dependencies: + "@ceramicnetwork/stream-model-instance" "^4.2.0" + "@ceramicnetwork/streamid" "^5.0.0" + dataloader "^2.2.2" + +"@composedb/runtime@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@composedb/runtime/-/runtime-0.7.1.tgz#b6f422cd1ddc81c0fe42d03195b7e970e7bfbeaa" + integrity sha512-ijv1/jNWYAwhsnJYJbyGT8MrQgZoIhDGDoD6ggF5VbcC8bYZcK88yNwASxT3s9NxQTelKznidvk9V14MxN8RUA== + dependencies: + "@ceramicnetwork/http-client" "^5.2.0" + "@ceramicnetwork/stream-model" "^4.1.0" + "@ceramicnetwork/stream-model-instance" "^4.2.0" + "@ceramicnetwork/streamid" "^5.0.0" + "@composedb/graphql-scalars" "^0.7.1" + "@composedb/loader" "^0.7.1" + graphql "^16.8.1" + graphql-relay "^0.10.0" + +"@composedb/types@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@composedb/types/-/types-0.7.1.tgz#4aba2a73d0a0285f3923d0f115043a78b42560b7" + integrity sha512-GtS3R06x1eU1NbBn5ZqewHk1VpvYLk9dwKV8YEzEXxnZvJa2WA8F5YD/TRItIfHgJjLNZ5O7obAK1fgDoCJxnQ== + dependencies: + "@ceramicnetwork/common" "^5.1.0" + "@ceramicnetwork/core" "^5.2.0" + "@ceramicnetwork/http-client" "^5.2.0" + "@ceramicnetwork/stream-model" "^4.1.0" + "@ceramicnetwork/stream-model-instance" "^4.2.0" + dids "^5.0.2" + json-schema-typed "^8.0.1" + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -1635,9 +2172,190 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@desci-labs/desci-models@link:./desci-models": - version "0.0.0" - uid "" +"@datastructures-js/heap@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@datastructures-js/heap/-/heap-4.3.3.tgz#824c10f092ab03180702f0dea8ce96227ffe50a8" + integrity sha512-UcUu/DLh/aM4W3C8zZfwxxm6/6FIZUlm3mcAXuNOCa6Aj4iizNvNXQyb8DjZQH2jKSQbMRyNlngP6TPimuGjpQ== + +"@datastructures-js/priority-queue@^6.1.0": + version "6.3.1" + resolved "https://registry.yarnpkg.com/@datastructures-js/priority-queue/-/priority-queue-6.3.1.tgz#42971d509b457d8fbc42918f192d0ce7c6b2f5f3" + integrity sha512-eoxkWql/j0VJ0UFMFTpnyJz4KbEEVQ6aZ/JuJUgenu0Im4tYKylAycNGsYCHGXiVNEd7OKGVwfx1Ac3oYkuu7A== + dependencies: + "@datastructures-js/heap" "^4.3.3" + +"@desci-labs/desci-codex-composedb@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@desci-labs/desci-codex-composedb/-/desci-codex-composedb-2.0.2.tgz#3a3724fe98d2efc58e11947de1e5571696a4d546" + integrity sha512-AEnWKXFqZFNhdCqyVTHwbdPcvb9+R3sZ6A0X6jAN7iS+J/0MHmv2muTEe1dbDcSZ6SteBTFc8p1wXqangwuegQ== + dependencies: + "@composedb/types" "^0.7.1" + +"@desci-labs/desci-codex-lib@^1.1.7": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@desci-labs/desci-codex-lib/-/desci-codex-lib-1.1.7.tgz#d483d63f9a7760ab842022ce678e924c1c7fb8c3" + integrity sha512-Z06qpACxorVPn4tp35XHro2KTqvp0rVoaMkxwGssVM+4DqeuV3jEudyrSIZTc0A2BJ2SuqMYC9WtBdbq6/Py1w== + dependencies: + "@composedb/client" "^0.7.1" + "@desci-labs/desci-codex-composedb" "^2.0.1" + dids "^5.0.2" + gql-query-builder "^3.8.0" + graphql "^16.8.0" + key-did-provider-ed25519 "^4.0.2" + key-did-resolver "^4.0.0" + uint8arrays "^4.0.6" + +"@desci-labs/desci-contracts@^0.2.6": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@desci-labs/desci-contracts/-/desci-contracts-0.2.6.tgz#71e0dd8b953f8729fce899cdf6cdf4898acbcb9b" + integrity sha512-1PTKgGtHIrWZ/UMIrOs/tVrAdGUQC+QW+OLiBlEi2sV2UXsazZTjMbiGxjErP+VBPoMkFbfsWiLMvgjs6Pw/5A== + +"@desci-labs/desci-models@0.2.9": + version "0.2.9" + resolved "https://registry.yarnpkg.com/@desci-labs/desci-models/-/desci-models-0.2.9.tgz#a4a88958f23bebfdc544db6dff2458566fbe7830" + integrity sha512-6yK8CSiT9P1lZfPBd16w2N+th0/hR1whHPiAw1Bec+WMsGnRixGWxiU45j1z7EtmoZR4h8mbE2BAq+CyH754fQ== + dependencies: + jsonld "^8.1.1" + schema-dts "^1.1.2" + +"@didtools/cacao@3.0.1", "@didtools/cacao@^3.0.0", "@didtools/cacao@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@didtools/cacao/-/cacao-3.0.1.tgz#4a705b583bde6d3a85bec33622d03ed1acfcb2b9" + integrity sha512-vV1JirxqVsBf2dqdvoS/msNN8fabvMfseZB0kf1FG8TbosrHd81+hgDOlQMZit7zJbTk5g3CGkZg3b7iYKkynw== + dependencies: + "@didtools/codecs" "^3.0.0" + "@didtools/siwx" "2.0.0" + "@ipld/dag-cbor" "^9.0.7" + caip "^1.1.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + viem "^1.21.4" + +"@didtools/cacao@^2.0.0", "@didtools/cacao@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@didtools/cacao/-/cacao-2.1.0.tgz#5ce7bbae0abf6cce0631b8e5df657052065b9d40" + integrity sha512-35gopj+mOmAlA3nHoHiYMvNMXJtbJDJnVpIlCf/Wf/+/x+uG9aIQefXfF35D6JuaTCZ0apabjpT2umL5h3EXcw== + dependencies: + "@didtools/codecs" "^1.0.1" + "@didtools/siwx" "1.0.0" + "@ipld/dag-cbor" "^9.0.1" + caip "^1.1.0" + multiformats "^11.0.2" + uint8arrays "^4.0.3" + +"@didtools/codecs@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@didtools/codecs/-/codecs-1.0.1.tgz#2f0372e618ffb563c1b56279f1f5e79f59a2d48b" + integrity sha512-6PYXOCX7mwVWUcudKQ3eW5LtI8v5esozazbf2q2F01PE+LoeEvTytvgU9FEspj4pATpq3hPx1eenX2uLirDJ8w== + dependencies: + codeco "^1.1.0" + multiformats "^11.0.1" + uint8arrays "^4.0.3" + +"@didtools/codecs@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@didtools/codecs/-/codecs-3.0.0.tgz#860e74e7762f8d1cb630d3ceb87a4e728455e797" + integrity sha512-TemoVySZrs1XflMtOkwVTATtZEs42Mh2yk9SoYvBXES6Mz30PBJCm8v7U/2y1N5lrjb2cAPWs48Ryc7paetSxQ== + dependencies: + codeco "^1.2.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + +"@didtools/key-webauthn@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@didtools/key-webauthn/-/key-webauthn-2.0.2.tgz#37d36d8a6015610a4d3ab9ccec9d86c42ea4a7c5" + integrity sha512-MkOqAiRBcRO64PMVfSFAB0SUIJMk+L8QyymE9dknjmfSKgD/ZKz7cw4pFV6IUNin75/DLrlDSfmCIIjYokivvQ== + dependencies: + "@didtools/cacao" "3.0.1" + "@ipld/dag-cbor" "^9.0.6" + "@noble/curves" "^1.2.0" + caip "^1.1.0" + cborg "^4.0.5" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + varint "^6.0.0" + +"@didtools/pkh-ethereum@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@didtools/pkh-ethereum/-/pkh-ethereum-0.2.1.tgz#8c03a56f34c824fa83db6161362f7fa45dd2b5e9" + integrity sha512-apQefbOqqy8HQMDNVG0ITxHLr9I5iZrjADX+mPB+ie1ue8MO8pOHMifLQ3j0R6RjS2einCd+hEZ4Ib4AKs3Xlw== + dependencies: + "@didtools/cacao" "^2.0.0" + "@ethersproject/wallet" "^5.7.0" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + +"@didtools/pkh-ethereum@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@didtools/pkh-ethereum/-/pkh-ethereum-0.4.1.tgz#b03472bf0196d2ece6a64d5f01aa96c866cdccb7" + integrity sha512-oE5bbyTauJ/WddaWnDK7bWns2E2LG4Ut33ICEcEQdlMoXM0902/vnGm8+6QE/yuLOyAllgf7DnDKvERF5IY6uQ== + dependencies: + "@didtools/cacao" "^2.1.0" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + +"@didtools/pkh-ethereum@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@didtools/pkh-ethereum/-/pkh-ethereum-0.5.0.tgz#fca9008c546141f257508d4448c58609b975276b" + integrity sha512-2S+TS/I2jVTNnkgyslxQvSjCzzLsCabjXD2UWjJnVkAoxeJgPE9GvY1JhTDgvVLfxLPnYwTIP/O1WR9wJcDkFg== + dependencies: + "@didtools/cacao" "^3.0.0" + "@noble/curves" "^1.2.0" + "@noble/hashes" "^1.3.2" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + +"@didtools/pkh-solana@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@didtools/pkh-solana/-/pkh-solana-0.2.0.tgz#b66d7dd642306a9808d275871de408f2e3583e6f" + integrity sha512-wOfa+hbWo1ok8YnR8tq2mZKbcyEv9qrxtTR5jXOuhOqCkz30/qu9e2Wib/byx7Kx5/ik/2z1nd2YPL0vrA+TxQ== + dependencies: + "@didtools/cacao" "^3.0.0" + "@noble/curves" "^1.2.0" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + uint8arrays "^5.0.1" + +"@didtools/pkh-stacks@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@didtools/pkh-stacks/-/pkh-stacks-0.2.0.tgz#6dc7b546ca9ad458574a7270300c0663aac4727a" + integrity sha512-lXe8ZURCYCDQXrjaM7A4p1RCKrVsQ+NbO7bI70pRfjven82BPLDiqEJbhRGnWKbjQD1CQe9MJXLy3AuStKc7qw== + dependencies: + "@didtools/cacao" "^3.0.0" + "@stablelib/random" "^1.0.2" + "@stacks/common" "^6.10.0" + "@stacks/encryption" "^6.10.0" + "@stacks/transactions" "^6.10.0" + caip "^1.1.0" + jsontokens "^4.0.1" + +"@didtools/pkh-tezos@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@didtools/pkh-tezos/-/pkh-tezos-0.3.0.tgz#21d766f4b492c5acd30ce8710585dee479fc68ae" + integrity sha512-AB8drOnBkDSE9KolsiSShPwVOVbRXM2G5T//b+GgX9potVRTcRsD0z59x/6mU1e9g2kxpScOhjRrZsC0c+SQNw== + dependencies: + "@didtools/cacao" "^3.0.0" + "@noble/curves" "^1.2.0" + "@noble/hashes" "^1.3.2" + "@stablelib/random" "^1.0.2" + caip "^1.1.0" + uint8arrays "^5.0.1" + +"@didtools/siwx@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@didtools/siwx/-/siwx-1.0.0.tgz#18eacb098a3a1f69253a8216fa5071ad9c2c7ec1" + integrity sha512-b7sPDTNHdySoJ+Rp2p06x3rg1iTxI4yPTTA3PrPh40xcvFJ0K/YhdIb/Rzff13t92arcJ+VYGFhqtJorauV91g== + dependencies: + codeco "^1.1.0" + +"@didtools/siwx@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@didtools/siwx/-/siwx-2.0.0.tgz#95225f57888bff821baa182dee2d7860ee51940a" + integrity sha512-eqBtI5dZrptXTCyadnhvU0di/KvumoByT7F8KB/8BLU7M1lltfEmvf/c5AnsyrWO9338ygCs2u5mKz1p1Zdj5A== + dependencies: + codeco "^1.2.0" "@digitalbazaar/http-client@^3.4.1": version "3.4.1" @@ -1900,7 +2618,7 @@ dependencies: "@ethersproject/bignumber" "^5.7.0" -"@ethersproject/contracts@5.7.0": +"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.5.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== @@ -2003,7 +2721,7 @@ dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/providers@5.7.2": +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.5.1": version "5.7.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== @@ -2111,7 +2829,7 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/wallet@5.7.0": +"@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.5.0", "@ethersproject/wallet@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== @@ -2186,6 +2904,114 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== +"@gar/promisify@^1.0.1": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + +"@graphql-tools/batch-delegate@^9.0.3": + version "9.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-delegate/-/batch-delegate-9.0.3.tgz#7d496a693e7f3226dbff5fc30989bbbd7ef5fa16" + integrity sha512-wYYbDLQeXU+lEUQJDjylN/e1V3OTVkeJSZYgroDniBfg3etDuOJruAIWZ6S6skKB1PZBy1emEbs6HjrziHeX0A== + dependencies: + "@graphql-tools/delegate" "^10.0.11" + "@graphql-tools/utils" "^10.2.1" + dataloader "2.2.2" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/batch-execute@^9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-9.0.4.tgz#11601409c0c33491971fc82592de12390ec58be2" + integrity sha512-kkebDLXgDrep5Y0gK1RN3DMUlLqNhg60OAz0lTCqrYeja6DshxLtLkj+zV4mVbBA4mQOEoBmw6g1LZs3dA84/w== + dependencies: + "@graphql-tools/utils" "^10.0.13" + dataloader "^2.2.2" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/delegate@^10.0.11", "@graphql-tools/delegate@^10.0.4": + version "10.0.11" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-10.0.11.tgz#d66b46a5f90b0c323848e0b38379836842d1ce72" + integrity sha512-+sKeecdIVXhFB/66e5yjeKYZ3Lpn52yNG637ElVhciuLGgFc153rC6l6zcuNd9yx5wMrNx35U/h3HsMIEI3xNw== + dependencies: + "@graphql-tools/batch-execute" "^9.0.4" + "@graphql-tools/executor" "^1.2.1" + "@graphql-tools/schema" "^10.0.4" + "@graphql-tools/utils" "^10.2.1" + dataloader "^2.2.2" + tslib "^2.5.0" + +"@graphql-tools/executor@^1.2.1": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor/-/executor-1.2.6.tgz#71caa7c52108e4744bfa5ffdc958126bb4b48ff2" + integrity sha512-+1kjfqzM5T2R+dCw7F4vdJ3CqG+fY/LYJyhNiWEFtq0ToLwYzR/KKyD8YuzTirEjSxWTVlcBh7endkx5n5F6ew== + dependencies: + "@graphql-tools/utils" "^10.1.1" + "@graphql-typed-document-node/core" "3.2.0" + "@repeaterjs/repeater" "^3.0.4" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/merge@^9.0.3", "@graphql-tools/merge@^9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-9.0.4.tgz#66c34cbc2b9a99801c0efca7b8134b2c9aecdb06" + integrity sha512-MivbDLUQ+4Q8G/Hp/9V72hbn810IJDEZQ57F01sHnlrrijyadibfVhaQfW/pNH+9T/l8ySZpaR/DpL5i+ruZ+g== + dependencies: + "@graphql-tools/utils" "^10.0.13" + tslib "^2.4.0" + +"@graphql-tools/schema@^10.0.3", "@graphql-tools/schema@^10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-10.0.4.tgz#d4fc739a2cc07b4fc5f31a714178a561cba210cd" + integrity sha512-HuIwqbKxPaJujox25Ra4qwz0uQzlpsaBOzO6CVfzB/MemZdd+Gib8AIvfhQArK0YIN40aDran/yi+E5Xf0mQww== + dependencies: + "@graphql-tools/merge" "^9.0.3" + "@graphql-tools/utils" "^10.2.1" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/stitch@^9.0.5": + version "9.2.9" + resolved "https://registry.yarnpkg.com/@graphql-tools/stitch/-/stitch-9.2.9.tgz#4556c586a2e5faa6b8bce6330f4dd0b2f2748eb7" + integrity sha512-+vWcsdL5nGyKMuq08sME+hf3vmp4qnkAiSj25a9HaBU118KJCvp9wTMYRB6Om5H2nlStDxP2HMS4RK3fv7vf8w== + dependencies: + "@graphql-tools/batch-delegate" "^9.0.3" + "@graphql-tools/delegate" "^10.0.11" + "@graphql-tools/executor" "^1.2.1" + "@graphql-tools/merge" "^9.0.4" + "@graphql-tools/schema" "^10.0.4" + "@graphql-tools/utils" "^10.2.1" + "@graphql-tools/wrap" "^10.0.2" + tslib "^2.4.0" + value-or-promise "^1.0.11" + +"@graphql-tools/utils@^10.0.13", "@graphql-tools/utils@^10.1.0", "@graphql-tools/utils@^10.1.1", "@graphql-tools/utils@^10.2.1": + version "10.2.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.2.2.tgz#6477295fae051ffb5d6c28253aa6d8a449d4a820" + integrity sha512-ueoplzHIgFfxhFrF4Mf/niU/tYHuO6Uekm2nCYU72qpI+7Hn9dA2/o5XOBvFXDk27Lp5VSvQY5WfmRbqwVxaYQ== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + cross-inspect "1.0.0" + dset "^3.1.2" + tslib "^2.4.0" + +"@graphql-tools/wrap@^10.0.2": + version "10.0.5" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-10.0.5.tgz#614b964a158887b4a644f5425b2b9a57b5751f72" + integrity sha512-Cbr5aYjr3HkwdPvetZp1cpDWTGdD1Owgsb3z/ClzhmrboiK86EnQDxDvOJiQkDCPWE9lNBwj8Y4HfxroY0D9DQ== + dependencies: + "@graphql-tools/delegate" "^10.0.4" + "@graphql-tools/schema" "^10.0.3" + "@graphql-tools/utils" "^10.1.1" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-typed-document-node/core@3.2.0", "@graphql-typed-document-node/core@^3.1.1": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== + "@grpc/grpc-js@^1.7.1", "@grpc/grpc-js@^1.7.3": version "1.10.2" resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.2.tgz#19e6da577d88210a01ecc7987b2394b841ed34dd" @@ -2306,7 +3132,15 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@ipld/dag-cbor@^9.0.0": +"@ipld/dag-cbor@^7.0.0", "@ipld/dag-cbor@^7.0.1": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz#aa31b28afb11a807c3d627828a344e5521ac4a1e" + integrity sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA== + dependencies: + cborg "^1.6.0" + multiformats "^9.5.4" + +"@ipld/dag-cbor@^9.0.0", "@ipld/dag-cbor@^9.0.1", "@ipld/dag-cbor@^9.0.6", "@ipld/dag-cbor@^9.0.7", "@ipld/dag-cbor@^9.1.0": version "9.2.0" resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-9.2.0.tgz#3a3f0bee02d7e1c2f15582e896843d5b00fbba9f" integrity sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA== @@ -2518,6 +3352,11 @@ multiformats "^11.0.0" uint8arrays "^4.0.2" +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + "@multiformats/dns@^1.0.1": version "1.0.2" resolved "https://registry.yarnpkg.com/@multiformats/dns/-/dns-1.0.2.tgz#56a9e91572c071f3977c693f39f23636bcdb80f5" @@ -2640,17 +3479,51 @@ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.0.tgz#e561fb330466d41807123d932b365cf3d33ceba2" integrity sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg== +"@noble/ciphers@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-0.4.1.tgz#977fc35f563a4ca315ebbc4cbb1f9b670bd54456" + integrity sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg== + +"@noble/curves@1.2.0", "@noble/curves@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/curves@^1.0.0", "@noble/curves@^1.1.0", "@noble/curves@^1.2.0", "@noble/curves@^1.3.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" + integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== + dependencies: + "@noble/hashes" "1.4.0" + "@noble/ed25519@^1.6.0": version "1.7.3" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== -"@noble/hashes@^1.2.0": +"@noble/hashes@1.1.5", "@noble/hashes@~1.1.1": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" + integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== + +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@noble/hashes@1.4.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.3.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2", "@noble/hashes@^1.3.3": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@noble/hashes@^1.2.0", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.2": version "1.3.3" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== -"@noble/secp256k1@^1.5.4": +"@noble/secp256k1@1.7.1", "@noble/secp256k1@^1.5.4", "@noble/secp256k1@^1.6.3": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== @@ -2676,6 +3549,22 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@npmcli/fs@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + "@one-ini/wasm@0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323" @@ -2688,6 +3577,13 @@ dependencies: "@opentelemetry/api" "^1.0.0" +"@opentelemetry/api-logs@0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.50.0.tgz#d46b76daab0bc18fa92dcdabacfc106c380d19a1" + integrity sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA== + dependencies: + "@opentelemetry/api" "^1.0.0" + "@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.3.0", "@opentelemetry/api@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.8.0.tgz#5aa7abb48f23f693068ed2999ae627d2f7d902ec" @@ -2766,6 +3662,20 @@ dependencies: "@opentelemetry/semantic-conventions" "1.22.0" +"@opentelemetry/core@1.23.0": + version "1.23.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.23.0.tgz#f2e7ada7f35750f3c1674aef1e52c879005c0731" + integrity sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ== + dependencies: + "@opentelemetry/semantic-conventions" "1.23.0" + +"@opentelemetry/core@1.25.0": + version "1.25.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.25.0.tgz#ad034f5c2669f589bd703bfbbaa38b51f8504053" + integrity sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ== + dependencies: + "@opentelemetry/semantic-conventions" "1.25.0" + "@opentelemetry/core@1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.8.0.tgz#cca18594dd48ded6dc0d08c7e789c79af0315934" @@ -2817,6 +3727,17 @@ "@opentelemetry/resources" "1.8.0" "@opentelemetry/sdk-metrics" "1.8.0" +"@opentelemetry/exporter-metrics-otlp-http@^0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.50.0.tgz#fa804b8d300f3e9c1b6047f4a17949cfaed902db" + integrity sha512-DMilj0pTOGxeaRPvVBil/KugvLMV5l+GzoXEWBKXYGEnfNlX+huPeMpYl+zJJBtI3Coht2KArnNOLhs2wqA3yA== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/otlp-exporter-base" "0.50.0" + "@opentelemetry/otlp-transformer" "0.50.0" + "@opentelemetry/resources" "1.23.0" + "@opentelemetry/sdk-metrics" "1.23.0" + "@opentelemetry/exporter-metrics-otlp-proto@^0.34.0": version "0.34.0" resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.34.0.tgz#db75ed1a891358fe5a0df98df486a87ad93b5009" @@ -2830,6 +3751,15 @@ "@opentelemetry/resources" "1.8.0" "@opentelemetry/sdk-metrics" "1.8.0" +"@opentelemetry/exporter-prometheus@^0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.50.0.tgz#fc5dfed6246a9d796020377361601fd7c5e1a1f7" + integrity sha512-6jBrGqzpU1b2gCPUWTSSW+G3ejbZRx9SYhhFg0MO6v8R51mcln9KH6oIdTDrA+3Ie3L18bpygKrIWA9VPWEifg== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/resources" "1.23.0" + "@opentelemetry/sdk-metrics" "1.23.0" + "@opentelemetry/exporter-trace-otlp-grpc@0.34.0", "@opentelemetry/exporter-trace-otlp-grpc@^0.34.0": version "0.34.0" resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.34.0.tgz#6ec4a897f263e371f4ce8e3b1aa83167fe6aedc2" @@ -2876,6 +3806,17 @@ "@opentelemetry/resources" "1.14.0" "@opentelemetry/sdk-trace-base" "1.14.0" +"@opentelemetry/exporter-trace-otlp-http@^0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.50.0.tgz#6f5961edf98ac85654c82c2f60044051cdbb1e7a" + integrity sha512-L7OtIMT7MsFqkmhbQlPBGRXt7152VN5esHpQEJYIBFedOEo3Da+yHpu5ojMZtPzpIvSpB5Xr5lnJUjJCbkttCA== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/otlp-exporter-base" "0.50.0" + "@opentelemetry/otlp-transformer" "0.50.0" + "@opentelemetry/resources" "1.23.0" + "@opentelemetry/sdk-trace-base" "1.23.0" + "@opentelemetry/exporter-trace-otlp-proto@0.34.0", "@opentelemetry/exporter-trace-otlp-proto@^0.34.0": version "0.34.0" resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.34.0.tgz#526a2749007f35f7a70cf7d08406fcd421a03d8b" @@ -3271,6 +4212,13 @@ dependencies: "@opentelemetry/core" "1.14.0" +"@opentelemetry/otlp-exporter-base@0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.50.0.tgz#28bf0e175a22589f3a113873279bd1e7bb27a204" + integrity sha512-JUmjmrCmE1/fc4LjCQMqLfudgSl5OpUkzx7iA94b4jgeODM7zWxUoVXL7/CT7fWf47Cn+pmKjMvTCSESqZZ3mA== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/otlp-grpc-exporter-base@0.34.0": version "0.34.0" resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.34.0.tgz#edc3a9d8449f48e47c63c2f73e2c63c5a2f25102" @@ -3331,6 +4279,18 @@ "@opentelemetry/sdk-metrics" "1.14.0" "@opentelemetry/sdk-trace-base" "1.14.0" +"@opentelemetry/otlp-transformer@0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.50.0.tgz#211fe512fcce9d76042680f955336dbde3be03ef" + integrity sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA== + dependencies: + "@opentelemetry/api-logs" "0.50.0" + "@opentelemetry/core" "1.23.0" + "@opentelemetry/resources" "1.23.0" + "@opentelemetry/sdk-logs" "0.50.0" + "@opentelemetry/sdk-metrics" "1.23.0" + "@opentelemetry/sdk-trace-base" "1.23.0" + "@opentelemetry/propagation-utils@^0.29.5": version "0.29.5" resolved "https://registry.yarnpkg.com/@opentelemetry/propagation-utils/-/propagation-utils-0.29.5.tgz#2d3ba90a69370e7c9f2f851943cdd2e2e63a56bd" @@ -3427,6 +4387,22 @@ "@opentelemetry/core" "1.22.0" "@opentelemetry/semantic-conventions" "1.22.0" +"@opentelemetry/resources@1.23.0": + version "1.23.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.23.0.tgz#4c71430f3e20c4d88b67ef5629759fae108485e5" + integrity sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/semantic-conventions" "1.23.0" + +"@opentelemetry/resources@1.25.0", "@opentelemetry/resources@^1.23.0": + version "1.25.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.25.0.tgz#84a1e70097e342aa2047aac97be114ad14966793" + integrity sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ== + dependencies: + "@opentelemetry/core" "1.25.0" + "@opentelemetry/semantic-conventions" "1.25.0" + "@opentelemetry/resources@1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.8.0.tgz#260be9742cf7bceccc0db928d8ca8d64391acfe3" @@ -3443,6 +4419,14 @@ "@opentelemetry/core" "1.14.0" "@opentelemetry/resources" "1.14.0" +"@opentelemetry/sdk-logs@0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.50.0.tgz#6636492cf626a9666f61d91025e25243d1a43bfc" + integrity sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/resources" "1.23.0" + "@opentelemetry/sdk-metrics@1.14.0": version "1.14.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.14.0.tgz#ee51d72eb32a74108e6632681ce2df46cddc0714" @@ -3452,6 +4436,15 @@ "@opentelemetry/resources" "1.14.0" lodash.merge "4.6.2" +"@opentelemetry/sdk-metrics@1.23.0": + version "1.23.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.23.0.tgz#b4cf3cc86b6dedf5c438c67c829df7399bf64be1" + integrity sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/resources" "1.23.0" + lodash.merge "^4.6.2" + "@opentelemetry/sdk-metrics@1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.8.0.tgz#d061060f03861ab3f345d0f924922bc1a6396157" @@ -3461,6 +4454,15 @@ "@opentelemetry/resources" "1.8.0" lodash.merge "4.6.2" +"@opentelemetry/sdk-metrics@^1.23.0": + version "1.25.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.0.tgz#0c954d580c17821ae4385d29447718df09e80b79" + integrity sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng== + dependencies: + "@opentelemetry/core" "1.25.0" + "@opentelemetry/resources" "1.25.0" + lodash.merge "^4.6.2" + "@opentelemetry/sdk-metrics@^1.8.0", "@opentelemetry/sdk-metrics@^1.9.1": version "1.22.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.22.0.tgz#b94c62403013e4c72b96dc747d71d786073efafc" @@ -3515,6 +4517,15 @@ "@opentelemetry/resources" "1.14.0" "@opentelemetry/semantic-conventions" "1.14.0" +"@opentelemetry/sdk-trace-base@1.23.0": + version "1.23.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz#ff0a0f8ec47205e0b14b3b765ea2a34de1ad01dd" + integrity sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ== + dependencies: + "@opentelemetry/core" "1.23.0" + "@opentelemetry/resources" "1.23.0" + "@opentelemetry/semantic-conventions" "1.23.0" + "@opentelemetry/sdk-trace-base@1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.8.0.tgz#70713aab90978a16dea188c8335209f857be7384" @@ -3524,6 +4535,15 @@ "@opentelemetry/resources" "1.8.0" "@opentelemetry/semantic-conventions" "1.8.0" +"@opentelemetry/sdk-trace-base@^1.23.0": + version "1.25.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.25.0.tgz#263f9ce19001c5cd7a814d0eb40ebc6469ae763d" + integrity sha512-6+g2fiRQUG39guCsKVeY8ToeuUf3YUnPkN6DXRA1qDmFLprlLvZm9cS6+chgbW70cZJ406FTtSCDnJwxDC5sGQ== + dependencies: + "@opentelemetry/core" "1.25.0" + "@opentelemetry/resources" "1.25.0" + "@opentelemetry/semantic-conventions" "1.25.0" + "@opentelemetry/sdk-trace-base@^1.8.0": version "1.22.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.22.0.tgz#7833bf2493a7b49461915ca32aa2884c87afd78c" @@ -3567,6 +4587,16 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.22.0.tgz#d7502533a7c96e25baab86bac965468e0703a8b4" integrity sha512-CAOgFOKLybd02uj/GhCdEeeBjOS0yeoDeo/CA7ASBSmenpZHAKGB3iDm/rv3BQLcabb/OprDEsSQ1y0P8A7Siw== +"@opentelemetry/semantic-conventions@1.23.0": + version "1.23.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz#627f2721b960fe586b7f72a07912cb7699f06eef" + integrity sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg== + +"@opentelemetry/semantic-conventions@1.25.0", "@opentelemetry/semantic-conventions@^1.23.0": + version "1.25.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz#390eb4d42a29c66bdc30066af9035645e9bb7270" + integrity sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ== + "@opentelemetry/semantic-conventions@1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.8.0.tgz#fe2aa90e6df050a11cd57f5c0f47b0641fd2cad3" @@ -3589,6 +4619,102 @@ resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== +"@polkadot/networks@7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-7.9.2.tgz#03e3f3ac6bdea177517436537826055df60bcb9a" + integrity sha512-4obI1RdW5/7TFwbwKA9oqw8aggVZ65JAUvIFMd2YmMC2T4+NiZLnok0WhRkhZkUnqjLIHXYNwq7Ho1i39dte0g== + dependencies: + "@babel/runtime" "^7.16.3" + +"@polkadot/util-crypto@^7.0.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-7.9.2.tgz#cdc336f92a6bc3d40c5a23734e1974fb777817f0" + integrity sha512-nNwqUwP44eCH9jKKcPie+IHLKkg9LMe6H7hXo91hy3AtoslnNrT51tP3uAm5yllhLvswJfnAgnlHq7ybCgqeFw== + dependencies: + "@babel/runtime" "^7.16.3" + "@polkadot/networks" "7.9.2" + "@polkadot/util" "7.9.2" + "@polkadot/wasm-crypto" "^4.4.1" + "@polkadot/x-randomvalues" "7.9.2" + blakejs "^1.1.1" + bn.js "^4.12.0" + create-hash "^1.2.0" + ed2curve "^0.3.0" + elliptic "^6.5.4" + hash.js "^1.1.7" + js-sha3 "^0.8.0" + micro-base "^0.9.0" + scryptsy "^2.1.0" + tweetnacl "^1.0.3" + xxhashjs "^0.2.2" + +"@polkadot/util@7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-7.9.2.tgz#567ac659516d6b685ed7e796919901d92e5cbe6b" + integrity sha512-6ABY6ErgkCsM4C6+X+AJSY4pBGwbKlHZmUtHftaiTvbaj4XuA4nTo3GU28jw8wY0Jh2cJZJvt6/BJ5GVkm5tBA== + dependencies: + "@babel/runtime" "^7.16.3" + "@polkadot/x-textdecoder" "7.9.2" + "@polkadot/x-textencoder" "7.9.2" + "@types/bn.js" "^4.11.6" + bn.js "^4.12.0" + camelcase "^6.2.1" + ip-regex "^4.3.0" + +"@polkadot/wasm-crypto-asmjs@^4.6.1": + version "4.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.6.1.tgz#4f4a5adcf8dce65666eaa0fb16b6ff7b0243aead" + integrity sha512-1oHQjz2oEO1kCIcQniOP+dZ9N2YXf2yCLHLsKaKSvfXiWaetVCaBNB8oIHIVYvuLnVc8qlMi66O6xc1UublHsw== + dependencies: + "@babel/runtime" "^7.17.2" + +"@polkadot/wasm-crypto-wasm@^4.6.1": + version "4.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.6.1.tgz#882d8199e216966c612f56a18e31f6aaae77e7eb" + integrity sha512-NI3JVwmLjrSYpSVuhu0yeQYSlsZrdpK41UC48sY3kyxXC71pi6OVePbtHS1K3xh3FFmDd9srSchExi3IwzKzMw== + dependencies: + "@babel/runtime" "^7.17.2" + +"@polkadot/wasm-crypto@^4.4.1": + version "4.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-4.6.1.tgz#12f8481e6f9021928435168beb0697d57ff573e9" + integrity sha512-2wEftBDxDG+TN8Ah6ogtvzjdZdcF0mAjU4UNNOfpmkBCxQYZOrAHB8HXhzo3noSsKkLX7PDX57NxvJ9OhoTAjw== + dependencies: + "@babel/runtime" "^7.17.2" + "@polkadot/wasm-crypto-asmjs" "^4.6.1" + "@polkadot/wasm-crypto-wasm" "^4.6.1" + +"@polkadot/x-global@7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-7.9.2.tgz#b272b0a3bedaad3bcbf075ec4682abe68cf2a850" + integrity sha512-JX5CrGWckHf1P9xKXq4vQCAuMUbL81l2hOWX7xeP8nv4caHEpmf5T1wD1iMdQBL5PFifo6Pg0V6/oZBB+bts7A== + dependencies: + "@babel/runtime" "^7.16.3" + +"@polkadot/x-randomvalues@7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-7.9.2.tgz#0c9bb7b48a0791c2a32e9605a31a5ce56fee621d" + integrity sha512-svQfG31yCXf6yVyIgP0NgCzEy7oc3Lw054ZspkaqjOivxYdrXaf5w3JSSUyM/MRjI2+nk+B/EyJoMYcfSwTfsQ== + dependencies: + "@babel/runtime" "^7.16.3" + "@polkadot/x-global" "7.9.2" + +"@polkadot/x-textdecoder@7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-7.9.2.tgz#a78548e33efeb3a25f761fec9787b2bcae7f0608" + integrity sha512-wfwbSHXPhrOAl12QvlIOGNkMH/N/h8PId2ytIjvM/8zPPFB5Il6DWSFLtVapOGEpIFjEWbd5t8Td4pHBVXIEbg== + dependencies: + "@babel/runtime" "^7.16.3" + "@polkadot/x-global" "7.9.2" + +"@polkadot/x-textencoder@7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-7.9.2.tgz#b32bfd6fbff8587c56452f58252a52d62bbcd5b9" + integrity sha512-A19wwYINuZwU2dUyQ/mMzB0ISjyfc4cISfL4zCMUAVgj7xVoXMYV2GfjNdMpA8Wsjch3su6pxLbtJ2wU03sRTQ== + dependencies: + "@babel/runtime" "^7.16.3" + "@polkadot/x-global" "7.9.2" + "@prisma/client@4.10.1": version "4.10.1" resolved "https://registry.yarnpkg.com/@prisma/client/-/client-4.10.1.tgz#c47fd54661ee74b174cee63e9dc418ecf57a6ccd" @@ -4128,6 +5254,46 @@ resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.5.tgz#a6d70ef7a0e71e083ea09b967df0a0ed742bc6ad" integrity sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg== +"@repeaterjs/repeater@^3.0.4": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.6.tgz#be23df0143ceec3c69f8b6c2517971a5578fdaa2" + integrity sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA== + +"@scarf/scarf@^1.1.1": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@scarf/scarf/-/scarf-1.3.0.tgz#f8c75560d0dace4452dee1e31995e6396e61f3ee" + integrity sha512-lHKK8M5CTcpFj2hZDB3wIjb0KAbEOgDmiJGDv1WBRfQgRm/a8/XMEkG/N1iM01xgbUDsPQwi42D+dFo1XPAKew== + +"@scure/base@^1.1.3", "@scure/base@~1.1.0", "@scure/base@~1.1.2": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.7.tgz#fe973311a5c6267846aa131bc72e96c5d40d2b30" + integrity sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g== + +"@scure/bip32@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.2.tgz#90e78c027d5e30f0b22c1f8d50ff12f3fb7559f8" + integrity sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA== + dependencies: + "@noble/curves" "~1.2.0" + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.2" + +"@scure/bip39@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" + integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== + dependencies: + "@noble/hashes" "~1.1.1" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" + integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== + dependencies: + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + "@selderee/plugin-htmlparser2@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz#d5b5e29a7ba6d3958a1972c7be16f4b2c188c517" @@ -5152,6 +6318,14 @@ "@smithy/types" "^2.12.0" tslib "^2.6.2" +"@smontero/eosio-signing-tools@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@smontero/eosio-signing-tools/-/eosio-signing-tools-0.0.6.tgz#b6371a63e27cd83a779d47b4911a49ca3e24d702" + integrity sha512-Uk5gnTMVnBUcUe3DUy957cfZozSni9uBzZBLLd3Wd04WWxjR6JqQw1QXGxl9GQuetwIGryX8iNj31WXPLuyA/w== + dependencies: + eosjs-ecc "^4.0.7" + node-fetch "^2.6.1" + "@socket.io/component-emitter@~3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" @@ -5171,12 +6345,40 @@ dependencies: "@stablelib/int" "^1.0.1" +"@stablelib/blake2b@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/blake2b/-/blake2b-1.0.1.tgz#0045a77e182c4cf3260bc9b533fc4cd5c287f8ea" + integrity sha512-B3KyKoBAjkIFeH7romcF96i+pVFYk7K2SBQ1pZvaxV+epSBXJ+n0C66esUhyz6FF+5FbdQVm77C5fzGFcEZpKA== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/ed25519@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" + integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== + dependencies: + "@stablelib/random" "^1.0.2" + "@stablelib/sha512" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/hash@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" + integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== + +"@stablelib/hex@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hex/-/hex-1.0.1.tgz#564bd46d896941c93131d1e1869eabc17cf9bab5" + integrity sha512-PQOEChVBjhYGgAD+ehO2ow1gSj1slre3jW4oMD4kV8VrhYhzmtsQDWDZej3BQO8qkVezdczDvISxVSF24PuYNA== + "@stablelib/int@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== -"@stablelib/random@^1.0.1": +"@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== @@ -5184,11 +6386,81 @@ "@stablelib/binary" "^1.0.1" "@stablelib/wipe" "^1.0.1" +"@stablelib/sha256@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha256/-/sha256-1.0.1.tgz#77b6675b67f9b0ea081d2e31bda4866297a3ae4f" + integrity sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/sha512@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha512/-/sha512-1.0.1.tgz#6da700c901c2c0ceacbd3ae122a38ac57c72145f" + integrity sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/uuid@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@stablelib/uuid/-/uuid-1.0.2.tgz#0b803d954ce598067712f9170c9000b99f072d55" + integrity sha512-hduG+zCobfqjVDps3twWxBPuVYkobKQ+Dc8mQek7KfUAgbW4sJpBbr+Zd8l0KnwiFyesjAO3mZ+f3W4uLJtvNA== + dependencies: + "@stablelib/hex" "^1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/wipe" "^1.0.1" + "@stablelib/wipe@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== +"@stacks/common@^6.10.0", "@stacks/common@^6.13.0": + version "6.13.0" + resolved "https://registry.yarnpkg.com/@stacks/common/-/common-6.13.0.tgz#2fbfc39789cb4c64ae0089cee38b22c57e9e6c76" + integrity sha512-wwzyihjaSdmL6NxKvDeayy3dqM0L0Q2sawmdNtzJDi0FnXuJGm5PeapJj7bEfcI9XwI7Bw5jZoC6mCn9nc5YIw== + dependencies: + "@types/bn.js" "^5.1.0" + "@types/node" "^18.0.4" + +"@stacks/encryption@^6.10.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@stacks/encryption/-/encryption-6.15.0.tgz#fc2d1a7e8a7cfe57f172af9880bad09a32461f08" + integrity sha512-506BdBvWhbXY1jxCdUcdbBzcSJctO2nzgzfenQwUuoBABSc1N/MFwQdlR9ZusY+E31zBxQPLfbr36V05/p2cfQ== + dependencies: + "@noble/hashes" "1.1.5" + "@noble/secp256k1" "1.7.1" + "@scure/bip39" "1.1.0" + "@stacks/common" "^6.13.0" + "@types/node" "^18.0.4" + base64-js "^1.5.1" + bs58 "^5.0.0" + ripemd160-min "^0.0.6" + varuint-bitcoin "^1.1.2" + +"@stacks/network@^6.13.0": + version "6.13.0" + resolved "https://registry.yarnpkg.com/@stacks/network/-/network-6.13.0.tgz#da178f8144f9c64757b7e57cf223190d12183f81" + integrity sha512-Ss/Da4BNyPBBj1OieM981fJ7SkevKqLPkzoI1+Yo7cYR2df+0FipIN++Z4RfpJpc8ne60vgcx7nJZXQsiGhKBQ== + dependencies: + "@stacks/common" "^6.13.0" + cross-fetch "^3.1.5" + +"@stacks/transactions@^6.10.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@stacks/transactions/-/transactions-6.15.0.tgz#41d61aec7c00035112bf25d423139b9828207dc6" + integrity sha512-P6XKDcqqycPy+KBJBw8+5N+u57D8moJN7msYdde1gYXERmvOo9ht/MNREWWQ7SAM7Nlhau5mpezCdYCzXOCilQ== + dependencies: + "@noble/hashes" "1.1.5" + "@noble/secp256k1" "1.7.1" + "@stacks/common" "^6.13.0" + "@stacks/network" "^6.13.0" + c32check "^2.0.0" + lodash.clonedeep "^4.5.0" + "@swc/core-darwin-arm64@1.3.101": version "1.3.101" resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.101.tgz#9ffdc0e77c31b20877fa7405c82905e0c76738d0" @@ -5275,6 +6547,50 @@ resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a" integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== +"@taquito/utils@^11.2.0": + version "11.2.0" + resolved "https://registry.yarnpkg.com/@taquito/utils/-/utils-11.2.0.tgz#19341a5222e078f70f3181692de75cb853ca02ee" + integrity sha512-I5LoD5fG9S2Yo4CNpW4u3vF9lUJG1PxkGLi6ntvvH49SBXwo9HJ/n/v04aoE9V7ncA0a7LUm6ucnROagIc2QQQ== + dependencies: + "@stablelib/blake2b" "^1.0.1" + "@stablelib/ed25519" "^1.0.2" + "@types/bs58check" "^2.1.0" + blakejs "^1.1.1" + bs58check "^2.1.2" + buffer "^6.0.3" + elliptic "^6.5.4" + typedarray-to-buffer "^4.0.0" + +"@tendermint/belt@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tendermint/belt/-/belt-0.3.0.tgz#09b50c50d7ab2967c0b6d42008c3f2ea33409994" + integrity sha512-3ZIsrbh9HLGM8cFyptK5iBeWou30srDiBjY8cVXFkz8aqPprt0OT7T9JqiqoG570x1pB0xiKwDDBxtQ120Gxug== + dependencies: + "@tendermint/types" "0.1.2" + +"@tendermint/sig@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@tendermint/sig/-/sig-0.6.0.tgz#c6c863bfa6047ed5ce1028cd6c3231462b8fc519" + integrity sha512-qbAETvlDMghtPA2/HXSi0NKmtm/AL2iDUpivJQ9w/7kzifKIP15mJF4jx0y3TwG9vSYjQ/+NKTgJPTT6UJ+JKg== + dependencies: + "@tendermint/belt" "0.3.0" + "@tendermint/types" "0.1.2" + bech32 "1.1.4" + bip32 "2.0.5" + bip39 "3.0.2" + create-hash "1.2.0" + secp256k1 "4.0.1" + +"@tendermint/types@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@tendermint/types/-/types-0.1.2.tgz#e86745bf30c71690a1de2265d998951f86e051bf" + integrity sha512-VTYYB5xj6jRS0FnJWaSTuDBYOrXXxz1T23tJHuCkK2VGAqHOwaNHrtUK+fKSaYIoCDr21JM0S+uGej5Toqw1aQ== + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" @@ -5314,6 +6630,20 @@ resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.81.tgz#6d405269aad82e05a348687631aa9a587cdbe158" integrity sha512-C1rFKGVZ8KwqhwBOYlpoybTSRtxu2433ea6JaO3amc6ubEe08yQoFsPa9aU9YqvX7ppeZ25CnCtC4AH9mhtxsQ== +"@types/bn.js@^4.11.6": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/bn.js@^5.1.0": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" + integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== + dependencies: + "@types/node" "*" + "@types/body-parser@*", "@types/body-parser@^1.19.1": version "1.19.5" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" @@ -5322,6 +6652,13 @@ "@types/connect" "*" "@types/node" "*" +"@types/bs58check@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@types/bs58check/-/bs58check-2.1.2.tgz#ca6264599cd9c0bdfeb839a0927f13a9cb77ba0f" + integrity sha512-xpXaQlOIY1KoXlA/ytHGHpEIU87PJt+g9SH7nC6HdCgaBwT2IEZIwBMHbjuX6BpnfbiUMlmwqurdLDwXpcdmSA== + dependencies: + "@types/node" "*" + "@types/bunyan@1.8.7": version "1.8.7" resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.7.tgz#63cc65b5ecff6217d1509409a575e7b991f80831" @@ -5678,6 +7015,16 @@ dependencies: undici-types "~5.26.4" +"@types/node@10.12.18": + version "10.12.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" + integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== + +"@types/node@11.11.6": + version "11.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== + "@types/node@^18.0.0": version "18.19.25" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.25.tgz#bde496da9937031ef60e615418160b71f0b03776" @@ -5685,6 +7032,20 @@ dependencies: undici-types "~5.26.4" +"@types/node@^18.0.4": + version "18.19.34" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.34.tgz#c3fae2bbbdb94b4a52fe2d229d0dccce02ef3d27" + integrity sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g== + dependencies: + undici-types "~5.26.4" + +"@types/node@^20.11.16": + version "20.14.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" + integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q== + dependencies: + undici-types "~5.26.4" + "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" @@ -6064,6 +7425,22 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@zondax/filecoin-signing-tools@^0.18.2": + version "0.18.6" + resolved "https://registry.yarnpkg.com/@zondax/filecoin-signing-tools/-/filecoin-signing-tools-0.18.6.tgz#8436d5b2666d51f640ccdd07300da3112716f3d6" + integrity sha512-dJZ5vpvv1DQ2h/45RsjcOmLohugvanTCbmEDTTRmWradWhD09S+X6r4VTMt2KY8MN19Mz16K0OLrNIaSc2C2YA== + dependencies: + "@ipld/dag-cbor" "^7.0.0" + axios "^0.24.0" + base32-decode "^1.0.0" + base32-encode "1.2.0" + bip32 "2.0.6" + bip39 "^3.0.4" + blakejs "^1.1.1" + bn.js "^5.1.2" + leb128 "0.0.5" + secp256k1 "^4.0.3" + JSONStream@^1.0.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -6082,6 +7459,11 @@ abbrev@^2.0.0: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== +abitype@0.9.8: + version "0.9.8" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.9.8.tgz#1f120b6b717459deafd213dfbf3a3dd1bf10ae8c" + integrity sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -6089,6 +7471,19 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" +abstract-level@^1.0.2, abstract-level@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.4.tgz#3ad8d684c51cc9cbc9cf9612a7100b716c414b57" + integrity sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + accepts@~1.3.4, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -6127,7 +7522,7 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== -agent-base@6: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -6141,6 +7536,13 @@ agent-base@^7.0.2: dependencies: debug "^4.3.4" +agentkeepalive@^4.1.3: + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -6149,6 +7551,13 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" @@ -6164,6 +7573,16 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.0, ajv@^8.8.2: + version "8.16.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" + integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + ajv@^8.0.1, ajv@^8.11.0: version "8.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" @@ -6270,6 +7689,11 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + archiver-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" @@ -6327,6 +7751,14 @@ arconnect@^0.4.2: dependencies: arweave "^1.10.13" +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -6537,6 +7969,11 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +await-semaphore@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/await-semaphore/-/await-semaphore-0.1.3.tgz#2b88018cc8c28e06167ae1cdff02504f1f9688d3" + integrity sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q== + aws-sdk@^2.1186.0: version "2.1576.0" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1576.0.tgz#f852d8c51df41b55e437610c653b31759f6a1a98" @@ -6563,6 +8000,13 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== +axios@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6" + integrity sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA== + dependencies: + follow-redirects "^1.14.4" + axios@^0.25.0: version "0.25.0" resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" @@ -6591,11 +8035,30 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base-x@^3.0.2: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + base-x@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== +base32-decode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base32-decode/-/base32-decode-1.0.0.tgz#2a821d6a664890c872f20aa9aca95a4b4b80e2a7" + integrity sha512-KNWUX/R7wKenwE/G/qFMzGScOgVntOmbE27vvc6GrniDGYb6a5+qWcuoXl8WIOQL7q0TpK7nZDm1Y04Yi3Yn5g== + +base32-encode@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/base32-encode/-/base32-encode-1.2.0.tgz#e150573a5e431af0a998e32bdfde7045725ca453" + integrity sha512-cHFU8XeRyx0GgmoWi5qHMCVRiqU6J3MHWxVgun7jggCBUpVzm1Ir7M9dYr2whjSNc3tFeXfQ/oZjQu/4u55h9A== + dependencies: + to-data-view "^1.1.0" + base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -6618,6 +8081,11 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== +bigi@1.4.2, bigi@^1.1.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/bigi/-/bigi-1.4.2.tgz#9c665a95f88b8b08fc05cfd731f561859d725825" + integrity sha512-ddkU+dFIuEIW8lE7ZwdIAf2UPoM90eaprg5m3YXAVVTmKlqV/9BX4A2M8BOK2yOq6/VgZFVhK6QAxJebhlbhzw== + bignumber.js@^9.0.0, bignumber.js@^9.0.2: version "9.1.2" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" @@ -6628,6 +8096,56 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bindings@^1.3.0, bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bip32@2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/bip32/-/bip32-2.0.5.tgz#e3808a9e97a880dbafd0f5f09ca4a1e14ee275d2" + integrity sha512-zVY4VvJV+b2fS0/dcap/5XLlpqtgwyN8oRkuGgAS1uLOeEp0Yo6Tw2yUTozTtlrMJO3G8n4g/KX/XGFHW6Pq3g== + dependencies: + "@types/node" "10.12.18" + bs58check "^2.1.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + tiny-secp256k1 "^1.1.3" + typeforce "^1.11.5" + wif "^2.0.6" + +bip32@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/bip32/-/bip32-2.0.6.tgz#6a81d9f98c4cd57d05150c60d8f9e75121635134" + integrity sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA== + dependencies: + "@types/node" "10.12.18" + bs58check "^2.1.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + tiny-secp256k1 "^1.1.3" + typeforce "^1.11.5" + wif "^2.0.6" + +bip39@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.2.tgz#2baf42ff3071fc9ddd5103de92e8f80d9257ee32" + integrity sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ== + dependencies: + "@types/node" "11.11.6" + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + +bip39@^3.0.4: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.1.0.tgz#c55a418deaf48826a6ceb34ac55b3ee1577e18a3" + integrity sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A== + dependencies: + "@noble/hashes" "^1.2.0" + bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -6637,6 +8155,11 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +blakejs@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + blob-to-it@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-2.0.5.tgz#5c7af31b139fde37b7f7d8e82dff8358ae38a63f" @@ -6649,12 +8172,17 @@ bluebird@^3.4.6: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.11.9: +bn.js@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +bn.js@^4.0.0, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.12.0: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.2.1: +bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== @@ -6677,6 +8205,15 @@ body-parser@1.20.2, body-parser@^1.20.2: type-is "~1.6.18" unpipe "1.0.0" +borsh@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.6.0.tgz#a7c9eeca6a31ca9e0607cb49f329cb659eb791e1" + integrity sha512-sl5k89ViqsThXQpYa9XDtz1sBl3l1lI313cFUY1HKr+wvMILnb+58xpkqTNrYbelh99dY7K8usxoCusQmqix9Q== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + bowser@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" @@ -6709,6 +8246,16 @@ brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== +browser-level@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" + browser-readablestream-to-it@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" @@ -6724,6 +8271,17 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +browserify-aes@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" + integrity sha512-MMvWM6jpfsiuzY2Y+pRJvHRac3x3rHWQisWoz1dJaF9qDFsD8HdVxB7MyZKeLKeEt0fEjrXXZ0mxgTHSoJusug== + dependencies: + buffer-xor "^1.0.2" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + inherits "^2.0.1" + browserslist@^4.21.10, browserslist@^4.21.5, browserslist@^4.22.2: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" @@ -6734,6 +8292,13 @@ browserslist@^4.21.10, browserslist@^4.21.5, browserslist@^4.22.2: node-releases "^2.0.14" update-browserslist-db "^1.0.13" +bs58@4.0.1, bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + bs58@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" @@ -6741,6 +8306,15 @@ bs58@^5.0.0: dependencies: base-x "^4.0.0" +bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + bs58check@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" @@ -6764,6 +8338,18 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer-pipe@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/buffer-pipe/-/buffer-pipe-0.0.3.tgz#242197681d4591e7feda213336af6c07a5ce2409" + integrity sha512-GlxfuD/NrKvCNs0Ut+7b1IHjylfdegMBxQIlZHj7bObKVQBxB5S84gtm2yu1mQ8/sSggceWBDPY0cPXgvX2MuA== + dependencies: + safe-buffer "^5.1.2" + +buffer-xor@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + buffer@4.9.2: version "4.9.2" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" @@ -6814,11 +8400,50 @@ busboy@1.6.0, busboy@^1.0.0: dependencies: streamsearch "^1.1.0" +bytebuffer@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ== + dependencies: + long "~3" + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +c32check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/c32check/-/c32check-2.0.0.tgz#b9365618b2fb135c0783d03f00605b7b0f90c659" + integrity sha512-rpwfAcS/CMqo0oCqDf3r9eeLgScRE3l/xHDCXhM3UyrfvIn7PrLq63uHh7yYbv8NzaZn5MVsVhIRpQ+5GZ5HyA== + dependencies: + "@noble/hashes" "^1.1.2" + base-x "^4.0.0" + +cacache@^15.2.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + dependencies: + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + cachedir@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" @@ -6834,6 +8459,11 @@ caching-transform@^4.0.0: package-hash "^4.0.0" write-file-atomic "^3.0.0" +caip@^1.1.0, caip@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/caip/-/caip-1.1.1.tgz#c2c2b598b5e052d72c35c8d81b31f864e19c61e3" + integrity sha512-a3v5lteUUOoyRI0U6qe5ayCCGkF2mCmJ5zQMDnOD2vRjgRg6sm9p8TsRC2h4D4beyqRN9RYniphAPnj/+jQC6g== + call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" @@ -6869,7 +8499,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: +camelcase@^6.0.0, camelcase@^6.2.1: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -6884,11 +8514,36 @@ canonicalize@^1.0.1: resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-1.0.8.tgz#24d1f1a00ed202faafd9bf8e63352cd4450c6df1" integrity sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A== +canonicalize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-2.0.0.tgz#32be2cef4446d67fd5348027a384cae28f17226a" + integrity sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w== + +capability@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/capability/-/capability-0.2.5.tgz#51ad87353f1936ffd77f2f21c74633a4dea88801" + integrity sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg== + +cartonne@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cartonne/-/cartonne-3.0.1.tgz#70aea12530b7ca400630326edb7cbbd02031883d" + integrity sha512-Y8DH//DthEUbfvOMGYj/9K3F1RcWkiVu2dB9tGkiBnMqojAXTpu+TUs9FNNx202H0TQdJgbPsQl7Q6NuJ48dCw== + dependencies: + "@ipld/dag-cbor" "^9.0.7" + multiformats "^13.0.0" + multihashes-sync "^2.0.0" + varintes "^2.0.5" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== +catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + cbor-extract@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cbor-extract/-/cbor-extract-2.2.0.tgz#cee78e630cbeae3918d1e2e58e0cebaf3a3be840" @@ -6910,11 +8565,21 @@ cbor-x@^1.3.0: optionalDependencies: cbor-extract "^2.2.0" +cborg@^1.10.2, cborg@^1.6.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" + integrity sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug== + cborg@^4.0.0: version "4.1.3" resolved "https://registry.yarnpkg.com/cborg/-/cborg-4.1.3.tgz#5db6c9bcfe125cf1a653584840b6fe32ecd14580" integrity sha512-I8sAcVtiarz0dZ4IYixNUaL2hIl9cMDjo1ytI57F5fUlekTEO5Im8aXbAvsuayeP76hHSPRMwos0AUuntHJjqQ== +cborg@^4.0.5, cborg@^4.0.8: + version "4.2.1" + resolved "https://registry.yarnpkg.com/cborg/-/cborg-4.2.1.tgz#57170ef570dcdaf93575469a51f3b918a854669d" + integrity sha512-LSdnRagOTx1QZ3/ECLEOMc5fYHaDBjjQkBeBGtZ9KkGa78Opb5UzUxJeuxhmYTZm1DUzdBjj9JT3fcQNRL9ZBg== + chai@^4.3.4: version "4.4.1" resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" @@ -7003,6 +8668,11 @@ chokidar@^3.5.2, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + chownr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" @@ -7013,6 +8683,25 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +classic-level@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.4.1.tgz#169ecf9f9c6200ad42a98c8576af449c1badbaee" + integrity sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "^2.2.2" + node-gyp-build "^4.3.0" + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -7100,6 +8789,11 @@ cluster-key-slot@1.1.2: resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== +codeco@^1.1.0, codeco@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/codeco/-/codeco-1.2.3.tgz#2ec2ea3cac5c9e4f077b502144c00cbabdb212b5" + integrity sha512-nbj0SrL3Cr5nWRwStBDYkA/lEJ9xm9TOjKk7Fo4rEspEC/fb9k3N9MvoK/ygTInBh5dqjsFGC9Bd6AE3GnAyxg== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -7124,6 +8818,16 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colorette@2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + colorette@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" @@ -7134,6 +8838,11 @@ colorette@^2.0.16, colorette@^2.0.7: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== +colors@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.0.tgz#5f20c9fef6945cb1134260aab33bfbdc8295e04e" + integrity sha512-EDpX3a7wHMWFA7PUHWPHNWqOxIIRSJetuwl0AS5Oi/5FMV8kWm69RTlgm00GKjBO1xFHMtBbL49yRtMMdticBw== + combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -7252,6 +8961,11 @@ config-chain@^1.1.13: ini "^1.3.4" proto-list "~1.2.1" +console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + content-disposition@0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -7413,11 +9127,77 @@ crc32-stream@^4.0.2: crc-32 "^1.2.0" readable-stream "^3.4.0" +create-hash@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + integrity sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hash@1.2.0, create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + integrity sha512-23osI7H2SH6Zm4g7A7BTM9+3XicGZkemw00eEhrFViR3EdGru+azj2fMKf9J2zWMGO7AfPgYRdIRL96kkdy8QA== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +cron-parser@^4.0.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.9.0.tgz#0340694af3e46a0894978c6f52a6dbb5c0f11ad5" + integrity sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q== + dependencies: + luxon "^3.2.1" + +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-inspect@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cross-inspect/-/cross-inspect-1.0.0.tgz#5fda1af759a148594d2d58394a9e21364f6849af" + integrity sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ== + dependencies: + tslib "^2.4.0" + cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -7442,6 +9222,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + integrity sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw== + cz-conventional-changelog@3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz#9246947c90404149b3fe2cf7ee91acad3b7d22d2" @@ -7456,6 +9241,22 @@ cz-conventional-changelog@3.3.0: optionalDependencies: "@commitlint/load" ">6.1.1" +dag-jose-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dag-jose-utils/-/dag-jose-utils-3.0.0.tgz#38a0fb1e17c0af5ea148fdd50a8b77671fe329fa" + integrity sha512-gu+XutOTy3kD8fDcA1SMjZ2U0mUOb/hxoRVZaMCizXN7Ssbc5dKOzeXQ4GquV4BdQzs3w5Y7irOpn2plFPIJfg== + dependencies: + "@ipld/dag-cbor" "^7.0.1" + multiformats "^11.0.1" + +dag-jose-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dag-jose-utils/-/dag-jose-utils-4.0.0.tgz#0cdecb555e6dbff2f023f36beee5b2a14d93d337" + integrity sha512-bmmXtVdEKp/zYH8El4GGkMREJioUztz8fzOErfy5dTbyKIVOF61C5sfsZLYCB/wiT/I9+SPNrQeo/Cx6Ik3wJQ== + dependencies: + "@ipld/dag-cbor" "^9.0.7" + multiformats "^13.0.0" + dag-jose@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-4.0.0.tgz#4e65f62af58dd5203b2b094eb52142ffe0cdec1d" @@ -7481,6 +9282,11 @@ data-uri-to-buffer@^4.0.0: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== +dataloader@2.2.2, dataloader@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0" + integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== + date-fns@^2.30.0: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" @@ -7519,6 +9325,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.3.3: + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + decamelize-keys@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" @@ -7537,6 +9350,18 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decode-uri-component@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + dedent@0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -7549,6 +9374,11 @@ deep-eql@^4.1.3: dependencies: type-detect "^4.0.0" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -7591,16 +9421,31 @@ define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@2.0.0: +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@2.0.0, depd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -7616,6 +9461,11 @@ detect-indent@6.1.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== +detect-libc@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + detect-libc@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" @@ -7634,6 +9484,60 @@ dezalgo@^1.0.4: asap "^2.0.0" wrappy "1" +did-jwt@^7.2.0, did-jwt@^7.4.7: + version "7.4.7" + resolved "https://registry.yarnpkg.com/did-jwt/-/did-jwt-7.4.7.tgz#44105fb0a0cdfd78c087de52087422075c674700" + integrity sha512-Apz7nIfIHSKWIMaEP5L/K8xkwByvjezjTG0xiqwKdnNj1x8M0+Yasury5Dm/KPltxi2PlGfRPf3IejRKZrT8mQ== + dependencies: + "@noble/ciphers" "^0.4.0" + "@noble/curves" "^1.0.0" + "@noble/hashes" "^1.3.0" + "@scure/base" "^1.1.3" + canonicalize "^2.0.0" + did-resolver "^4.1.0" + multibase "^4.0.6" + multiformats "^9.6.2" + uint8arrays "3.1.1" + +did-resolver@^4.0.1, did-resolver@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/did-resolver/-/did-resolver-4.1.0.tgz#740852083c4fd5bf9729d528eca5d105aff45eb6" + integrity sha512-S6fWHvCXkZg2IhS4RcVHxwuyVejPR7c+a4Go0xbQ9ps5kILa8viiYQgrM4gfTyeTjJ0ekgJH9gk/BawTpmkbZA== + +dids@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/dids/-/dids-4.0.4.tgz#b84e10f0d41554c91cfe9f06f731bfc1f70cfe60" + integrity sha512-PKxQP0QFqgeMe0dbL7LCRdPJVhZU2ejj8RWCfJ6vro3a+o5o32cWNM1X6YXpdIWq6G5fTJw9KO2dHj2ZzYDc7w== + dependencies: + "@didtools/cacao" "^2.1.0" + "@didtools/codecs" "^1.0.1" + "@didtools/pkh-ethereum" "^0.4.1" + "@stablelib/random" "^1.0.1" + codeco "^1.1.0" + dag-jose-utils "^3.0.0" + did-jwt "^7.2.0" + did-resolver "^4.1.0" + multiformats "^11.0.2" + rpc-utils "^0.6.1" + uint8arrays "^4.0.3" + +dids@^5.0.0, dids@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/dids/-/dids-5.0.2.tgz#5a87b101814a46cdc2ecc0d32fa5c0e6d78e8ccb" + integrity sha512-sxTgrvJtatqdm7dukGbquk23BVvbiaxf3nTKywWaY9AUqwC2IYEo6FG0En2cMl3J1fqMMQXrGg9luh2xDmYOmw== + dependencies: + "@didtools/cacao" "^3.0.1" + "@didtools/codecs" "^3.0.0" + "@didtools/pkh-ethereum" "^0.5.0" + "@stablelib/random" "^1.0.2" + codeco "^1.2.0" + dag-jose-utils "^4.0.0" + did-jwt "^7.4.7" + did-resolver "^4.1.0" + multiformats "^13.0.0" + rpc-utils "^0.6.2" + uint8arrays "^5.0.1" + didyoumean@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" @@ -7739,6 +9643,11 @@ dotenv@^10.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +dset@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.3.tgz#c194147f159841148e8e34ca41f638556d9542d2" + integrity sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ== + eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" @@ -7759,6 +9668,20 @@ ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: dependencies: safe-buffer "^5.0.1" +ecurve@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-1.0.5.tgz#d148e8fe50a674f983bb5bae09da0ea23e10535e" + integrity sha512-1Z3Zu5Nh5LSVGnwEnie1LDoHZByZxG2tk3wftkqeVHrfujmR8O+dOh96HVPxRPh4BjRWX0Z9mpwCYv/O/njgDw== + dependencies: + bigi "^1.1.0" + +ed2curve@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d" + integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ== + dependencies: + tweetnacl "1.x.x" + editorconfig@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-1.0.4.tgz#040c9a8e9a6c5288388b87c2db07028aa89f53a3" @@ -7799,6 +9722,19 @@ elliptic@6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.4: + version "6.5.5" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" + integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -7814,7 +9750,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -encoding@^0.1.13: +encoding@^0.1.12, encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -7881,6 +9817,31 @@ entities@^4.2.0, entities@^4.4.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +eosjs-ecc@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eosjs-ecc/-/eosjs-ecc-4.0.7.tgz#f5246da3b84839fcc237204768ef6e5ea56cc814" + integrity sha512-uuqhqnrDy9XTpKfkhiZqRDUTCCI9oWBalVK5IosL7kpYwA9I3lm68INYFLyWsHpF2xwHqPql8MrMYJ3zfOn5Qg== + dependencies: + "@babel/runtime" "7.6.0" + bigi "1.4.2" + browserify-aes "1.0.6" + bs58 "4.0.1" + bytebuffer "5.0.1" + create-hash "1.1.3" + create-hmac "1.1.6" + ecurve "1.0.5" + randombytes "2.0.5" + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + err-code@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" @@ -7893,6 +9854,15 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +error-polyfill@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/error-polyfill/-/error-polyfill-0.1.3.tgz#df848b61ad8834f7a5db69a70b9913df86721d15" + integrity sha512-XHJk60ufE+TG/ydwp4lilOog549iiQF2OAPhkk9DdiYWMrltz5yhDz/xnKuenNwP7gy3dsibssO5QpVhkrSzzg== + dependencies: + capability "^0.2.5" + o3 "^1.0.3" + u3 "^0.1.1" + error@7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" @@ -8208,6 +10178,11 @@ eslint@^7.32.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +esm@^3.2.25: + version "3.2.25" + resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" + integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== + espree@^7.3.0, espree@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" @@ -8317,6 +10292,14 @@ events@3.3.0, events@^3.2.0, events@^3.3.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +evp_bytestokey@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + execa@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" @@ -8347,6 +10330,11 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" @@ -8446,7 +10434,12 @@ fast-glob@^3.2.9, fast-glob@^3.3.0: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0: +fast-json-patch@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" + integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -8519,6 +10512,11 @@ file-type@^3.3.0: resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -8526,6 +10524,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + finalhandler@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -8611,6 +10614,11 @@ follow-redirects@^1.0.0, follow-redirects@^1.14.7, follow-redirects@^1.14.8, fol resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== +follow-redirects@^1.14.4: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -8739,6 +10747,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fs@0.0.1-security: + version "0.0.1-security" + resolved "https://registry.yarnpkg.com/fs/-/fs-0.0.1-security.tgz#8a7bd37186b6dddf3813f23858b57ecaaf5e41d4" + integrity sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w== + fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -8769,6 +10782,20 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + gaxios@^5.0.0: version "5.1.3" resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-5.1.3.tgz#f7fa92da0fe197c846441e5ead2573d4979e9013" @@ -8882,6 +10909,11 @@ get-them-args@1.3.2: resolved "https://registry.yarnpkg.com/get-them-args/-/get-them-args-1.3.2.tgz#74a20ba8a4abece5ae199ad03f2bcc68fdfc9ba5" integrity sha512-LRn8Jlk+DwZE4GTlDbT3Hikd1wSHgLMme/+7ddlqKd7ldwR6LjJgTVWzBnR01wnYGe4KgrXjg287RaI22UHmAw== +getopts@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" + integrity sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA== + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -8900,6 +10932,11 @@ git-raw-commits@^2.0.0: split2 "^3.0.0" through2 "^4.0.0" +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -9068,7 +11105,12 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +gql-query-builder@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/gql-query-builder/-/gql-query-builder-3.8.0.tgz#d182d127f88abb7d39f7bec2c64f8b4570812e2f" + integrity sha512-q0PncZTrLDeyiH4R7YH1ISM+XGB4NvQ8eTm/Wr/sHSuquFZvqvDpGyMhbgoCZDc8kNAK8GOdfh3nI2GCLREFvw== + +graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -9078,6 +11120,23 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== +graphql-relay@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/graphql-relay/-/graphql-relay-0.10.1.tgz#4729ec92b5cf73879cf76d817ddbee7808d1cec9" + integrity sha512-8AtwSe6B0/b4+YzynHr38PP7S+zX5Vs5LEo0BEzGCPq/THAiHa5H5ZLf3bRbKbok15ADxDQSsGJmlqXeJDDPIw== + +graphql-scalars@^1.22.5: + version "1.23.0" + resolved "https://registry.yarnpkg.com/graphql-scalars/-/graphql-scalars-1.23.0.tgz#486785d1a6f9449277054a92afc7e1fb73f459d6" + integrity sha512-YTRNcwitkn8CqYcleKOx9IvedA8JIERn8BRq21nlKgOr4NEcTaWEG0sT+H92eF3ALTFbPgsqfft4cw+MGgv0Gg== + dependencies: + tslib "^2.5.0" + +graphql@^16.8.0, graphql@^16.8.1: + version "16.8.2" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.2.tgz#54771c7ff195da913f5e70af8044a026d32eca2a" + integrity sha512-cvVIBILwuoSyD54U4cF/UXDh5yAobhNV/tPygI4lZhgOIJQE/WLWC4waBRb4I6bDVYb3OVx3lfHbaQOEoUD5sg== + gtoken@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-7.1.0.tgz#d61b4ebd10132222817f7222b1e6064bd463fc26" @@ -9150,7 +11209,21 @@ has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: dependencies: has-symbols "^1.0.3" -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== @@ -9272,6 +11345,11 @@ htmlparser2@^8.0.2: domutils "^3.0.1" entities "^4.4.0" +http-cache-semantics@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -9283,6 +11361,26 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-errors@^1.7.2: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + http-proxy-middleware@3.0.0-beta.0: version "3.0.0-beta.0" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-3.0.0-beta.0.tgz#4c32cd1a190ec3c5d4e255b88c267ef47de0ec32" @@ -9339,6 +11437,13 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -9408,6 +11513,11 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -9426,7 +11536,7 @@ ini@4.1.1: resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== -ini@^1.3.4: +ini@^1.3.4, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -9493,6 +11603,11 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -9500,6 +11615,19 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + +ip-regex@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -9521,7 +11649,7 @@ ipfs-core-types@^0.14.1: ipfs-unixfs "^9.0.0" multiformats "^11.0.0" -ipfs-core-utils@^0.18.0: +ipfs-core-utils@^0.18.0, ipfs-core-utils@^0.18.1: version "0.18.1" resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.18.1.tgz#d5fae11bfdb511749c6f905b0d0da3174eb50909" integrity sha512-P7jTpdfvlyBG3JR4o+Th3QJADlmXmwMxbkjszXry6VAjfSfLIIqXsdeYPoVRkV69GFEeQozuz2k/jR+U8cUH/Q== @@ -9547,6 +11675,31 @@ ipfs-core-utils@^0.18.0: timeout-abort-controller "^3.0.0" uint8arrays "^4.0.2" +ipfs-http-client@^60.0.0: + version "60.0.1" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-60.0.1.tgz#d2e9ab430aad43a92a6e44008e534afba4fd22b9" + integrity sha512-amwM5TNuf077J+/q27jPHfatC05vJuIbX6ZnlYLjc2QsjOCKsORNBqV3brNw7l+fPrijV1yrwEDLG3JEnKsfMw== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-json" "^10.0.0" + "@ipld/dag-pb" "^4.0.0" + "@libp2p/logger" "^2.0.5" + "@libp2p/peer-id" "^2.0.0" + "@multiformats/multiaddr" "^11.1.5" + any-signal "^3.0.0" + dag-jose "^4.0.0" + err-code "^3.0.1" + ipfs-core-types "^0.14.1" + ipfs-core-utils "^0.18.1" + ipfs-utils "^9.0.13" + it-first "^2.0.0" + it-last "^2.0.0" + merge-options "^3.0.4" + multiformats "^11.0.0" + parse-duration "^1.0.0" + stream-to-it "^0.2.2" + uint8arrays "^4.0.2" + ipfs-unixfs@^11.1.3: version "11.1.3" resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-11.1.3.tgz#b53f36d8d34022516d6cfead4305839712c1dab2" @@ -9629,6 +11782,11 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -9682,6 +11840,11 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + is-negative-zero@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" @@ -9834,6 +11997,11 @@ isomorphic-ws@^5.0.0: resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== +isows@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" + integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -9909,11 +12077,26 @@ it-all@^2.0.0: resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== +it-all@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-3.0.6.tgz#30a4f922ae9ca0945b0f720d3478ae6f5b6707ab" + integrity sha512-HXZWbxCgQZJfrv5rXvaVeaayXED8nTKx9tj9fpBhmcUJcedVZshMMMqTj0RG2+scGypb9Ut1zd1ifbf3lA8L+Q== + +it-batch@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-3.0.6.tgz#0bcda35bf1c600e821c6d5f4d2446fe85a26ab1d" + integrity sha512-pQAAlSvJ4aV6xM/6LRvkPdKSKXxS4my2fGzNUxJyAQ8ccFdxPmK1bUuF5OoeUDkcdrbs8jtsmc4DypCMrGY6sg== + it-first@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== +it-first@^3.0.4: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-3.0.6.tgz#f532f0f36fe9bf0c291e0162b9d3375d59fe8f05" + integrity sha512-ExIewyK9kXKNAplg2GMeWfgjUcfC1FnUXz/RPfAvIXby+w7U4b3//5Lic0NV03gXT8O/isj5Nmp6KiY0d45pIQ== + it-glob@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" @@ -10002,6 +12185,13 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" +jet-logger@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jet-logger/-/jet-logger-1.2.2.tgz#f3866c0a34b6dc43f03bf4479ca677a1110156bc" + integrity sha512-Kbw4G3BC45+Umz5XBnsE50pHplruJTVKGRy5X1YfCu3Te7f8ggTL8Tm10YegAD2QP41MVQ3o/Y9MFAZzfythqw== + dependencies: + colors "1.3.0" + jiti@^1.19.1: version "1.21.0" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" @@ -10044,7 +12234,12 @@ js-cookie@^3.0.5: resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== -js-sha3@0.8.0: +js-sha256@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" + integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== + +js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== @@ -10069,6 +12264,11 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -10096,6 +12296,11 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-ptr@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/json-ptr/-/json-ptr-3.1.1.tgz#184c3d48db659fa9bbc1519f7db6f390ddffb659" + integrity sha512-SiSJQ805W1sDUCD1+/t1/1BIrveq2Fe9HJqENxZmMCILmrPI7WhS/pePpIOx85v6/H2z1Vy7AI08GV2TzfXocg== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -10106,6 +12311,11 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +json-schema-typed@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-8.0.1.tgz#826ee39e3b6cef536f85412ff048d3ff6f19dfa0" + integrity sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg== + json-schema@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" @@ -10157,6 +12367,15 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +jsontokens@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsontokens/-/jsontokens-4.0.1.tgz#c3edf74a01160b2ca6d62b021b288edd59d1184a" + integrity sha512-+MO415LEN6M+3FGsRz4wU20g7N2JA+2j9d9+pGaNJHviG4L8N0qzavGyENw6fJqsq9CcrHOIL6iWX5yeTZ86+Q== + dependencies: + "@noble/hashes" "^1.1.2" + "@noble/secp256k1" "^1.6.3" + base64-js "^1.5.1" + jsonwebtoken@^8.5.1: version "8.5.1" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" @@ -10217,6 +12436,40 @@ jws@^4.0.0: jwa "^2.0.0" safe-buffer "^5.0.1" +key-did-provider-ed25519@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/key-did-provider-ed25519/-/key-did-provider-ed25519-3.0.2.tgz#5c336954680db2ae03e9d4a25cdbde30b72062b5" + integrity sha512-4Yw0CeO1hKRaUsh9NIz4tn4Ysr09CdoJItyT0vHjd5iedJ+FvVt7pTbNr7IY0/+8mWvYslutAK5LFrwu5agpsA== + dependencies: + "@noble/curves" "^1.1.0" + did-jwt "^7.2.0" + dids "^4.0.4" + fast-json-stable-stringify "^2.1.0" + rpc-utils "^0.6.2" + uint8arrays "^4.0.3" + +key-did-provider-ed25519@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/key-did-provider-ed25519/-/key-did-provider-ed25519-4.0.2.tgz#f1ae847257e5aefff7ac6899630231034e62da05" + integrity sha512-bnnRGuuUtylKGMVmgXVSoGccBg87roFi6xy5dQmTgNqnCmrxBBUatYoVimcnA+SGCFqi2qk6B9dD10Ed4rTZPg== + dependencies: + "@noble/curves" "^1.3.0" + did-jwt "^7.4.7" + dids "^5.0.2" + fast-json-stable-stringify "^2.1.0" + rpc-utils "^0.6.2" + uint8arrays "^5.0.1" + +key-did-resolver@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/key-did-resolver/-/key-did-resolver-4.0.0.tgz#011910ef2db7db82977466ac6850b4976f8cd761" + integrity sha512-+U2nd/0rjO4Yqe2hnHBD7ygcLRfT43Oje9IIjv1BlBi0lopwxZpIFQ7GekguOHK02r+JGdl8mpJVNHs5lvXVOA== + dependencies: + "@noble/curves" "^1.2.0" + multiformats "^13.0.0" + uint8arrays "^5.0.1" + varint "^6.0.0" + keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -10237,6 +12490,26 @@ kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +knex@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/knex/-/knex-2.5.1.tgz#a6c6b449866cf4229f070c17411f23871ba52ef9" + integrity sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA== + dependencies: + colorette "2.0.19" + commander "^10.0.0" + debug "4.3.4" + escalade "^3.1.1" + esm "^3.2.25" + get-package-type "^0.1.0" + getopts "2.3.0" + interpret "^2.2.0" + lodash "^4.17.21" + pg-connection-string "2.6.1" + rechoir "^0.8.0" + resolve-from "^5.0.0" + tarn "^3.0.2" + tildify "2.0.0" + kubo-rpc-client@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/kubo-rpc-client/-/kubo-rpc-client-3.0.4.tgz#4027b0abeb848d4a5bdb18a7d614af5173966575" @@ -10287,6 +12560,43 @@ leac@^0.6.0: resolved "https://registry.yarnpkg.com/leac/-/leac-0.6.0.tgz#dcf136e382e666bd2475f44a1096061b70dc0912" integrity sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg== +least-recent@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/least-recent/-/least-recent-1.0.3.tgz#8c11b57c3874dac051f65e265b690e10a35390c6" + integrity sha512-PH9ZuFAKFf5fY7j0wizus6f/Ni2wSaby4eQYEUmR+sK6lY7OEbVz/iEh/tTgEmgOivWJhay89wVyUe5VnXoUSQ== + dependencies: + nanoevents "^8.0.0" + +leb128@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/leb128/-/leb128-0.0.5.tgz#84524a86ef7799fb3933ce41345f6490e27ac948" + integrity sha512-elbNtfmu3GndZbesVF6+iQAfVjOXW9bM/aax9WwMlABZW+oK9sbAZEXoewaPHmL34sxa8kVwWsru8cNE/yn2gg== + dependencies: + bn.js "^5.0.0" + buffer-pipe "0.0.3" + +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + +level@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/level/-/level-8.0.1.tgz#737161db1bc317193aca4e7b6f436e7e1df64379" + integrity sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ== + dependencies: + abstract-level "^1.0.4" + browser-level "^1.0.1" + classic-level "^1.2.0" + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -10373,6 +12683,16 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -10413,6 +12733,11 @@ lodash.isinteger@^4.0.4: resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== + lodash.isnumber@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" @@ -10486,6 +12811,14 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +logfmt@^1.3.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/logfmt/-/logfmt-1.4.0.tgz#6cb1e62cf65143a3248aa0f2823c3bd436e2251f" + integrity sha512-p1Ow0C2dDJYaQBhRHt+HVMP6ELuBm4jYSYNHPMfz0J5wJ9qA6/7oBOlBZBfT1InqguTYcvJzNea5FItDxTcbyw== + dependencies: + split "0.2.x" + through "2.3.x" + long@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/long/-/long-2.4.0.tgz#9fa180bb1d9500cdc29c4156766a1995e1f4524f" @@ -10496,6 +12829,11 @@ long@^5.0.0: resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg== + longest@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-2.0.1.tgz#781e183296aa94f6d4d916dc335d0d17aefa23f8" @@ -10534,6 +12872,11 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== +luxon@^3.2.1: + version "3.4.4" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" + integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== + make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -10553,6 +12896,28 @@ make-error@^1, make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +make-fetch-happen@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== + dependencies: + agentkeepalive "^4.1.3" + cacache "^15.2.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.2" + promise-retry "^2.0.1" + socks-proxy-agent "^6.0.0" + ssri "^8.0.0" + map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -10563,6 +12928,11 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +mapmoize@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/mapmoize/-/mapmoize-1.2.1.tgz#a491a01dfc9f851478120057d98af9b160edf4d7" + integrity sha512-LK8ArSM1wbfRPTnl+LpdxW1pwkfY6GxtM9p+STr6aDtM7ImR8jLuf4ekei43/AN0f7XDSrohzwwK57eGHSDAuA== + marked@7.0.4: version "7.0.4" resolved "https://registry.yarnpkg.com/marked/-/marked-7.0.4.tgz#e2558ee2d535b9df6a27c6e282dc603a18388a6d" @@ -10575,6 +12945,15 @@ md-to-react-email@4.1.0: dependencies: marked "7.0.4" +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -10646,6 +13025,11 @@ methods@^1.1.2, methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +micro-base@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/micro-base/-/micro-base-0.9.0.tgz#09cfe20285bec0ea97f41dc3d10e3fba3d0266ee" + integrity sha512-4+tOMKidYT5nQ6/UNmYrGVO5PMcnJdfuR4NC8HK8s2H61B4itOhA9yrsjBdqGV7ecdtej36x3YSIfPLRmPrspg== + micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -10681,6 +13065,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -10745,12 +13134,51 @@ minimist@1.2.7: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== -minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.6: +minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minipass@^3.0.0: +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== + dependencies: + minipass "^3.1.0" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: version "3.3.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== @@ -10772,7 +13200,7 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== -minizlib@^2.1.1: +minizlib@^2.0.0, minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -10780,6 +13208,11 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mkdirp@^0.5.4: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" @@ -10823,6 +13256,11 @@ module-details-from-path@^1.0.3: resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + mri@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" @@ -10838,7 +13276,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@2.1.3, ms@^2.0.0, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -10866,7 +13304,14 @@ multer@^1.4.5-lts.1: type-is "^1.6.4" xtend "^4.0.0" -multiformats@^11.0.0, multiformats@^11.0.2: +multibase@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" + integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + +multiformats@^11.0.0, multiformats@^11.0.1, multiformats@^11.0.2: version "11.0.2" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== @@ -10881,6 +13326,24 @@ multiformats@^13.0.0, multiformats@^13.1.0: resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.1.0.tgz#5aa9d2175108a448fc3bdb54ba8a3d0b6cab3ac3" integrity sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ== +multiformats@^9.4.2, multiformats@^9.5.4, multiformats@^9.6.2: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multihashes-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/multihashes-sync/-/multihashes-sync-2.0.0.tgz#777c6ab4b32862075a775cec15f09c1e69d426df" + integrity sha512-hoBamCqXuVmeo4NAY52dbYuUIKHy3/FcqxyKZSbhqicR2SbUjgiY4FoDvE8BV40dPfAJTT6pQpqYeuKxqKwOLQ== + dependencies: + "@noble/hashes" "^1.3.3" + multiformats "^13.0.0" + +mustache@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" + integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -10895,7 +13358,17 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.1.20, nanoid@^3.3.6, nanoid@^3.3.7: +nan@^2.13.2: + version "2.20.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.20.0.tgz#08c5ea813dd54ed16e5bd6505bf42af4f7838ca3" + integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw== + +nanoevents@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/nanoevents/-/nanoevents-8.0.0.tgz#d58d5cf69b172d794707b2468bdaccc415ad23b6" + integrity sha512-bYYwNCdNc5ea6/Lwh1uioU1/7aaKa3EPmNQ2weTm8PWSpbWrsaWHePe0Zq4SF+D3F3JX3cn+QdktOPCf1meOqw== + +nanoid@^3.1.20, nanoid@^3.3.1, nanoid@^3.3.6, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== @@ -10905,6 +13378,16 @@ nanoid@^4.0.0: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +napi-macros@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" + integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== + native-fetch@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" @@ -10920,7 +13403,24 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3: +near-api-js@^0.44.2: + version "0.44.2" + resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-0.44.2.tgz#e451f68f2c56bd885c7b918db5818a3e6e9423d0" + integrity sha512-eMnc4V+geggapEUa3nU2p8HSHn/njtloI4P2mceHQWO8vDE1NGpnAw8FuTBrLmXSgIv9m6oocgFc9t3VNf5zwg== + dependencies: + bn.js "5.2.0" + borsh "^0.6.0" + bs58 "^4.0.0" + depd "^2.0.0" + error-polyfill "^0.1.3" + http-errors "^1.7.2" + js-sha256 "^0.9.0" + mustache "^4.0.0" + node-fetch "^2.6.1" + text-encoding-utf-8 "^1.0.2" + tweetnacl "^1.0.1" + +negotiator@0.6.3, negotiator@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -10953,12 +13453,29 @@ next@14.1.0: "@next/swc-win32-ia32-msvc" "14.1.0" "@next/swc-win32-x64-msvc" "14.1.0" +node-abi@^3.3.0: + version "3.65.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.65.0.tgz#ca92d559388e1e9cab1680a18c1a18757cdac9d3" + integrity sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA== + dependencies: + semver "^7.3.5" + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-addon-api@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" + integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== + node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== -node-fetch@^2.6.8, node-fetch@^2.6.9: +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.8, node-fetch@^2.6.9: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -10986,6 +13503,27 @@ node-gyp-build-optional-packages@5.1.1: dependencies: detect-libc "^2.0.1" +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.8.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" + integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== + +node-gyp@8.x: + version "8.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^9.1.0" + nopt "^5.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -11027,6 +13565,13 @@ noms@0.0.0: inherits "^2.0.1" readable-stream "~1.0.31" +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + nopt@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.0.tgz#067378c68116f602f552876194fd11f1292503d7" @@ -11078,6 +13623,16 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +npmlog@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + nyc@^15.1.0: version "15.1.0" resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" @@ -11111,6 +13666,13 @@ nyc@^15.1.0: test-exclude "^6.0.0" yargs "^15.0.2" +o3@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/o3/-/o3-1.0.3.tgz#192ce877a882dfa6751f0412a865fafb2da1dac0" + integrity sha512-f+4n+vC6s4ysy7YO7O2gslWZBUu8Qj2i2OUJOvjRxQva7jVjYjB29jrr9NCjmxZQR0gzrOcv1RnqoYOeMs5VRQ== + dependencies: + capability "^0.2.5" + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -11136,6 +13698,13 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-sizeof@^2.6.1: + version "2.6.4" + resolved "https://registry.yarnpkg.com/object-sizeof/-/object-sizeof-2.6.4.tgz#cdcb6697ac20978ddfa57d6d4f5fae8e7b8509dc" + integrity sha512-YuJAf7Bi61KROcYmXm8RCeBrBw8UOaJDzTm1gp0eU7RjYi1xEte3/Nmg/VyPaHcJZ3sNojs1Y0xvSrgwkLmcFw== + dependencies: + buffer "^6.0.3" + object.assign@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" @@ -11414,6 +13983,17 @@ pathval@^1.1.1: resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== +pbkdf2@^3.0.9: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + peberminta@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/peberminta/-/peberminta-0.9.0.tgz#8ec9bc0eb84b7d368126e71ce9033501dca2a352" @@ -11429,6 +14009,34 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== +pg-boss@^8.2.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/pg-boss/-/pg-boss-8.4.2.tgz#4c300e3683e6acd7c157481544a49b8f565fe5e5" + integrity sha512-xcl/G8C7qlCyrcvlQvgLVBIe68zO0XfZc6K86/G9fq/mL+YQMEo1spW6lHqsPpNi2KGlpXwBEL/XZxkMa19eRA== + dependencies: + cron-parser "^4.0.0" + delay "^5.0.0" + lodash.debounce "^4.0.8" + p-map "^4.0.0" + pg "^8.5.1" + serialize-error "^8.1.0" + uuid "^9.0.0" + +pg-cloudflare@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98" + integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== + +pg-connection-string@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.1.tgz#78c23c21a35dd116f48e12e23c0965e8d9e2cbfb" + integrity sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg== + +pg-connection-string@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.4.tgz#f543862adfa49fa4e14bc8a8892d2a84d754246d" + integrity sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA== + pg-int8@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" @@ -11439,12 +14047,22 @@ pg-numeric@1.0.2: resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a" integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== +pg-pool@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.2.tgz#3a592370b8ae3f02a7c8130d245bc02fa2c5f3f2" + integrity sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg== + pg-protocol@*: version "1.6.0" resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== -pg-types@^2.2.0: +pg-protocol@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.1.tgz#21333e6d83b01faaebfe7a33a7ad6bfd9ed38cb3" + integrity sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg== + +pg-types@^2.1.0, pg-types@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== @@ -11468,6 +14086,26 @@ pg-types@^4.0.1: postgres-interval "^3.0.0" postgres-range "^1.1.1" +pg@^8.11.3, pg@^8.5.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.12.0.tgz#9341724db571022490b657908f65aee8db91df79" + integrity sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ== + dependencies: + pg-connection-string "^2.6.4" + pg-pool "^3.6.2" + pg-protocol "^1.6.1" + pg-types "^2.1.0" + pgpass "1.x" + optionalDependencies: + pg-cloudflare "^1.1.1" + +pgpass@1.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== + dependencies: + split2 "^4.1.0" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -11692,6 +14330,24 @@ postgres-range@^1.1.1: resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.4.tgz#a59c5f9520909bcec5e63e8cf913a92e4c952863" integrity sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w== +prebuild-install@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056" + integrity sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -11779,6 +14435,19 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -11894,12 +14563,22 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== +query-string@^7.1.0: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== + dependencies: + decode-uri-component "^0.2.2" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== -queue-microtask@^1.2.2: +queue-microtask@^1.2.2, queue-microtask@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== @@ -11919,7 +14598,14 @@ race-signal@^1.0.2: resolved "https://registry.yarnpkg.com/race-signal/-/race-signal-1.0.2.tgz#e42379fba0cec4ee8dab7c9bbbd4aa6e0d14c25f" integrity sha512-o3xNv0iTcIDQCXFlF6fPAMEBRjFxssgGoRqLbg06m+AdzEXXLUmoNOoUHTVz2NoBI8hHwKFKoC6IqyNtWr2bww== -randombytes@^2.1.0: +randombytes@2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" + integrity sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg== + dependencies: + safe-buffer "^5.1.0" + +randombytes@^2.0.1, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -11941,6 +14627,16 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + rdf-canonize@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/rdf-canonize/-/rdf-canonize-3.4.0.tgz#87f88342b173cc371d812a07de350f0c1aa9f058" @@ -12148,6 +14844,13 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -12173,6 +14876,11 @@ reflect-metadata@^0.1.13: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.14.tgz#24cf721fe60677146bb77eeb0e1f9dece3d65859" integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== +regenerator-runtime@^0.13.2: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" @@ -12200,6 +14908,11 @@ release-zalgo@^1.0.0: dependencies: es6-error "^4.0.1" +remixml@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/remixml/-/remixml-7.0.5.tgz#9efef9940ab8b210ff4860571b54707001a32a13" + integrity sha512-fmCQNur7ozfm6cDcMrKnuWm6sh4RDcAWTCXf5sRCj7MATcuG02mZ10iOx1uzOmsO6xlaRMFbaKk7MYSzBncaag== + request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -12289,7 +15002,7 @@ resolve-global@1.0.0, resolve-global@^1.0.0: dependencies: global-dirs "^0.1.1" -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -12311,6 +15024,11 @@ retimer@^3.0.0: resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -12335,11 +15053,38 @@ rimraf@^5.0.1: dependencies: glob "^10.3.7" +ripemd160-min@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" + integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rpc-utils@^0.6.1, rpc-utils@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rpc-utils/-/rpc-utils-0.6.2.tgz#3cab779f93048eda69ff198c58b1a2c2e35e3fa6" + integrity sha512-kzk1OflbBckfDBAo8JwsmtQSHzj+6hxRt5G+u8A8ZSmunBw1nhWvRkSq8j1+EvWBqBRLy1aiGLUW5644CZqQtA== + dependencies: + nanoid "^3.3.1" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + run-parallel@^1.1.6, run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -12364,7 +15109,7 @@ safe-array-concat@^1.1.0: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -12429,6 +15174,29 @@ scrypt-js@3.0.1: resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== +scryptsy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" + integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== + +secp256k1@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.1.tgz#b9570ca26ace9e74c3171512bba253da9c0b6d60" + integrity sha512-iGRjbGAKfXMqhtdkkuNxsgJQfJO8Oo78Rm7DAvsG3XKngq+nJIOGqrCSXcQqIVsmCj0wFanE5uTKFxV3T9j2wg== + dependencies: + elliptic "^6.5.2" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +secp256k1@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + secure-json-parse@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" @@ -12494,6 +15262,13 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" +serialize-error@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-8.1.0.tgz#3a069970c712f78634942ddd50fbbc0eaebe2f67" + integrity sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ== + dependencies: + type-fest "^0.20.2" + serialize-javascript@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -12555,6 +15330,14 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -12606,7 +15389,7 @@ side-channel@^1.0.4, side-channel@^1.0.6: get-intrinsic "^1.2.4" object-inspect "^1.13.1" -signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -12616,6 +15399,20 @@ signal-exit@^4.0.1: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + simple-update-notifier@^1.0.7: version "1.1.0" resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" @@ -12655,6 +15452,11 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + socket.io-adapter@~2.5.2: version "2.5.4" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz#4fdb1358667f6d68f25343353bd99bd11ee41006" @@ -12694,6 +15496,23 @@ socket.io@4.7.3: socket.io-adapter "~2.5.2" socket.io-parser "~4.2.4" +socks-proxy-agent@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" + integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + sonic-boom@^3.0.0, sonic-boom@^3.7.0: version "3.8.0" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.8.0.tgz#e442c5c23165df897d77c3c14ef3ca40dec66a66" @@ -12772,6 +15591,11 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + split2@^3.0.0: version "3.2.2" resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" @@ -12779,16 +15603,40 @@ split2@^3.0.0: dependencies: readable-stream "^3.0.0" -split2@^4.0.0: +split2@^4.0.0, split2@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== +split@0.2.x: + version "0.2.10" + resolved "https://registry.yarnpkg.com/split/-/split-0.2.10.tgz#67097c601d697ce1368f418f06cd201cf0521a57" + integrity sha512-e0pKq+UUH2Xq/sXbYpZBZc3BawsfDZ7dgv+JtRTUPNcvF5CMR4Y9cvJqkMY0MoxWzTHvZuz1beg6pNEKlszPiQ== + dependencies: + through "2" + +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +sqlite3@^5.0.8: + version "5.1.7" + resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.1.7.tgz#59ca1053c1ab38647396586edad019b1551041b7" + integrity sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog== + dependencies: + bindings "^1.5.0" + node-addon-api "^7.0.0" + prebuild-install "^7.1.1" + tar "^6.1.11" + optionalDependencies: + node-gyp "8.x" + sshpk@^1.7.0: version "1.18.0" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" @@ -12804,6 +15652,13 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^8.0.0, ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + stacktrace-parser@0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" @@ -12816,6 +15671,11 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +"statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + stream-browserify@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" @@ -12836,6 +15696,11 @@ streamsearch@^1.1.0: resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + string-argv@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" @@ -12846,7 +15711,7 @@ string-template@~0.2.1: resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" integrity sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -12967,6 +15832,11 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1. resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + strnum@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" @@ -13106,7 +15976,17 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar-stream@^2.2.0: +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4, tar-stream@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== @@ -13117,6 +15997,18 @@ tar-stream@^2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" +tar@^6.0.2, tar@^6.1.11, tar@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + tar@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" @@ -13129,6 +16021,11 @@ tar@^6.2.0: mkdirp "^1.0.3" yallist "^4.0.0" +tarn@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" + integrity sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ== + terser-webpack-plugin@^5.3.10: version "5.3.10" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" @@ -13159,6 +16056,11 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" @@ -13214,11 +16116,16 @@ through2@^4.0.0: dependencies: readable-stream "3" -"through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8: +through@2, through@2.3.x, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +tildify@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-2.0.0.tgz#f205f3674d677ce698b7067a99e949ce03b4754a" + integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== + timeout-abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz#dd57ffca041652c03769904f8d95afd93fb95595" @@ -13226,6 +16133,17 @@ timeout-abort-controller@^3.0.0: dependencies: retimer "^3.0.0" +tiny-secp256k1@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" + integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== + dependencies: + bindings "^1.3.0" + bn.js "^4.11.8" + create-hmac "^1.1.7" + elliptic "^6.4.0" + nan "^2.13.2" + tiny-typed-emitter@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" @@ -13238,6 +16156,11 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +to-data-view@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/to-data-view/-/to-data-view-1.1.0.tgz#08d6492b0b8deb9b29bdf1f61c23eadfa8994d00" + integrity sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -13365,6 +16288,11 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tweetnacl@1.x.x, tweetnacl@^1.0.1, tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -13476,11 +16404,21 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +typedarray-to-buffer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz#cdd2933c61dd3f5f02eda5d012d441f95bfeb50a" + integrity sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ== + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== +typeforce@^1.11.5: + version "1.18.0" + resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== + typescript@5.1.6: version "5.1.6" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" @@ -13496,6 +16434,11 @@ typescript@^5.0.0: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.2.tgz#0ae9cebcfae970718474fe0da2c090cad6577372" integrity sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ== +u3@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/u3/-/u3-0.1.1.tgz#5f52044f42ee76cd8de33148829e14528494b73b" + integrity sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w== + uint8-varint@^2.0.1, uint8-varint@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/uint8-varint/-/uint8-varint-2.0.4.tgz#85be52b3849eb30f2c3640a2df8a14364180affb" @@ -13511,7 +16454,14 @@ uint8arraylist@^2.0.0, uint8arraylist@^2.1.2, uint8arraylist@^2.4.3, uint8arrayl dependencies: uint8arrays "^5.0.1" -uint8arrays@^4.0.2, uint8arrays@^4.0.3: +uint8arrays@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^4.0.2, uint8arrays@^4.0.3, uint8arrays@^4.0.6: version "4.0.10" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.10.tgz#3ec5cde3348903c140e87532fc53f46b8f2e921f" integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== @@ -13545,13 +16495,34 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici@^5.12.0, undici@^5.21.2: +undici@^5.12.0: version "5.28.3" resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.3.tgz#a731e0eff2c3fcfd41c1169a869062be222d1e5b" integrity sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA== dependencies: "@fastify/busboy" "^2.0.0" +undici@^5.21.2: + version "5.28.4" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068" + integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== + dependencies: + "@fastify/busboy" "^2.0.0" + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + universalify@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" @@ -13575,7 +16546,7 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" -uri-js@^4.2.2: +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -13674,11 +16645,28 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-or-promise@^1.0.11, value-or-promise@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" + integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== + varint@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== +varintes@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/varintes/-/varintes-2.0.5.tgz#e5e2e53b10300ca4d5c0bacae2a826f7b3b2cab5" + integrity sha512-iF3jlHLko9NrYjaUZvT3VwypP3V20KNNhT1tzqblyIyrVjNiW7HseGOhuP+apgZBp9X/8+5pxa7kNikhJeZlIw== + +varuint-bitcoin@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" + integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== + dependencies: + safe-buffer "^5.1.1" + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -13693,6 +16681,20 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +viem@^1.21.4: + version "1.21.4" + resolved "https://registry.yarnpkg.com/viem/-/viem-1.21.4.tgz#883760e9222540a5a7e0339809202b45fe6a842d" + integrity sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@scure/bip32" "1.3.2" + "@scure/bip39" "1.2.1" + abitype "0.9.8" + isows "1.0.3" + ws "8.13.0" + watchpack@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" @@ -13795,13 +16797,27 @@ which@^1.2.14: dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" +wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +wif@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" + integrity sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ== + dependencies: + bs58check "<3.0.0" + word-wrap@^1.0.3: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" @@ -13859,6 +16875,11 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + ws@^8.15.0, ws@^8.7.0: version "8.16.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" @@ -13902,6 +16923,13 @@ xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +xxhashjs@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== + dependencies: + cuint "^0.2.2" + y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index a3d5e1766..e3825305f 100755 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -52,7 +52,7 @@ services: - .env ports: - "5420:5420" - - "9229:9229" + - "9228:9228" - "9277:9277" - "5555:5555" extra_hosts: @@ -203,11 +203,26 @@ services: context: ./desci-media-isolated target: dev container_name: "media_isolated" + extra_hosts: + - host.docker.internal:host-gateway volumes: - ./desci-media-isolated:/usr/src/app ports: - "9777:9777" # debugger - # - "7771:7771" # Uncomment if you want to test the media server from the host machine + - "7771:7771" # Uncomment if you want to test the media server from the host machine + + grobid: + image: lfoppiano/grobid:0.8.0 + container_name: grobid + ports: + - "8070:8070" + environment: + - JAVA_OPTS=-Xmx2G -Xms2G + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8070/api/isalive"] + interval: 30s + timeout: 10s + retries: 5 # desci_nodes_backend_test: # container_name: 'be_test_boilerplate' diff --git a/docker-compose.test.yml b/docker-compose.test.yml index e8d9f2e55..3247cf259 100755 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -41,8 +41,8 @@ services: environment: IPFS_SWARM_KEY: "/key/swarm/psk/1.0.0/\n/base16/\n9d002c50635a479d29dcc0ccb49d862952a0dcc52baddd253167adcd496c8d04" ports: - - "5002:5001" - - "8090:8080" + - "5003:5001" + - "8091:8080" volumes: - ./local-data/test/ipfs:/data/ipfs diff --git a/nodes-lib/package-lock.json b/nodes-lib/package-lock.json index f45c6184c..d27e42276 100644 --- a/nodes-lib/package-lock.json +++ b/nodes-lib/package-lock.json @@ -1,16 +1,16 @@ { "name": "@desci-labs/nodes-lib", - "version": "0.0.5-rc9", + "version": "0.0.7-rc0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@desci-labs/nodes-lib", - "version": "0.0.5-rc9", + "version": "0.0.7-rc0", "license": "MIT", "dependencies": { "@desci-labs/desci-codex-lib": "^1.1.7", - "@desci-labs/desci-contracts": "^0.2.3-rc3", + "@desci-labs/desci-contracts": "^0.2.6", "@desci-labs/desci-models": "^0.2.3-rc1", "@didtools/cacao": "^3.0.1", "@didtools/pkh-ethereum": "^0.5.0", @@ -1010,9 +1010,9 @@ } }, "node_modules/@desci-labs/desci-contracts": { - "version": "0.2.3-rc3", - "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.3-rc3.tgz", - "integrity": "sha512-3OmnrMa+L9qK/iNkuPS2HS/ihsNFKly3X8vjQK0cHhTH2qh6/FBbcIK77uOF9yi0ldOm+VfPSL2p7s8BC+bKow==" + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.6.tgz", + "integrity": "sha512-1PTKgGtHIrWZ/UMIrOs/tVrAdGUQC+QW+OLiBlEi2sV2UXsazZTjMbiGxjErP+VBPoMkFbfsWiLMvgjs6Pw/5A==" }, "node_modules/@desci-labs/desci-models": { "version": "0.2.3-rc1", @@ -10840,9 +10840,9 @@ } }, "@desci-labs/desci-contracts": { - "version": "0.2.3-rc3", - "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.3-rc3.tgz", - "integrity": "sha512-3OmnrMa+L9qK/iNkuPS2HS/ihsNFKly3X8vjQK0cHhTH2qh6/FBbcIK77uOF9yi0ldOm+VfPSL2p7s8BC+bKow==" + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@desci-labs/desci-contracts/-/desci-contracts-0.2.6.tgz", + "integrity": "sha512-1PTKgGtHIrWZ/UMIrOs/tVrAdGUQC+QW+OLiBlEi2sV2UXsazZTjMbiGxjErP+VBPoMkFbfsWiLMvgjs6Pw/5A==" }, "@desci-labs/desci-models": { "version": "0.2.3-rc1", diff --git a/nodes-lib/package.json b/nodes-lib/package.json index 4964b363d..ef439c9cd 100644 --- a/nodes-lib/package.json +++ b/nodes-lib/package.json @@ -1,6 +1,6 @@ { "name": "@desci-labs/nodes-lib", - "version": "0.0.6", + "version": "0.0.8", "homepage": "https://github.com/desci-labs/nodes#readme", "description": "Stand-alone client library for interacting with desci-server", "repository": { @@ -27,7 +27,7 @@ }, "dependencies": { "@desci-labs/desci-codex-lib": "^1.1.7", - "@desci-labs/desci-contracts": "^0.2.3-rc3", + "@desci-labs/desci-contracts": "^0.2.6", "@desci-labs/desci-models": "^0.2.3-rc1", "@didtools/cacao": "^3.0.1", "@didtools/pkh-ethereum": "^0.5.0", diff --git a/nodes-lib/src/api.ts b/nodes-lib/src/api.ts index a8965a2e3..0385a80f2 100644 --- a/nodes-lib/src/api.ts +++ b/nodes-lib/src/api.ts @@ -22,13 +22,17 @@ import { import FormData from "form-data"; import { createReadStream } from "fs"; import type { NodeIDs } from "@desci-labs/desci-codex-lib"; -import { publish } from "./publish.js"; +import { legacyPublish, publish } from "./publish.js"; import type { ResearchObjectDocument } from "./automerge.js"; import { randomUUID } from "crypto"; import { getNodesLibInternalConfig } from "./config/index.js"; import { makeRequest } from "./routes.js"; import { Signer } from "ethers"; import { type DID } from "dids"; +import { getFullState } from "./codex.js"; +import { bnToString, convertUUIDToDecimal } from "./util/converting.js"; +import { lookupLegacyDpid } from "./chain.js"; +import { NoSuchEntryError } from "./errors.js"; export const ENDPOINTS = { deleteData: { @@ -128,6 +132,12 @@ export const ENDPOINTS = { _payloadT: {}, _responseT: {}, }, + createDpid: { + method: "post", + route: `/v1/nodes/createDpid`, + _payloadT: <{ uuid: string }>{}, + _responseT: <{ dpid: number }>{}, + }, /** Append `/[uuid] `*/ dpidHistory: { method: "get", @@ -247,6 +257,7 @@ export type NodeResponse = { isDeleted: boolean, manifestDocumentId: string, ceramicStream?: string, + dpidAlias?: number, }; /** @@ -281,7 +292,7 @@ export type PrepublishResponse = { updatedManifestCid: string; updatedManifest: ResearchObjectV1; version?: NodeVersion; - ceramicStream?: string; + ceramicStream: string | null; }; export type PublishConfiguration = { @@ -312,6 +323,7 @@ type PublishParams = { nodeVersionId?: string, ceramicStream?: string, commitId?: string, + useNewPublish: boolean, }; /** Result of publishing a draft node */ @@ -326,6 +338,62 @@ export type PublishResponse = { dpidTxId?: string }; +/** + * Publish a node, meaning compile the state of the drive into an actual + * IPLD DAG, make the IPFS CID's public, publish the references to Codex + * and create a dPID alias for it. + * + * @param uuid - UUID of the node to publish + * @param didOrSigner - authenticated did-session DID, or a generic signer +*/ +export const publishNode = async ( + uuid: string, + didOrSigner: DID | Signer, +): Promise => { + const publishResult = await publish(uuid, didOrSigner); + const pubParams: PublishParams = { + uuid, + cid: publishResult.cid, + manifest: publishResult.manifest, + ceramicStream: publishResult.ceramicIDs.streamID, + commitId: publishResult.ceramicIDs.commitID, + useNewPublish: true, + }; + + try { + await makeRequest(ENDPOINTS.publish, getHeaders(), pubParams); + } catch (e) { + console.log(`Publish successful, but backend update failed for node ${uuid}`); + throw e; + }; + + return { + ceramicIDs: publishResult.ceramicIDs, + updatedManifest: publishResult.manifest, + updatedManifestCid: publishResult.cid, + }; +}; + +/** + * Create a new dPID in the alias registry. Only possible to do once per node. + * + * @param uuid - UUID of the node to mint a dPID + * @throws on dPID minting failure +*/ +export const createDpid = async ( + uuid: string, +): Promise => { + let dpid: number; + try { + const res = await makeRequest(ENDPOINTS.createDpid, getHeaders(), { uuid }); + dpid = res.dpid; + } catch (e) { + console.log(`Couldn't create dPID alias for node ${uuid}`) + throw e; + }; + return dpid; +}; + /** * Publish a draft node, meaning to compile the state of the drive into an * actual IPLD DAG, make the IPFS CIDs public, and register the node on @@ -335,13 +403,14 @@ export type PublishResponse = { * @param signer - Signer to use for publish, if not set with env * @throws (@link WrongOwnerError) if signer address isn't research object token owner * @throws (@link DpidPublishError) if dPID couldnt be registered or updated + * @depreated use publishNode instead, as this function uses the old on-chain registry */ export const publishDraftNode = async ( uuid: string, signer: Signer, did?: DID, ): Promise => { - const publishResult = await publish(uuid, signer, did); + const publishResult = await legacyPublish(uuid, signer, did); const pubParams: PublishParams = { uuid, @@ -350,6 +419,7 @@ export const publishDraftNode = async ( transactionId: publishResult.transactionId, ceramicStream: publishResult.ceramicIDs?.streamID, commitId: publishResult.ceramicIDs?.commitID, + useNewPublish: false, }; try { @@ -656,8 +726,6 @@ export const addExternalCid = async ( export type IndexedNodeVersion = { /** Manifest CID in EVM format */ cid: string; - /** Transaction ID of the update event */ - id: string; /** Epoch timestamp of the update*/ time: string; }; @@ -677,7 +745,61 @@ export type IndexedNode = { }; /** - * The the dPID publish history for a node. + * Get the codex publish history for a given node. + * Note: calling this right after publish may fail + * since the publish operation may not have finished. +*/ +export const getPublishHistory = async ( + uuid: string, +): Promise => { + const { ceramicStream } = await getDraftNode(uuid); + if (!ceramicStream) { + throw new Error(`No known stream for node ${uuid}`); + }; + + const resolved = await getFullState(ceramicStream); + const versions = resolved.events.map(e => ({ + cid: e.cid.toString(), + time: e.timestamp?.toString() || "", // May happen if commit is not anchored + })); + + const indexedNode: IndexedNode = { + id: uuid, + id10: convertUUIDToDecimal(uuid), + owner: resolved.owner.id, + recentCid: resolved.manifest, + versions, + }; + + return indexedNode; +}; + +/** + * Lookup the history of a legacy dPID in the alias registry. + * @throws (@link NoSuchEntryError) if no such legacy entry exists +*/ +export const getLegacyHistory = async ( + dpid: number, +): Promise => { + const legacyEntry = await lookupLegacyDpid(dpid); + + if (legacyEntry.versions.length === 0) { + throw new NoSuchEntryError({ + name: "NO_SUCH_ENTRY_ERROR", + message: "No legacy history exists for this dPID", + }); + }; + + const nodeVersions = legacyEntry.versions.map( + ({ cid, time }) => ({ cid, time: bnToString(time) }) + ); + + return nodeVersions; +}; + +/** + * Get the dPID publish history for a node. + * @deprecated use getPublishHistory or getLegacyHistory when using new contracts */ export const getDpidHistory = async ( uuid: string, diff --git a/nodes-lib/src/chain.ts b/nodes-lib/src/chain.ts index 7d7f232d5..4fe6501d6 100644 --- a/nodes-lib/src/chain.ts +++ b/nodes-lib/src/chain.ts @@ -1,20 +1,27 @@ -import { BigNumber, ContractReceipt, Signer } from "ethers"; +import { BigNumber, ContractReceipt, Signer, ethers, providers, utils } from "ethers"; import { convertUUIDToHex, convertCidTo0xHex} from "./util/converting.js"; import { changeManifest, prePublishDraftNode, type PrepublishResponse } from "./api.js" import { getNodesLibInternalConfig } from "./config/index.js"; -import { formatBytes32String } from "ethers/lib/utils.js"; import { DpidRegistrationError, DpidUpdateError, WrongOwnerError } from "./errors.js"; +import { StreamID } from "@desci-labs/desci-codex-lib/dist/streams.js"; +import { typechain as tc } from "@desci-labs/desci-contracts"; const LOG_CTX = "[nodes-lib::chain]" const DEFAULT_DPID_PREFIX_STRING = "beta"; -const DEFAULT_DPID_PREFIX = formatBytes32String(DEFAULT_DPID_PREFIX_STRING); +const DEFAULT_DPID_PREFIX = utils.formatBytes32String(DEFAULT_DPID_PREFIX_STRING); -const researchObjectContract = (signer: Signer) => - getNodesLibInternalConfig().chainConfig.researchObjectConnector(signer); +const researchObjectWriter = (signer: Signer) => + getNodesLibInternalConfig().legacyChainConfig.researchObjectConnector(signer); -const dpidRegistryContract = (signer: Signer) => - getNodesLibInternalConfig().chainConfig.dpidRegistryConnector(signer); +const dpidRegistryWriter = (signer: Signer) => + getNodesLibInternalConfig().legacyChainConfig.dpidRegistryConnector(signer); + +const dpidAliasRegistryWriter = (signer: Signer) => + getNodesLibInternalConfig().chainConfig.dpidAliasRegistryConnector(signer); + +const dpidAliasRegistryReader = (provider: providers.Provider) => + getNodesLibInternalConfig().chainConfig.dpidAliasRegistryConnector(provider); export type DpidPublishResult = { prepubResult: PrepublishResponse, @@ -26,6 +33,7 @@ export type DpidPublishResult = { * * @throws (@link WrongOwnerError) if signer address isn't token owner * @throws (@link DpidPublishError) if dPID couldnt be registered or updated + * @deprecated */ export const dpidPublish = async ( uuid: string, @@ -38,7 +46,7 @@ export const dpidPublish = async ( if (dpidExists) { console.log(`${LOG_CTX} dpid exists for ${uuid}, checking token ownership`); const signingAddress = (await signer.getAddress()).toLowerCase(); - const researchObjectOwner = await getResearchObjectOwner(uuid, signer); + const researchObjectOwner = await getTokenOwner(uuid, signer); if (signingAddress !== researchObjectOwner) { throw new WrongOwnerError({ @@ -80,8 +88,77 @@ export const dpidPublish = async ( return { prepubResult, reciept }; }; +/** + * Mint a new ID for a stream in the new dPID alias registry. + * + * Note that the alias registry is immutable, so there is no + * risk involved with letting a third party mint a dPID alias + * for you. + * + * Instead of performing this action, you can use the corresponding + * API method and let the backend mint the ID for you. + */ +export const createDpidAlias = async ( + streamId: StreamID, + signer: Signer, +): Promise<{ dpid: number, receipt: ContractReceipt}> => { + const tx = await dpidAliasRegistryWriter(signer).mintDpid(streamId.toString()); + const receipt = await tx.wait(); + const [ dpid ] = receipt.events?.find(e => e.event === "DpidMinted")?.args!; + + return { dpid, receipt }; +}; + +export const upgradeDpidAlias = async ( + streamId: string, + dpid: number, + signer: Signer, +): Promise => { + const tx = await dpidAliasRegistryWriter(signer) + .upgradeDpid(BigNumber.from(dpid), streamId); + return await tx.wait(); +}; + +/** + * Lookup the history of a legacy dPID in the new alias registry. + */ +export const lookupLegacyDpid = async ( + dpid: number +): Promise => { + const provider = new providers.JsonRpcProvider( + getNodesLibInternalConfig().chainConfig.rpcUrl + ); + return await dpidAliasRegistryReader(provider).legacyLookup(dpid); +}; + +/** + * Resolve codex streamID for a dPID alias. +*/ +export const lookupDpid = async ( + dpid: number +): Promise => { + const provider = new providers.JsonRpcProvider( + getNodesLibInternalConfig().chainConfig.rpcUrl + ); + return await dpidAliasRegistryReader(provider).resolve(dpid); +}; + +/** + * Find the dPID alias of a given streamID, a reverse lookup. +*/ +export const findDpid = async ( + streamId: string, +): Promise => { + const provider = new providers.JsonRpcProvider( + getNodesLibInternalConfig().chainConfig.rpcUrl + ); + const dpidBn = await dpidAliasRegistryReader(provider).find(streamId); + return ethers.BigNumber.from(dpidBn).toNumber(); +}; + /** * Update an existing dPID with a new version of the manifest. + * @deprecated */ const updateExistingDpid = async ( uuid: string, @@ -91,7 +168,7 @@ const updateExistingDpid = async ( const cidBytes = convertCidTo0xHex(prepubManifestCid); const hexUuid = convertUUIDToHex(uuid); - const tx = await researchObjectContract(signer).updateMetadata(hexUuid, cidBytes); + const tx = await researchObjectWriter(signer).updateMetadata(hexUuid, cidBytes); return await tx.wait() }; @@ -99,13 +176,14 @@ const updateExistingDpid = async ( * Optimistically create a manifest with the next available dPID, * and try to register it as such. * @throws on dpid registration failure. + * @deprecated use createDpidAlias */ const registerNewDpid = async ( uuid: string, signer: Signer, ): Promise<{ reciept: ContractReceipt, prepubResult: PrepublishResponse}> => { const optimisticDpid = await getPreliminaryDpid(signer); - const regFee = await dpidRegistryContract(signer).getFee(); + const regFee = await dpidRegistryWriter(signer).getFee(); await changeManifest( uuid, @@ -123,7 +201,7 @@ const registerNewDpid = async ( const hexUuid = convertUUIDToHex(uuid); // Throws if the expected dPID isn't available - const tx = await researchObjectContract(signer).mintWithDpid( + const tx = await researchObjectWriter(signer).mintWithDpid( hexUuid, cidBytes, DEFAULT_DPID_PREFIX, @@ -145,23 +223,39 @@ const registerNewDpid = async ( /** * Get the next dPID up for minting, for creating an optimistic manifest. * @returns the next free dPID + * @deprecated */ const getPreliminaryDpid = async ( signer: Signer, ): Promise => { - const [nextFreeDpid, _] = await dpidRegistryContract(signer) + const [nextFreeDpid, _] = await dpidRegistryWriter(signer) .getOrganization(DEFAULT_DPID_PREFIX); return nextFreeDpid; }; +/** + * @deprecated + */ export const hasDpid = async ( uuid: string, signer: Signer, ): Promise => - await researchObjectContract(signer).exists(convertUUIDToHex(uuid)); + await researchObjectWriter(signer).exists(convertUUIDToHex(uuid)); -export const getResearchObjectOwner = async ( +/** + * @deprecated + */ +export const getTokenOwner = async ( uuid: string, signer: Signer, ): Promise => - (await researchObjectContract(signer).ownerOf(convertUUIDToHex(uuid))).toLowerCase();; + (await researchObjectWriter(signer).ownerOf(convertUUIDToHex(uuid))).toLowerCase();; + + +/** + * Get the research object token ID for a given (legacy) dPID +*/ +export const getTokenId = async ( + dpid: number, + signer: Signer, +): Promise => await dpidRegistryWriter(signer).get("beta", dpid); diff --git a/nodes-lib/src/codex.ts b/nodes-lib/src/codex.ts index 896c81ae3..848f589ba 100644 --- a/nodes-lib/src/codex.ts +++ b/nodes-lib/src/codex.ts @@ -2,7 +2,7 @@ import { createResearchObject, newComposeClient, updateResearchObject, - type ComposeClient, + ComposeClient, type NodeIDs, queryResearchObject, resolveHistory, @@ -15,6 +15,7 @@ import { getNodesLibInternalConfig } from "./config/index.js"; import { Signer } from "ethers"; import { authorizedSessionDidFromSigner } from "./util/signing.js"; import { type DID } from"dids"; +import { CID } from "multiformats"; const LOG_CTX = "[nodes-lib::codex]"; /** @@ -126,7 +127,19 @@ const backfillNewStream = async ( const title = "[BACKFILLED]"; // version.title is the title of the event, e.g. "Published" const license = "[BACKFILLED]"; - const manifest = convert0xHexToCid(nextVersion.cid); + + // When pulling history from new contract legacy entries, the CID + // is cleartext. Otherwise, it needs to be decoded from hex. + let manifest: string; + try { + // If this works, it was a plaintext CID + manifest = CID.parse(nextVersion.cid).toString(); + } catch (e) { + // Otherwise, fall back to hex decoding old style representation + console.log(LOG_CTX, `got non-plaintext CID for backfill: ${nextVersion.cid}`); + manifest = convert0xHexToCid(nextVersion.cid); + }; + const op = streamID === "" ? createResearchObject(compose, { title, manifest, license }) @@ -141,16 +154,45 @@ const backfillNewStream = async ( return streamID; }; +/** + * Get full historical publish state of a research object. +*/ +export const getFullState = async ( + streamID: string, +) => { + const ceramic = newCeramicClient(getNodesLibInternalConfig().ceramicNodeUrl); + const compose = newComposeClient({ ceramic }); + const resolved = await queryResearchObject( + compose, + streamID, + "owner { id } manifest" + ) as unknown as { owner: { id: string }, manifest: string}; + + console.log(JSON.stringify(resolved)) + + if (!resolved) { + console.log("Failed to resolve research object:", { streamID }); + throw new Error("codex resolution failed"); + }; + + const events = await getCodexHistory(streamID); + return { + owner: resolved.owner, // explicitly selected in query + manifest: resolved.manifest, // explicitly selected in query + events, + }; +}; + /** * Get the state of a research object as published on Codex. */ -export const getPublishedFromCodex = async ( - id: string +export const getCurrentState = async ( + streamID: string ) => { const ceramic = newCeramicClient(getNodesLibInternalConfig().ceramicNodeUrl); const compose = newComposeClient({ ceramic }); - return await queryResearchObject(compose, id); + return await queryResearchObject(compose, streamID); }; /** diff --git a/nodes-lib/src/config/chain.ts b/nodes-lib/src/config/chain.ts index 9474268f9..0599f549a 100644 --- a/nodes-lib/src/config/chain.ts +++ b/nodes-lib/src/config/chain.ts @@ -5,16 +5,19 @@ import { type NodesEnv } from "./index.js"; export type NodesContract = | tc.ResearchObject | tc.ResearchObjectV2 - | tc.DpidRegistry; + | tc.DpidRegistry + | tc.DpidAliasRegistry; export type ContractConnector = (signerOrProvider: Signer | providers.Provider) => T; export type ChainID = - | "1337" - | "11155111"; + | "1337" // local + | "11155111" // sepolia + | "11155420" // optimism sepolia + | "10"; // optimism mainnet -export type ChainConfig = { +export type LegacyChainConfig = { /** Decimal chain ID */ chainId: ChainID, /** RPC URL to use for communication */ @@ -25,16 +28,25 @@ export type ChainConfig = { dpidRegistryConnector: ContractConnector, }; -export const CHAIN_CONFIGS = { +export type ChainConfig = { + /** Decimal chain ID */ + chainId: ChainID, + /** RPC URL to use for communication */ + rpcUrl: string, + /** Given a signer or provider, create a contract instance */ + dpidAliasRegistryConnector: ContractConnector, +}; + +export const LEGACY_CHAIN_CONFIGS = { local: { chainId: "1337", rpcUrl: "http://localhost:8545", researchObjectConnector: signerOrProvider => tc.ResearchObjectV2__factory.connect( - contracts.localRoInfo.proxies.at(0)!.address, + contracts.localRoInfo.proxies[0].address, signerOrProvider ), dpidRegistryConnector: signerOrProvider => tc.DpidRegistry__factory.connect( - contracts.localDpidInfo.proxies.at(0)!.address, + contracts.localDpidInfo.proxies[0].address, signerOrProvider ), }, @@ -42,11 +54,11 @@ export const CHAIN_CONFIGS = { chainId: "11155111", rpcUrl: "https://reverse-proxy-dev.desci.com/rpc_sepolia", researchObjectConnector: signerOrProvider => tc.ResearchObjectV2__factory.connect( - contracts.devRoInfo.proxies.at(0)!.address, + contracts.devRoInfo.proxies[0].address, signerOrProvider ), dpidRegistryConnector: signerOrProvider => tc.DpidRegistry__factory.connect( - contracts.devDpidInfo.proxies.at(0)!.address, + contracts.devDpidInfo.proxies[0].address, signerOrProvider ), }, @@ -54,11 +66,11 @@ export const CHAIN_CONFIGS = { chainId: "11155111", rpcUrl: "https://reverse-proxy-staging.desci.com/rpc_sepolia", researchObjectConnector: signerOrProvider => tc.ResearchObjectV2__factory.connect( - contracts.devRoInfo.proxies.at(0)!.address, + contracts.devRoInfo.proxies[0].address, signerOrProvider ), dpidRegistryConnector: signerOrProvider => tc.DpidRegistry__factory.connect( - contracts.devDpidInfo.proxies.at(0)!.address, + contracts.devDpidInfo.proxies[0].address, signerOrProvider ), }, @@ -66,12 +78,48 @@ export const CHAIN_CONFIGS = { chainId: "11155111", rpcUrl: "https://reverse-proxy-prod.desci.com/rpc_sepolia", researchObjectConnector: signerOrProvider => tc.ResearchObjectV2__factory.connect( - contracts.prodRoInfo.proxies.at(0)!.address, + contracts.prodRoInfo.proxies[0].address, signerOrProvider ), dpidRegistryConnector: signerOrProvider => tc.DpidRegistry__factory.connect( - contracts.prodDpidInfo.proxies.at(0)!.address, + contracts.prodDpidInfo.proxies[0].address, signerOrProvider ), }, -} as const satisfies { [Env in NodesEnv]: ChainConfig }; +} as const satisfies { [Env in NodesEnv]: LegacyChainConfig }; + +export const CHAIN_CONFIGS = { + local: { + chainId: "1337", + rpcUrl: "http://localhost:8545", + dpidAliasRegistryConnector: signerOrProvider => tc.DpidAliasRegistry__factory.connect( + contracts.localDpidAliasInfo.proxies.at(0)!.address, + signerOrProvider, + ), + }, + dev: { + chainId: "11155420", + rpcUrl: "https://reverse-proxy-dev.desci.com/rpc_opt_sepolia", + dpidAliasRegistryConnector: signerOrProvider => tc.DpidAliasRegistry__factory.connect( + contracts.devDpidAliasInfo.proxies[0].address, + signerOrProvider, + ), + }, + staging: { + chainId: "11155420", + rpcUrl: "https://reverse-proxy-staging.desci.com/rpc_opt_sepolia", + dpidAliasRegistryConnector: signerOrProvider => tc.DpidAliasRegistry__factory.connect( + contracts.prodDpidAliasInfo.proxies[0].address, // also uses prod contracts + signerOrProvider, + ), + }, + prod: { + chainId: "11155420", + rpcUrl: "https://reverse-proxy-prod.desci.com/rpc_opt_sepolia", + dpidAliasRegistryConnector: signerOrProvider => tc.DpidAliasRegistry__factory.connect( + contracts.prodDpidAliasInfo.proxies[0].address, + signerOrProvider, + ), + } + +} as const satisfies { [Env in NodesEnv]: ChainConfig}; diff --git a/nodes-lib/src/config/index.ts b/nodes-lib/src/config/index.ts index 5676d32f2..bd737cde3 100644 --- a/nodes-lib/src/config/index.ts +++ b/nodes-lib/src/config/index.ts @@ -1,5 +1,5 @@ import { getResources } from "@desci-labs/desci-codex-lib"; -import { CHAIN_CONFIGS, ChainConfig } from "./chain.js"; +import { CHAIN_CONFIGS, ChainConfig, LEGACY_CHAIN_CONFIGS, LegacyChainConfig } from "./chain.js"; export type NodesEnv = | "local" @@ -7,10 +7,11 @@ export type NodesEnv = | "staging" | "prod"; -export type Config = { +export type NodesLibConfig = { apiUrl: string, apiKey?: string, ceramicNodeUrl: string, + legacyChainConfig: LegacyChainConfig, chainConfig: ChainConfig, }; @@ -19,30 +20,34 @@ export const NODESLIB_CONFIGS = { apiUrl: "http://localhost:5420", apiKey: undefined, ceramicNodeUrl: "http://localhost:7007", + legacyChainConfig: LEGACY_CHAIN_CONFIGS.local, chainConfig: CHAIN_CONFIGS.local, }, dev: { apiUrl: "https://nodes-api-dev.desci.com", apiKey: undefined, ceramicNodeUrl: "https://ceramic-dev.desci.com", + legacyChainConfig: LEGACY_CHAIN_CONFIGS.dev, chainConfig: CHAIN_CONFIGS.dev, }, staging: { apiUrl: "https://nodes-api-staging.desci.com", apiKey: undefined, - ceramicNodeUrl: "https://ceramic-dev.desci.com", - chainConfig: CHAIN_CONFIGS.dev, // also using the dev sepolia contracts + ceramicNodeUrl: "https://ceramic-prod.desci.com", + legacyChainConfig: LEGACY_CHAIN_CONFIGS.prod, // also using the prod contracts + chainConfig: CHAIN_CONFIGS.prod, // also using prod contracts }, prod: { apiUrl: "https://nodes-api.desci.com", apiKey: undefined, ceramicNodeUrl: "https://ceramic-prod.desci.com", + legacyChainConfig: LEGACY_CHAIN_CONFIGS.prod, chainConfig: CHAIN_CONFIGS.prod, }, -} as const satisfies { [Env in NodesEnv]: Config }; +} as const satisfies { [Env in NodesEnv ]: NodesLibConfig }; // Default config to dev environment -let config: Config = NODESLIB_CONFIGS.dev; +let config: NodesLibConfig = NODESLIB_CONFIGS.dev; console.log(`[nodes-lib::config] initialising with nodes-dev config. Use setConfig and setApiKey to change this: \n${JSON.stringify(NODESLIB_CONFIGS.dev, undefined, 2)}`); console.log("[nodes-lib::config] config.apiKey is unset; non-public API requests WILL fail unless running in browser with auth cookies!") @@ -59,7 +64,7 @@ export const setApiKey = (apiKey: string) => { /** * Set a new configuration. You likely want a preset from the `CONFIGS` object. */ -export const setNodesLibConfig = (newConfig: Config): void => { +export const setNodesLibConfig = (newConfig: NodesLibConfig): void => { const confWithRedactedKey = JSON.stringify( { ...newConfig, @@ -82,7 +87,7 @@ export const setNodesLibConfig = (newConfig: Config): void => { * masked by the type to allow browser auth cookie override. */ export const getNodesLibInternalConfig = () => { - return config as Required; + return config as Required; }; export { getResources }; diff --git a/nodes-lib/src/errors.ts b/nodes-lib/src/errors.ts index fc8f7dc46..f88a52c1d 100644 --- a/nodes-lib/src/errors.ts +++ b/nodes-lib/src/errors.ts @@ -1,14 +1,14 @@ class BaseError extends Error { name: Name; message: string; - cause: Cause; + cause?: Cause; constructor({ name, message, cause }: { name: Name, message: string, - cause: Cause, + cause?: Cause, }) { super(); this.name = name; @@ -22,3 +22,4 @@ export class DpidRegistrationError extends BaseError<"DPID_REGISTRATION_ERROR", export class WrongOwnerError extends BaseError< "WRONG_OWNER_ERROR", { expected: string, actual: string } > {}; +export class NoSuchEntryError extends BaseError<"NO_SUCH_ENTRY_ERROR", Error> {}; diff --git a/nodes-lib/src/publish.ts b/nodes-lib/src/publish.ts index 2b00e1e6b..f46cb6fe8 100644 --- a/nodes-lib/src/publish.ts +++ b/nodes-lib/src/publish.ts @@ -1,9 +1,55 @@ import { type NodeIDs } from "@desci-labs/desci-codex-lib"; -import { getDpidHistory } from "./api.js"; -import { dpidPublish, hasDpid } from "./chain.js"; +import { + IndexedNodeVersion, + getDpidHistory, + getDraftNode, + getLegacyHistory, + prePublishDraftNode, +} from "./api.js"; +import { + dpidPublish, + hasDpid, +} from "./chain.js"; import { codexPublish } from "./codex.js"; import { Signer } from "ethers"; import { type DID } from "dids"; +import { NoSuchEntryError } from "./errors.js"; + +/** + * Publish node to Codex, potentially migrating history from dPID token. + * Does *not* automatically register a dPID in the alias registry. + */ +export const publish = async ( + uuid: string, + didOrSigner: DID | Signer, +) => { + const node = await getDraftNode(uuid); + const prepubResult = await prePublishDraftNode(uuid); + const manifestDpid = node.manifestData.dpid?.id; + + const hasDpidInManifest = manifestDpid !== undefined; + const hasStreamOnRecord = prepubResult.ceramicStream !== null; + const shouldDoMigration = hasDpidInManifest && !hasStreamOnRecord; + + let legacyHistory: IndexedNodeVersion[] = []; + if (shouldDoMigration) { + legacyHistory = await findLegacyHistory(uuid, parseInt(manifestDpid)); + }; + + // Performs backfill migration if there is no stream on record, otherwise + // we can send the empty history array and avoid the history query + const ceramicIDs = await codexPublish( + prepubResult, + legacyHistory, + didOrSigner + ); + + return { + cid: prepubResult.updatedManifestCid, + manifest: prepubResult.updatedManifest, + ceramicIDs, + }; +}; /** * The complete publish flow, including both the dPID registry and Codex. @@ -14,8 +60,9 @@ import { type DID } from "dids"; * * @throws (@link WrongOwnerError) if signer address isn't token owner * @throws (@link DpidPublishError) if dPID couldnt be registered or updated + * @deprecated */ -export const publish = async ( +export const legacyPublish = async ( uuid: string, signer: Signer, did?: DID, @@ -49,3 +96,30 @@ export const publish = async ( ceramicIDs, }; }; + +/** + * Looks for legacy history for a dPID, starting with the new contract's + * legacy mapping, falling back to querying the nodes backend for subgraph + * indexed updates. + * + * For public environments, the former should always be enough, but it + * doesn't work for testing migration etc because that logic relies on + * looking up things only published in the legacy registry. + * + * This fallback logic can be cleaned up when the old contracts are paused, + * since the data migration to the alias registry can be made final. +*/ +const findLegacyHistory = async ( + uuid: string, + dpid: number, +): Promise => { + try { + return await getLegacyHistory(dpid); + } catch (e) { + if (!(e instanceof NoSuchEntryError)) { + throw e; + }; + }; + + return (await getDpidHistory(uuid)).versions; +}; diff --git a/nodes-lib/src/util/converting.ts b/nodes-lib/src/util/converting.ts index 38af90b3d..dbc733e44 100644 --- a/nodes-lib/src/util/converting.ts +++ b/nodes-lib/src/util/converting.ts @@ -3,8 +3,9 @@ import Base64Binary from "./base64binary.js"; import { base16 } from "multiformats/bases/base16"; import { base32 } from "multiformats/bases/base32"; import { CID } from "multiformats/cid"; +import { BigNumber, BigNumberish, utils } from "ethers"; -export const convertUUIDToHex = (uuid: string) => { +export const convertUUIDToHex = (uuid: string): string => { const decoded = decode(uuid); const buffer = Base64Binary.decodeArrayBuffer(decoded).slice(0, 32); let base64UuidToBase16 = Buffer.from(buffer).toString("hex"); @@ -14,14 +15,23 @@ export const convertUUIDToHex = (uuid: string) => { return base64UuidToBase16; }; -export const convertCidTo0xHex = (cid: string) => { +export const convertUUIDToDecimal = (uuid: string): string => { + const asHex = convertUUIDToHex(uuid); + return BigNumber.from(asHex).toString(); +}; + +export const convertCidTo0xHex = (cid: string): string => { const c = CID.parse(cid) const rootStrHex = c.toString(base16); - const paddedAndPrefixed = "0x" + (rootStrHex.length % 2 === 0 ? rootStrHex : "0" + rootStrHex); + const paddedAndPrefixed = "0x" + ( + rootStrHex.length % 2 === 0 + ? rootStrHex + : "0" + rootStrHex + ); return paddedAndPrefixed; }; -export const convert0xHexToCid = (hexCid: string) => { +export const convert0xHexToCid = (hexCid: string): string => { const without0x = hexCid.substring(2); const withoutPadding = without0x.length % 2 === 0 ? without0x.substring(1) @@ -31,3 +41,9 @@ export const convert0xHexToCid = (hexCid: string) => { const cid = CID.decode(cidBytes); return cid.toString(base32); }; + +export const bnToNumber = (bn: BigNumberish): number => + BigNumber.from(bn).toNumber(); + +export const bnToString = (bn: BigNumberish): string => + BigNumber.from(bn).toString(); diff --git a/nodes-lib/src/util/signing.ts b/nodes-lib/src/util/signing.ts index de874434a..bd193e6f8 100644 --- a/nodes-lib/src/util/signing.ts +++ b/nodes-lib/src/util/signing.ts @@ -1,5 +1,4 @@ -import { Signer, Wallet, getDefaultProvider, providers } from "ethers"; -import { SigningKey } from "ethers/lib/utils.js"; +import { Signer, Wallet, utils, getDefaultProvider, providers } from "ethers"; import { getNodesLibInternalConfig } from "../config/index.js"; import { AuthMethod, AuthMethodOpts, Cacao, SiweMessage } from "@didtools/cacao"; import { EthereumWebAuth, normalizeAccountId } from "@didtools/pkh-ethereum"; @@ -11,9 +10,9 @@ export const signerFromPkey = (pkey: string): Signer => walletFromPkey(pkey); const walletFromPkey = (pkey: string): Wallet => { - const provider = getDefaultProvider(getNodesLibInternalConfig().chainConfig.rpcUrl); + const provider = getDefaultProvider(getNodesLibInternalConfig().legacyChainConfig.rpcUrl); const paddedPkey = ensurePkeyPadding(pkey); - const key = new SigningKey(paddedPkey); + const key = new utils.SigningKey(paddedPkey); return new Wallet(key, provider); }; diff --git a/nodes-lib/test/convert.spec.ts b/nodes-lib/test/convert.spec.ts index 6f03088ed..72d9e8ece 100644 --- a/nodes-lib/test/convert.spec.ts +++ b/nodes-lib/test/convert.spec.ts @@ -1,27 +1,37 @@ import { test, describe, expect } from "vitest"; -import { convertCidTo0xHex, convert0xHexToCid, convertUUIDToHex } from "../src/util/converting.js"; +import { convertCidTo0xHex, convert0xHexToCid, convertUUIDToHex, convertUUIDToDecimal } from "../src/util/converting.js"; -describe("conversion", async () => { - describe("between UUID and hex", async () => { +describe("conversion", () => { + describe("between UUID and hex", () => { const uuid = "pOV6-0ZN8k8Nlb3iJ7BHgbHt4V_xt-H-dUbRQCLKl78"; const expectedHex = "0xa4e57afb464df24f0d95bde227b04781b1ede15ff1b7e1fe7546d14022ca97bf"; - test("works", async () => { + test("works", () => { const actualHex = convertUUIDToHex(uuid) expect(actualHex).toEqual(expectedHex); }); }); + describe("between UUID and decimal", () => { + const uuid = "pOV6-0ZN8k8Nlb3iJ7BHgbHt4V_xt-H-dUbRQCLKl78"; + const expectedDecimal = "74584763932894785363050678437902601468178104400434333322549483008347345688511"; + + test("works", () => { + const uuid10 = convertUUIDToDecimal(uuid); + expect(uuid10).toEqual(expectedDecimal); + }); + }); + describe("between CID and hex", async () => { const exampleCid = "bafkreihge5qw7sc3mqc4wkf4cgpv6udtvrgipfxwyph7dhlyu6bkkt7tfq"; const expectedHex = "0x0f01551220e627616fc85b6405cb28bc119f5f5073ac4c8796f6c3cff19d78a782a54ff32c"; - test("works one way", async () => { + test("works one way", () => { const cidAsHex = convertCidTo0xHex(exampleCid); expect(cidAsHex).toEqual(expectedHex); }); - test("works the other way", async () => { + test("works the other way", () => { const hexAsCid = convert0xHexToCid(expectedHex); expect(hexAsCid).toEqual(exampleCid); }); diff --git a/nodes-lib/test/root.spec.ts b/nodes-lib/test/root.spec.ts index b099c38fc..38ac4e3ca 100644 --- a/nodes-lib/test/root.spec.ts +++ b/nodes-lib/test/root.spec.ts @@ -2,7 +2,7 @@ import { test, describe, beforeAll, expect } from "vitest"; import type { AddCodeComponentParams, AddLinkComponentParams, AddPdfComponentParams, - CreateDraftParams, ExternalUrl, PublishResponse, RetrieveResponse, + CreateDraftParams, ExternalUrl, NodeResponse, PublishResponse, RetrieveResponse, UploadFilesResponse, } from "../src/api.js" import { @@ -13,10 +13,11 @@ import { deleteComponent, updateComponent, changeManifest, updateTitle, updateDescription, updateLicense, updateResearchFields, addContributor, removeContributor, addExternalCid, updateCoverImage, + publishNode, } from "../src/api.js"; import axios from "axios"; -import { getCodexHistory, getPublishedFromCodex, getRawState } from "../src/codex.js"; -import { dpidPublish } from "../src/chain.js"; +import { getCodexHistory, getCurrentState, getRawState } from "../src/codex.js"; +import { dpidPublish, findDpid } from "../src/chain.js"; import { sleep } from "./util.js"; import { convert0xHexToCid } from "../src/util/converting.js"; import { @@ -33,6 +34,8 @@ import { import { authorizedSessionDidFromSigner, signerFromPkey } from "../src/util/signing.js"; import { NODESLIB_CONFIGS, getNodesLibInternalConfig, setApiKey, setNodesLibConfig } from "../src/index.js"; import { getResources } from "@desci-labs/desci-codex-lib"; +import { contracts, typechain as tc } from "@desci-labs/desci-contracts"; +import { Wallet, providers } from "ethers"; // Pre-funded ganache account const TEST_PKEY = "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"; @@ -56,7 +59,7 @@ describe("nodes-lib", () => { "Failed to connect to desci-server; is the service running?", ); process.exit(1); - } + }; }); describe("draft nodes", async () => { test("can be created", async () => { @@ -268,7 +271,7 @@ describe("nodes-lib", () => { }); }); - describe("publishing ", async () => { + describe("legacy publishing ", async () => { let uuid: string; let publishResult: PublishResponse; const did = await authorizedSessionDidFromSigner(testSigner, getResources()); @@ -298,7 +301,7 @@ describe("nodes-lib", () => { test("to codex", async () => { expect(publishResult.ceramicIDs).not.toBeUndefined(); - const ceramicObject = await getPublishedFromCodex(publishResult.ceramicIDs!.streamID); + const ceramicObject = await getCurrentState(publishResult.ceramicIDs!.streamID); expect(ceramicObject?.manifest).toEqual(publishResult.updatedManifestCid); }); @@ -327,7 +330,7 @@ describe("nodes-lib", () => { await sleep(5_000); await publishDraftNode(uuid, testSigner, did); // Allow graph node to index - await sleep(1_500); + await sleep(2_500); }); test("updates entry in dpid registry", async () => { @@ -340,7 +343,7 @@ describe("nodes-lib", () => { test("publishes to codex stream", async () => { expect(publishResult.ceramicIDs).not.toBeUndefined(); - const ceramicObject = await getPublishedFromCodex(publishResult.ceramicIDs!.streamID); + const ceramicObject = await getCurrentState(publishResult.ceramicIDs!.streamID); expect(ceramicObject?.manifest).toEqual(publishResult.updatedManifestCid); const ceramicHistory = await getCodexHistory(publishResult.ceramicIDs!.streamID); @@ -361,14 +364,14 @@ describe("nodes-lib", () => { const pubResult = await publishDraftNode(uuid, testSigner, did); // Allow graph node to index - await sleep(1_500); + await sleep(5_000); // make sure codex history is of equal length const dpidHistory = await getDpidHistory(uuid); const codexHistory = await getCodexHistory(pubResult.ceramicIDs!.streamID); expect(dpidHistory.versions.length).toEqual(2); expect (codexHistory.length).toEqual(2); - }); + }, { timeout: 10_000}); /** This is not an user feature, but part of error handling during publish */ test("can remove dPID from manifest", async () => { @@ -381,6 +384,176 @@ describe("nodes-lib", () => { }); + describe("publishing ", async () => { + let uuid: string; + let publishResult: PublishResponse; + const did = await authorizedSessionDidFromSigner(testSigner, getResources()); + + beforeAll(async () => { + const { node } = await createBoilerplateNode(); + uuid = node.uuid; + publishResult = await publishNode(uuid, did); + }); + + describe("new node", async () => { + test("to codex", async () => { + expect(publishResult.ceramicIDs).not.toBeUndefined(); + const ceramicObject = await getCurrentState(publishResult.ceramicIDs!.streamID); + expect(ceramicObject?.manifest).toEqual(publishResult.updatedManifestCid); + }); + + test("has a new version", async () => { + const history = await getCodexHistory(publishResult.ceramicIDs!.streamID); + expect(history.length).toEqual(1); + }); + + test("does NOT set dPID in manifest", async () => { + const node = await getDraftNode(uuid); + expect(node.manifestData.dpid).toBeUndefined(); + }); + + test("has a CACAO from the passed DID", async () => { + const streamState = await getRawState(publishResult.ceramicIDs!.streamID); + const controller = streamState.state.metadata.controllers.at(0); + const signerAddress = (await testSigner.getAddress()).toLowerCase(); + + expect(controller).toEqual(did.parent); + expect(controller!.replace("did:pkh:eip155:1337:", "")).toEqual(signerAddress); + }); + + test("can optionally derive DID from just a signer", async () => { + const { node } = await createBoilerplateNode(); + const result = await publishNode(node.uuid, testSigner); + const streamState = await getRawState(result.ceramicIDs!.streamID); + const controller = streamState.state.metadata.controllers.at(0); + const signerAddress = (await testSigner.getAddress()).toLowerCase(); + expect(controller!.replace("did:pkh:eip155:1337:", "")).toEqual(signerAddress); + }); + + test("tracks streamID with node state", async () => { + const node = await getDraftNode(uuid); + expect(node.ceramicStream).toEqual(publishResult.ceramicIDs?.streamID); + }); + + test("tracks new dpid alias with node state", async () => { + const node = await getDraftNode(uuid); + const dpidAlias = await findDpid(node.ceramicStream!); + expect(node.dpidAlias).toEqual(dpidAlias); + }); + }); + + describe("node update", async () => { + let updateResult: PublishResponse; + let nodeStateBefore: NodeResponse; + + beforeAll(async () => { + nodeStateBefore = await getDraftNode(uuid); + updateResult = await publishNode(uuid, did); + await sleep(1000); + }); + + test("updates most recent state", async () => { + const ceramicObject = await getCurrentState(updateResult.ceramicIDs!.streamID); + expect(ceramicObject?.manifest).toEqual(updateResult.updatedManifestCid); + }); + + test("adds a new version", async () => { + const ceramicHistory = await getCodexHistory(updateResult.ceramicIDs!.streamID); + expect(ceramicHistory.length).toEqual(2); + }); + + test("does not change the tracked streamID", async () => { + const node = await getDraftNode(uuid); + expect(node.ceramicStream).toEqual(nodeStateBefore.ceramicStream); + }); + + test("does not mint a new dPID alias", async () => { + const node = await getDraftNode(uuid); + expect(node.dpidAlias).toEqual(nodeStateBefore.dpidAlias); + }); + }); + + describe("node with legacy history", async () => { + let uuid: string; + let pubResult: PublishResponse; + let legacyDpid: number; + + beforeAll(async () => { + const { node } = await createBoilerplateNode(); + uuid = node.uuid; + + // make a dpid-only publish + const { prepubResult: { updatedManifest, updatedManifestCid }} = await dpidPublish( + uuid, false, testSigner + ); + + // Allow graph node to index + await sleep(2_500); + + legacyDpid = parseInt(updatedManifest.dpid!.id); + + // Import as legacy entry (i.e., fake migration step) + // Publish uses this to validate history before migrating dPID + const wallet = new Wallet( + TEST_PKEY, + new providers.JsonRpcProvider(getNodesLibInternalConfig().chainConfig.rpcUrl), + ); + const aliasRegistry = tc.DpidAliasRegistry__factory.connect( + contracts.localDpidAliasInfo.proxies.at(0)!.address, + wallet, + ); + const tx = await aliasRegistry.importLegacyDpid( + legacyDpid, + { + owner: await testSigner.getAddress(), + versions: [ + { + cid: updatedManifestCid, + time: 1337 // Import fn can't validate this anyway + }, + ], + }, + ); + await tx.wait(); + + // make a regular publish + pubResult = await publishNode(uuid, did); + await sleep(1000); + }); + + test("migrates history to new stream", async () => { + // legacy registry only knows about the first update + const dpidHistory = await getDpidHistory(uuid); + expect(dpidHistory.versions.length).toEqual(1); + + // codex history has the legacy and the new update + const codexHistory = await getCodexHistory(pubResult.ceramicIDs!.streamID); + expect (codexHistory.length).toEqual(2); + }); + + test("tracks streamID with node state", async () => { + const node = await getDraftNode(uuid); + expect(node.ceramicStream).toEqual(pubResult.ceramicIDs?.streamID); + }); + + test("tracks upgraded dpid alias with node state", async () => { + const node = await getDraftNode(uuid); + const dpidAlias = await findDpid(node.ceramicStream!); + expect(dpidAlias).toEqual(legacyDpid); + }); + }); + + /** This is not an user feature, but part of error handling during legacy publish */ + test("can remove dPID from manifest", async () => { + await changeManifest( + uuid, [{ type: "Remove Dpid" }] + ); + const node = await getDraftNode(uuid); + expect(node.manifestData.dpid).toBeUndefined(); + }); + + }); + describe("data management", async () => { describe("trees", async () => { test("can be retrieved by owner", async () => { diff --git a/nodes-media/src/config/index.ts b/nodes-media/src/config/index.ts index 4afeef42e..a96e403db 100644 --- a/nodes-media/src/config/index.ts +++ b/nodes-media/src/config/index.ts @@ -2,5 +2,5 @@ export const PUBLIC_IPFS_PATH = process.env.NODE_ENV === 'dev' ? `http://host.docker.internal:8089/ipfs` : process.env.NODE_ENV === 'test' - ? 'http://host.docker.internal:8090/ipfs' + ? 'http://host.docker.internal:8091/ipfs' : 'https://ipfs.desci.com/ipfs'; diff --git a/reverse-proxy/kubernetes/deployment_dev.yaml b/reverse-proxy/kubernetes/deployment_dev.yaml index 890996051..d47d069d8 100755 --- a/reverse-proxy/kubernetes/deployment_dev.yaml +++ b/reverse-proxy/kubernetes/deployment_dev.yaml @@ -62,7 +62,8 @@ spec: echo "sourcing"; export PROXY_MAPPING_RPC_SEPOLIA={{ .Data.PROXY_MAPPING_RPC_SEPOLIA }} export PROXY_MAPPING_RPC_MAINNET={{ .Data.PROXY_MAPPING_RPC_MAINNET }} - + export PROXY_MAPPING_RPC_OPT_SEPOLIA={{ .Data.PROXY_MAPPING_RPC_OPT_SEPOLIA }} + export PROXY_MAPPING_RPC_OPT_MAINNET={{ .Data.PROXY_MAPPING_RPC_OPT_MAINNET }} {{- end -}} labels: App: ReverseProxyDev diff --git a/reverse-proxy/kubernetes/deployment_prod.yaml b/reverse-proxy/kubernetes/deployment_prod.yaml index 92ae649e7..c095aa986 100755 --- a/reverse-proxy/kubernetes/deployment_prod.yaml +++ b/reverse-proxy/kubernetes/deployment_prod.yaml @@ -62,7 +62,8 @@ spec: echo "sourcing"; export PROXY_MAPPING_RPC_SEPOLIA={{ .Data.PROXY_MAPPING_RPC_SEPOLIA }} export PROXY_MAPPING_RPC_MAINNET={{ .Data.PROXY_MAPPING_RPC_MAINNET }} - + export PROXY_MAPPING_RPC_OPT_SEPOLIA={{ .Data.PROXY_MAPPING_RPC_OPT_SEPOLIA }} + export PROXY_MAPPING_RPC_OPT_MAINNET={{ .Data.PROXY_MAPPING_RPC_OPT_MAINNET }} {{- end -}} labels: App: ReverseProxyProd diff --git a/reverse-proxy/kubernetes/deployment_staging.yaml b/reverse-proxy/kubernetes/deployment_staging.yaml index b0f5cc79c..df9cb15a4 100755 --- a/reverse-proxy/kubernetes/deployment_staging.yaml +++ b/reverse-proxy/kubernetes/deployment_staging.yaml @@ -62,7 +62,8 @@ spec: echo "sourcing"; export PROXY_MAPPING_RPC_SEPOLIA={{ .Data.PROXY_MAPPING_RPC_SEPOLIA }} export PROXY_MAPPING_RPC_MAINNET={{ .Data.PROXY_MAPPING_RPC_MAINNET }} - + export PROXY_MAPPING_RPC_OPT_SEPOLIA={{ .Data.PROXY_MAPPING_RPC_OPT_SEPOLIA }} + export PROXY_MAPPING_RPC_OPT_MAINNET={{ .Data.PROXY_MAPPING_RPC_OPT_MAINNET }} {{- end -}} labels: App: ReverseProxyStaging