diff --git a/.github/workflows/upload-metdata.yml b/.github/workflows/upload-metdata.yml
new file mode 100644
index 00000000..41722c37
--- /dev/null
+++ b/.github/workflows/upload-metdata.yml
@@ -0,0 +1,73 @@
+name: Upload zkDrop Metadata
+
+on:
+ issue_comment:
+ types: [created]
+
+jobs:
+ create-app:
+ runs-on: ubuntu-latest
+ if: contains(github.event.comment.body, '/upload-metadata')
+ steps:
+ - name: Check if sismo-core organisation member
+ id: is_organization_member
+ uses: jamessingleton/is-organization-member@1.0.0
+ with:
+ organization: "sismo-core"
+ username: ${{ github.actor }}
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - if: steps.is_organization_member.outputs.result != 'true'
+ run: exit 1
+
+ - name: Checkout code
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0 # fetch all branches and tags
+ token: ${{secrets.SISMOBOT_TOKEN}}
+
+ - name: Checkout Pull Request
+ run: hub pr checkout ${{ github.event.issue.number }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.SISMOBOT_TOKEN }}
+
+ - name: Install dependencies
+ run: yarn install --frozen-lockfile
+
+ - id: changed-files
+ uses: ahmadnassri/action-changed-files@v1
+
+ - name: content
+ run: |
+ echo 'Changed files:'
+ echo "${{ steps.changed-files.outputs.files }}"
+
+ - name: Get modified spaces and apps
+ id: updated-spaces
+ run: |
+ echo 'Changed files:'
+ DEMO_UPDATED_SPACES=$(echo ${{steps.changed-files.outputs.files}} | awk 'BEGIN {OFS=FS=" "} {for(i=1; i<=NF; i++) {if ($i ~ /demo/){split($i,a,"/"); n=split(a[length(a)],b,"."); print b[1]}}}' | xargs)
+ echo "::set-output name=demo_updated_spaces::'$(echo "$DEMO_UPDATED_SPACES")'"
+ MAIN_UPDATED_SPACES=$(echo ${{steps.changed-files.outputs.files}} | awk 'BEGIN {OFS=FS=" "} {for(i=1; i<=NF; i++) {if ($i ~ /main/){split($i,a,"/"); n=split(a[length(a)],b,"."); print b[1]}}}' | xargs)
+ echo "::set-output name=main_updated_spaces::'$(echo "$MAIN_UPDATED_SPACES")'"
+
+ - name: Display changes
+ run: |
+ echo "[DEMO] Modified spaces and apps in commit:"
+ echo "${{ steps.updated-spaces.outputs.demo_updated_spaces }}"
+ echo "[MAIN] Modified spaces and apps in commit:"
+ echo "${{ steps.updated-spaces.outputs.main_updated_spaces }}"
+
+ - name: Run Upload metadata script [demo]
+ env:
+ NEXT_PUBLIC_NODE_ENV: demo
+ PINATA_JWT_TOKEN: ${{ secrets.PINATA_JWT_TOKEN }}
+ run: |
+ yarn upload-zk-drop-metadata ${{ steps.updated-spaces.outputs.demo_updated_spaces }}
+
+ - name: Run Upload metadata script [main]
+ env:
+ NEXT_PUBLIC_NODE_ENV: main
+ PINATA_JWT_TOKEN: ${{ secrets.PINATA_JWT_TOKEN }}
+ run: |
+ yarn upload-zk-drop-metadata ${{ steps.updated-spaces.outputs.main_updated_spaces }}
diff --git a/package.json b/package.json
index 49679549..a4f72e91 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"prebuild": "yarn run build-config",
"build-config": "tsx ./src/scripts/configs-to-json/configs-to-json.script.ts",
"sync-all-apps-factory": "NEXT_PUBLIC_NODE_ENV=main yarn sync-apps-factory && NEXT_PUBLIC_NODE_ENV=demo yarn sync-apps-factory",
+ "upload-zk-drop-metadata": "yarn run build-config && tsx -r ./svgMock.js ./src/scripts/upload-metadata/upload-metadata.script.ts",
"sync-apps-factory": "yarn run build-config && tsx -r ./svgMock.js ./src/scripts/sync-apps-factory/sync-apps-factory.script.ts",
"prettier": "prettier --write 'src/**/*.ts' '.github' 'README.md'"
},
@@ -27,6 +28,7 @@
"axios": "^1.4.0",
"bufferutil": "^4.0.7",
"classnames": "^2.3.2",
+ "commander": "^11.0.0",
"defender-autotask-utils": "^1.44.0",
"defender-relay-client": "^1.44.0",
"eslint": "8.39.0",
diff --git a/space-configs/demo/sismo.ts b/space-configs/demo/sismo.ts
index d8d34eea..87ba25ee 100644
--- a/space-configs/demo/sismo.ts
+++ b/space-configs/demo/sismo.ts
@@ -466,6 +466,6 @@ export default {
options: {
isFeatured: true,
},
- },
+ }
],
} as SpaceConfig;
diff --git a/space-configs/demo/the-merge-contributors.ts b/space-configs/demo/the-merge-contributors.ts
index f7809b5e..4afee4c7 100644
--- a/space-configs/demo/the-merge-contributors.ts
+++ b/space-configs/demo/the-merge-contributors.ts
@@ -55,6 +55,7 @@ export default {
type: "google_sheet",
spreadsheetId: "1Wrh8gFPWuUfdip1wuOxBx_0bZQ_OJb2JsI5A-loRa-Y",
},
+
},
},
options: {
diff --git a/space-configs/main/privacy-is-normal.ts b/space-configs/main/privacy-is-normal.ts
index ae2a41b8..db266fbd 100644
--- a/space-configs/main/privacy-is-normal.ts
+++ b/space-configs/main/privacy-is-normal.ts
@@ -152,6 +152,7 @@ export default {
},
},
},
+
},
],
} as SpaceConfig;
diff --git a/space-configs/main/sismo.ts b/space-configs/main/sismo.ts
index 5ad3af8d..84f364f9 100644
--- a/space-configs/main/sismo.ts
+++ b/space-configs/main/sismo.ts
@@ -183,6 +183,6 @@ export default {
options: {
endDate: new Date("2023-07-07T18:00"),
},
- },
+ }
],
} as SpaceConfig;
diff --git a/space-configs/types.ts b/space-configs/types.ts
index 38d8b95b..bb6e4815 100644
--- a/space-configs/types.ts
+++ b/space-configs/types.ts
@@ -74,18 +74,6 @@ export type FirstComeFirstServed = {
maxNumberOfUsers: number;
};
-export type ZkDropAppConfig = AppCommonConfig & {
- type: "zkdrop";
- templateConfig: {
- step1CtaText?: string;
- step2CtaText: string;
- appDescription?: string;
- chainId: number;
- userSelection?: UserSelection; // default none
- contractAddress: string;
- };
-};
-
export type ZkBadgeChainName = Network.Gnosis | Network.Mumbai | Network.Sepolia;
export type ZkBadgeAppConfig = AppCommonConfig & {
type: "zkBadge";
@@ -108,6 +96,27 @@ export type ZkBadgeAppConfig = AppCommonConfig & {
};
};
+export type ZkDropChainName = Network.Gnosis | Network.Mumbai | Network.Sepolia;
+export type ZkDropAppConfig = AppCommonConfig & {
+ type: "zkDrop";
+ templateConfig: {
+ nftMetadata: {
+ name: string;
+ description: string;
+ image: string;
+ };
+ chains: {
+ contractAddress: string;
+ name: ZkDropChainName;
+ isTransferable: boolean;
+ relayerEnabled?: boolean;
+ }[];
+ step1CtaText?: string;
+ step2CtaText: string;
+ appDescription?: string;
+ };
+};
+
export type ZkFormAppConfig = AppCommonConfig & {
type: "zkForm";
templateConfig: {
diff --git a/src/app/api/zk-badge/relay-tx/route.test.ts b/src/app/api/zk-badge/relay-tx/route.test.ts
index 9c60c450..2181092f 100644
--- a/src/app/api/zk-badge/relay-tx/route.test.ts
+++ b/src/app/api/zk-badge/relay-tx/route.test.ts
@@ -13,9 +13,7 @@ jest.mock("../../../../libs/contracts/signers", () => {
});
jest.mock('../../../../libs/contracts/zk-badge', () => {
- // Use the 'mockImplementation' method to mock the 'ZkBadgeContract' class
const originalModule = jest.requireActual("../../../../libs/contracts/zk-badge");
-
return {
__esModule: true,
...originalModule,
@@ -36,9 +34,7 @@ describe('POST /api/zk-badge/relay-tx', () => {
tokenId: 'mockTokenId'
})
};
-
await POST(req);
-
expect(mockMint).toHaveBeenCalledWith({
responseBytes: 'mockResponseBytes',
address: 'mockDestination',
diff --git a/src/app/api/zk-badge/relay-tx/route.ts b/src/app/api/zk-badge/relay-tx/route.ts
index 4c9a9dd1..653db28c 100644
--- a/src/app/api/zk-badge/relay-tx/route.ts
+++ b/src/app/api/zk-badge/relay-tx/route.ts
@@ -1,3 +1,4 @@
+import env from "@/src/environments";
import { Network } from "@/src/libs/contracts/networks";
import { getDefenderRelayerSigner } from "@/src/libs/contracts/signers";
import { ZkBadgeContract } from "@/src/libs/contracts/zk-badge";
@@ -6,7 +7,7 @@ import { NextResponse } from "next/server";
export async function POST(req: Request) {
const { responseBytes, destination, tokenId, chain } = await req.json();
- const signer = getDefenderRelayerSigner(Network.Mumbai);
+ const signer = getDefenderRelayerSigner(Network.Mumbai, env.defenderAPIKeys.zkBadge);
const zkMinterContract = new ZkBadgeContract({ network: chain, signer });
try {
diff --git a/src/app/api/zk-drop/relay-tx/route.test.ts b/src/app/api/zk-drop/relay-tx/route.test.ts
new file mode 100644
index 00000000..801840b9
--- /dev/null
+++ b/src/app/api/zk-drop/relay-tx/route.test.ts
@@ -0,0 +1,97 @@
+/**
+ * @jest-environment node
+ */
+import ServiceFactory from "@/src/services/service-factory/service-factory";
+import { POST } from "./route";
+import { spaceMock1, spaceMock2 } from "@/src/services/spaces-service/tests/spaces-mock";
+import { Network } from "@/src/libs/contracts/networks";
+
+
+const mockMint = jest.fn().mockImplementation(() => Promise.resolve({ hash: 'mockTxHash' }));
+
+jest.mock("../../../../libs/contracts/signers", () => {
+ return {
+ getDefenderRelayerSigner: jest.fn().mockReturnValue({}),
+ };
+});
+
+jest.mock('../../../../libs/contracts/zk-drop', () => {
+ const originalModule = jest.requireActual("../../../../libs/contracts/zk-drop");
+ return {
+ __esModule: true,
+ ...originalModule,
+ ZkDropContract: jest.fn().mockImplementation(() => {
+ return {
+ mint: mockMint,
+ };
+ }),
+ };
+});
+
+describe('POST /api/zk-drop/relay-tx', () => {
+ beforeEach(() => {
+ let spacesService = ServiceFactory.getSpacesService();
+ const configs = [
+ spaceMock1,
+ spaceMock2
+ ]
+ spacesService.updateConfigs(configs);
+ })
+
+ afterEach(() => {
+ let configs = ServiceFactory.getSpaceConfigs();
+ let spacesService = ServiceFactory.getSpacesService();
+ spacesService.updateConfigs(configs);
+ jest.clearAllMocks();
+ })
+
+ it('Should throw with an incorrect app slug', async () => {
+ const req: any = {
+ json: jest.fn().mockResolvedValue({
+ responseBytes: 'mockResponseBytes',
+ destination: 'mockDestination',
+ spaceSlug: spaceMock1.metadata.slug,
+ appSlug: "zk-drop-slug-invalid",
+ chain: Network.Sepolia
+ })
+ };
+
+ const response = await POST(req);
+ const data = await response.json();
+ expect(data.code).toEqual(`No app found for ${spaceMock1.metadata.slug}/zk-drop-slug-invalid`);
+ });
+
+ it('Should throw with an incorrect chain', async () => {
+ const req: any = {
+ json: jest.fn().mockResolvedValue({
+ responseBytes: 'mockResponseBytes',
+ destination: 'mockDestination',
+ spaceSlug: spaceMock1.metadata.slug,
+ appSlug: "zk-drop-slug",
+ chain: Network.Mumbai
+ })
+ };
+
+ const response = await POST(req);
+ const data = await response.json();
+ expect(data.code).toEqual(`Chain mumbai not supported for the app ${spaceMock1.metadata.slug}/zk-drop-slug`);
+ });
+
+ it('Should call mint with the correct arguments', async () => {
+ const req: any = {
+ json: jest.fn().mockResolvedValue({
+ responseBytes: 'mockResponseBytes',
+ destination: 'mockDestination',
+ spaceSlug: spaceMock1.metadata.slug,
+ appSlug: "zk-drop-slug",
+ chain: Network.Sepolia
+ })
+ };
+ await POST(req);
+ console.log("Mock mint calls: ", mockMint.mock.calls);
+ expect(mockMint).toHaveBeenCalledWith({
+ responseBytes: 'mockResponseBytes',
+ address: 'mockDestination'
+ });
+ });
+});
\ No newline at end of file
diff --git a/src/app/api/zk-drop/relay-tx/route.ts b/src/app/api/zk-drop/relay-tx/route.ts
new file mode 100644
index 00000000..473be860
--- /dev/null
+++ b/src/app/api/zk-drop/relay-tx/route.ts
@@ -0,0 +1,52 @@
+import env from "@/src/environments";
+import { getDefenderRelayerSigner } from "@/src/libs/contracts/signers";
+import { ZkDropContract } from "@/src/libs/contracts/zk-drop";
+import ServiceFactory from "@/src/services/service-factory/service-factory";
+import { ZkDropAppType } from "@/src/services/spaces-service";
+import { NextResponse } from "next/server";
+
+export async function POST(req: Request) {
+ const { responseBytes, destination, chain, spaceSlug, appSlug } = await req.json();
+
+ const spacesService = ServiceFactory.getSpacesService();
+ const apps = await spacesService.getApps({ where: { spaceSlug, appSlug }});
+ if (!apps || apps.length !== 1) {
+ return NextResponse.json({
+ code: `No app found for ${spaceSlug}/${appSlug}`
+ })
+ }
+ const app = apps[0] as ZkDropAppType;
+
+ const signer = getDefenderRelayerSigner(chain, env.defenderAPIKeys.zkDrop);
+ const chainConfig = app.chains.find(_chain => _chain.name === chain)
+
+ if (!chainConfig) {
+ return NextResponse.json({
+ code: `Chain ${chain} not supported for the app ${spaceSlug}/${appSlug}`
+ })
+ }
+ const zkDropContract = new ZkDropContract({ signer, contractAddress: chainConfig.contractAddress });
+
+ try {
+ console.log({
+ responseBytes,
+ address: destination,
+ chain,
+ contractAddress: chainConfig.contractAddress
+ });
+ const tx = await zkDropContract.mint({
+ responseBytes,
+ address: destination
+ });
+
+ return NextResponse.json({
+ success: true,
+ txHash: tx.hash
+ });
+ } catch (e) {
+ console.error(e);
+ return NextResponse.json({
+ code: "minting-error"
+ })
+ }
+}
\ No newline at end of file
diff --git a/src/components/AppCardLarge/index.tsx b/src/components/AppCardLarge/index.tsx
index de5a2548..cde545b6 100644
--- a/src/components/AppCardLarge/index.tsx
+++ b/src/components/AppCardLarge/index.tsx
@@ -8,7 +8,7 @@ import { getHumanReadableRemainingTimeTag } from "@/src/utils/getHumanReadableTi
import SpaceTag from "../SpaceTag";
import Default from "@/src/assets/default.svg";
import colors from "@/src/themes/colors";
-import { ExternalAppType, Lottery, ZkAppType, ZkDropAppType } from "@/src/services/spaces-service";
+import { ExternalAppType, Lottery, ZkAppType, ZkDropAppType, ZkFormAppType } from "@/src/services/spaces-service";
import Link from "next/link";
const Container = styled(Link)<{ $isDisabled: boolean }>`
@@ -202,9 +202,9 @@ export default function AppCardLarge({ app }: Props): JSX.Element {
const isDisabled = hasEnded;
const maxNumberOfEntries =
- (app?.type == "zkForm" || app?.type == "zkdrop") &&
- (app as unknown as ZkDropAppType)?.userSelection?.type == "Lottery" &&
- ((app as unknown as ZkDropAppType)?.userSelection as Lottery)?.maxNumberOfEntries;
+ app?.type == "zkForm" &&
+ (app as unknown as ZkFormAppType)?.userSelection?.type == "Lottery" &&
+ ((app as unknown as ZkFormAppType)?.userSelection as Lottery)?.maxNumberOfEntries;
const link = app?.type === "external" ? (app as unknown as ExternalAppType)?.link : `/${app.space.slug}/${app.slug}`;
if (app)
diff --git a/src/components/AppCardSmall/index.tsx b/src/components/AppCardSmall/index.tsx
index 46e84294..f0ecef8e 100644
--- a/src/components/AppCardSmall/index.tsx
+++ b/src/components/AppCardSmall/index.tsx
@@ -9,7 +9,7 @@ import SpaceTag from "../SpaceTag";
import { useState } from "react";
import Default from "@/src/assets/default.svg";
import colors from "@/src/themes/colors";
-import { ExternalAppType, ZkDropAppType, Lottery, ZkAppType } from "@/src/services/spaces-service";
+import { ExternalAppType, ZkDropAppType, Lottery, ZkAppType, ZkFormAppType } from "@/src/services/spaces-service";
import Link from "next/link";
const CardContainer = styled.div<{ $isSeparator: boolean }>`
@@ -264,9 +264,9 @@ export default function AppCardLarge({ app, className, isSeparator }: Props): JS
const isDisabled = hasEnded;
const maxNumberOfEntries =
- (app?.type == "zkForm" || app?.type == "zkdrop") &&
- (app as unknown as ZkDropAppType)?.userSelection?.type == "Lottery" &&
- ((app as unknown as ZkDropAppType)?.userSelection as Lottery)?.maxNumberOfEntries;
+ app?.type == "zkForm" &&
+ (app as unknown as ZkFormAppType)?.userSelection?.type == "Lottery" &&
+ ((app as unknown as ZkFormAppType)?.userSelection as Lottery)?.maxNumberOfEntries;
const link =
app?.type === "external"
diff --git a/src/components/AppMain/Apps/ZkDropApp/components/Congratulations.tsx b/src/components/AppMain/Apps/ZkDropApp/components/Congratulations.tsx
new file mode 100644
index 00000000..35505489
--- /dev/null
+++ b/src/components/AppMain/Apps/ZkDropApp/components/Congratulations.tsx
@@ -0,0 +1,64 @@
+"use client";
+
+import useEthAccount from "@/src/hooks/useEthAccount";
+import { Network, getErc1155Explorer, getErc721Explorer } from "@/src/libs/contracts/networks";
+import { ZK_BADGE_ADDRESSES } from "@/src/libs/contracts/zk-badge";
+import { ZkDropAppType } from "@/src/services/spaces-service";
+import Button3D from "@/src/ui/Button3D";
+import { getMinimalEns, getMinimalIdentifier } from "@/src/utils/useMainMinified";
+import { ArrowSquareOut } from "phosphor-react";
+import React from "react";
+import { styled } from "styled-components";
+
+const Container = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const Title = styled.div`
+ font-family: ${(props) => props.theme.fonts.semibold};
+ color: ${(props) => props.theme.colors.neutral1};
+ font-size: 32px;
+ line-height: 38px;
+ margin-bottom: 16px;
+`;
+
+const Subtitle = styled.div`
+ font-family: ${(props) => props.theme.fonts.regular};
+ color: ${(props) => props.theme.colors.neutral4};
+ font-size: 16px;
+ line-height: 22px;
+ margin-bottom: 24px;
+ text-align: center;
+ cursor: pointer;
+`;
+
+type Props = {
+ onBackToApps: () => void;
+ app: ZkDropAppType;
+ destination: `0x${string}`;
+ network: Network;
+};
+
+export default function Congratulations({ onBackToApps, app, destination, network }: Props): JSX.Element {
+ const ethAccount = useEthAccount(destination);
+
+ return (
+
+ Congratulations
+ {
+ const explorer = getErc721Explorer({contractAddress: ZK_BADGE_ADDRESSES[network], network: network});
+ window.open(explorer, "_blank");
+ }}
+ >
+ You have successfully minted the "{app.nftMetadata.name}" on {ethAccount.ens ? getMinimalEns(ethAccount.ens) : getMinimalIdentifier(ethAccount.address)}
+
+
+
+ Back to the Apps
+
+
+ );
+}
diff --git a/src/components/AppMain/Apps/ZkDropApp/components/Requirements.tsx b/src/components/AppMain/Apps/ZkDropApp/components/Requirements.tsx
new file mode 100644
index 00000000..91d26975
--- /dev/null
+++ b/src/components/AppMain/Apps/ZkDropApp/components/Requirements.tsx
@@ -0,0 +1,48 @@
+"use client";
+
+import { GroupSnapshotMetadata } from "@/src/libs/group-provider";
+import { ZkAppType } from "@/src/services/spaces-service";
+import { LockSimpleOpen } from "phosphor-react";
+import React from "react";
+import styled from "styled-components";
+import ReqList from "../../components/ReqList";
+
+const Container = styled.div``;
+
+const RequirementTitle = styled.div`
+ display: flex;
+ align-items: center;
+ gap: 4px;
+ flex-shrink: 0;
+ color: ${(props) => props.theme.colors.neutral4};
+ font-size: 14px;
+ font-family: ${(props) => props.theme.fonts.medium};
+ line-height: 20px;
+ margin-top: 24px;
+`;
+
+const Eligibility = styled.div`
+ margin-top: 7px;
+ border-top: 1px solid ${(props) => props.theme.colors.neutral7};
+ padding: 10px 0px;
+`;
+
+type Props = {
+ app: ZkAppType;
+ groupSnapshotMetadataList: GroupSnapshotMetadata[];
+};
+
+export default function Requirements({ app, groupSnapshotMetadataList }: Props): JSX.Element {
+
+ return (
+
+
+
+ Requirements
+
+
+
+
+
+ );
+}
diff --git a/src/components/AppMain/Apps/ZkDropApp/components/SelectDestination.tsx b/src/components/AppMain/Apps/ZkDropApp/components/SelectDestination.tsx
new file mode 100644
index 00000000..a5be51ac
--- /dev/null
+++ b/src/components/AppMain/Apps/ZkDropApp/components/SelectDestination.tsx
@@ -0,0 +1,28 @@
+import TextInputEthAccount from "@/src/ui/TextInputEthAccount";
+import { styled } from "styled-components";
+
+const Container = styled.div`
+ width: 100%;
+ margin-bottom: 32px;
+`;
+
+const Label = styled.div`
+ font-size: 16px;
+ margin-bottom: 8px;
+ font-family: ${(props) => props.theme.fonts.bold};
+`
+
+type Props = {
+ onDestinationSelected: (destination: `0x${string}`) => void;
+};
+
+export default function SelectDestination({
+ onDestinationSelected
+}: Props): JSX.Element {
+ return
+
+ onDestinationSelected(ethAccount.address)}/>
+ ;
+}
diff --git a/src/components/AppMain/Apps/ZkDropApp/index.tsx b/src/components/AppMain/Apps/ZkDropApp/index.tsx
index 2e726ed7..e334c352 100644
--- a/src/components/AppMain/Apps/ZkDropApp/index.tsx
+++ b/src/components/AppMain/Apps/ZkDropApp/index.tsx
@@ -1,26 +1,395 @@
-'use client'
+"use client";
-import { ZkDropAppType } from "@/src/services/spaces-service";
-import Modal from "@/src/ui/Modal";
-import React from "react";
+import React, { useEffect, useMemo, useState } from "react";
import { styled } from "styled-components";
+import Button3D from "@/src/ui/Button3D";
+import { GroupSnapshotMetadata } from "@/src/libs/group-provider";
+import Section from "../components/Section";
+import { ZkDropAppType } from "@/src/services/spaces-service";
+import { usePathname, useRouter } from "next/navigation";
+import { AuthType, SismoConnectButton } from "@sismo-core/sismo-connect-react";
+import { getImpersonateAddresses } from "@/src/utils/getImpersonateAddresses";
+import env from "@/src/environments";
+import SelectDestination from "./components/SelectDestination";
+import Requirements from "./components/Requirements";
+import { getErc721Explorer, getTxExplorer, networkChainIds } from "@/src/libs/contracts/networks";
+import { getMessageSignature } from "./utils/getMessageSignature";
+import Error from "@/src/ui/Error";
+import Congratulations from "./components/Congratulations";
+import { getMinimalHash } from "@/src/utils/getMinimalHash";
+import { ArrowSquareOut } from "phosphor-react";
+import { useAccount, useContractWrite, usePrepareContractWrite, useNetwork, useSwitchNetwork, useWaitForTransaction, useContractRead } from "wagmi";
+import { ZK_BADGE_ADDRESSES } from "@/src/libs/contracts/zk-badge/constants";
+import { useConnectModal } from "@rainbow-me/rainbowkit";
+import { ZK_DROP_ABI } from "@/src/libs/contracts/zk-drop";
const Content = styled.div`
- width: 100px;
- height: 50px;
+ width: 580px;
+
+ @media (max-width: 900px) {
+ width: 100%;
+ }
+`;
+
+const Bottom = styled.div`
+ display: flex;
+ justify-content: center;
+ margin-top: 32px;
+ position: relative;
+ height: 46px;
+ display: flex;
+ align-items: center;
+`;
+
+const AlreadyRegistered = styled.div`
+ color: ${(props) => props.theme.colors.neutral1};
+ font-family: ${(props) => props.theme.fonts.regular};
+ border: 1px solid ${(props) => props.theme.colors.blueRYB};
+ font-size: 16px;
+ background: rgba(18, 52, 245, 0.05);
+ height: 46px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 4px;
+ margin-top: 16px;
+ cursor: pointer;
+`;
+
+const SismoButtonContainer = styled.div<{disabled: boolean}>`
+ width: 100%;
+ position: relative;
+ display: flex;
+ justify-content: center;
+ ${props => props.disabled && `
+ opacity: 0.5;
+ `}
+`
+
+const DisabledButton = styled.div`
+ z-index: 1;
+ width: 100%;
+ height: 100%;
+ position: absolute;
`
+const MintContainer = styled.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ margin-top: 32px;
+`
+
+const BackToAppStore = styled.div`
+ font-size: 16px;
+ font-family: ${props => props.theme.fonts.medium};
+ cursor: pointer;
+`
+
+const TransactionLink = styled.div`
+ font-size: 14px;
+ margin-top: 20px;
+ height: 30px;
+ font-size: 16px;
+ font-family: ${props => props.theme.fonts.medium};
+`;
+
+const Inline = styled.div`
+ display: flex;
+ width: 100%;
+ align-items: center;
+ justify-content: flex-end;
+`;
+
type Props = {
- isOpen: boolean;
- onClose: () => void;
- app: ZkDropAppType;
-}
+ groupSnapshotMetadataList: GroupSnapshotMetadata[];
+ app: ZkDropAppType;
+};
+
+export default function ZkDropApp({ app, groupSnapshotMetadataList }: Props): JSX.Element {
+ const pathname = usePathname();
+ const router = useRouter();
+
+ const { openConnectModal, connectModalOpen } = useConnectModal();
+ const { chain } = useNetwork();
+ const { isConnected } = useAccount();
+
+ const [error, setError] = useState(null);
+ const [alreadyMinted, setAlreadyMinted] = useState(false);
+ const [minted, setMinted] = useState(false);
+ const [destination, setDestination] = useState<`0x${string}`>(null);
+ const [responseBytes, setResponseBytes] = useState(null);
+ const [minting, setMinting] = useState(null);
+ const [hash, setHash] = useState(null);
+ const [vaultId, setVaultId] = useState(null);
+ const hasResponse = Boolean(responseBytes);
+
+ const chainApp = app.chains[0].name;
+ const isRelayed = app.chains[0].relayerEnabled;
+
+ console.log("chainApp", chainApp);
+
+ const sismoConnectConfig = useMemo(() => {
+ const config = {
+ appId: app.appId,
+ vault: env.isDemo
+ ? {
+ impersonate: getImpersonateAddresses(app),
+ }
+ : null,
+ };
+ return config;
+ }, [app]);
+
+ useEffect(() => {
+ if (destination) {
+ window.localStorage.setItem("destination", destination);
+ }
+ }, [destination])
+
+ const contractAddress = app.chains.find(chain => chain.name === chainApp)?.contractAddress;
+ useContractRead({
+ address: contractAddress,
+ abi: ZK_DROP_ABI,
+ functionName: 'balanceOf',
+ args: [destination],
+ enabled: Boolean(destination),
+ chainId: networkChainIds[chainApp],
+ account: null,
+ onSuccess: (data: BigInt) => {
+ if (typeof data === "bigint" && data > 0) {
+ setAlreadyMinted(true);
+ }
+ }
+ });
+
+ /****************************************************************************/
+ /******************************** RELAYED ***********************************/
+ /****************************************************************************/
+
+ const mintRelayed = async () => {
+ setHash(null);
+ setError(null);
+ setMinting(true);
+ const body = {
+ responseBytes: responseBytes,
+ destination: destination,
+ chain: chainApp,
+ spaceSlug: app.space.slug,
+ appSlug: app.slug
+ };
+ const res = await fetch("/api/zk-drop/relay-tx", {
+ method: "POST",
+ body: JSON.stringify(body),
+ });
+ if (!res.ok) {
+ setMinting(false);
+ return;
+ }
+ const data = await res.json();
+ if (data.success) {
+ try {
+ setHash(data.txHash);
+ // const provider = await getProvider(chainApp);
+ // await provider.waitForTransaction(data.txHash);
+ // setMinted(true);
+ // setHash(null);
+ } catch (e) {
+ console.log(e);
+ setError("Minting error. Please contact us or retry later.")
+ }
+ } else {
+ if (data.code === "minting-error") {
+ setError("Minting error. Please contact us or retry later.")
+ }
+ }
+ }
+
+ /****************************************************************************/
+ /****************************** NOT RELAYED *********************************/
+ /****************************************************************************/
+
+ const { switchNetwork, isLoading: isSwitchingNetwork } = useSwitchNetwork()
+
+ const { config } = usePrepareContractWrite({
+ address: contractAddress,
+ abi: ZK_DROP_ABI,
+ functionName: "claimWithSismoConnect",
+ args: [responseBytes, destination],
+ chainId: networkChainIds[chainApp],
+ enabled: Boolean(responseBytes) && Boolean(destination),
+ })
+
+ const { data, write, isLoading: isLoadingWriteContract } = useContractWrite(config);
+ useEffect(() => {
+ if (data && data.hash) {
+ setHash(data.hash);
+ }
+ }, [data])
+
+ const { isLoading: isLoadingTransaction } = useWaitForTransaction({
+ hash: hash,
+ chainId: networkChainIds[chainApp],
+ onSuccess: () => {
+ setMinted(true);
+ setMinting(false);
+ },
+ onError: () => {
+ setError("Error while minting your ZK Badge");
+ }
+ })
-export default function ZkDropApp({ isOpen, onClose, app }: Props): JSX.Element {
+ const mintNotRelayed = async () => {
+ setError(null);
+ setHash(null);
+ if (!isRelayed && !isConnected) {
+ openConnectModal();
+ return;
+ }
+ if (!isRelayed && chain.id !== networkChainIds[chainApp]) {
+ switchNetwork(networkChainIds[chainApp])
+ return;
+ }
+ write();
+ }
- return
-
- {app?.name}
-
- ;
+ return
+ {minted ? (
+ {
+ router.push("/");
+ }}
+ app={app}
+ destination={destination}
+ network={chainApp}
+ />
+ ) : (
+ <>
+
+
+ setDestination(_destination)}/>
+
+ {
+ !destination &&
+ }
+ {
+ setResponseBytes(response);
+ setDestination(window.localStorage.getItem("destination") as `0x${string}`);
+ }}
+ onResponse={(response) => {
+ const vaultId = response.proofs.find(proof => {
+ if (!proof.auths) return false;
+ if (proof.auths[0].authType === AuthType.VAULT) {
+ return true;
+ }
+ })?.auths[0]?.userId;
+ setVaultId(vaultId);
+ }}
+ />
+
+
+
+ { alreadyMinted ?
+ {
+ const explorer = getErc721Explorer({contractAddress: ZK_BADGE_ADDRESSES[chainApp],network: chainApp});
+ window.open(explorer, "_blank");
+ }}>
+ Badge Already minted
+
+ :
+
+ {
+ isRelayed ?
+
+ {minting ? "Minting..." : "Mint Badge"}
+
+ :
+
+ {
+ isConnected ?
+ <>
+ {
+ chain.id !== networkChainIds[chainApp] ?
+ <>
+ {isSwitchingNetwork ? "Switching Network..." : "Switch Network"}
+ >
+ :
+ <>
+ {isLoadingTransaction || isLoadingWriteContract ? "Minting..." : "Mint Badge"}
+ >
+ }
+ >
+ :
+ <>
+ {connectModalOpen ? "Connecting wallet..." : "Connect Wallet"}
+ >
+ }
+
+ }
+
+ {hash ? (
+ {
+ window.open(getTxExplorer({ txHash:hash, network: chainApp}), "_blank");
+ }}
+ >
+ Transaction hash: {getMinimalHash(hash)}
+
+
+ )
+ :
+ router.push("/")}>
+ Back to App Store
+
+ }
+
+
+ }
+
+ {
+ error && {error}
+ }
+ {hasResponse && alreadyMinted && (
+
+ {
+ router.push("/");
+ }}
+ secondary
+ >
+ Back to App Store
+
+
+ )}
+ >
+ )}
+ ;
}
diff --git a/src/components/AppMain/Apps/ZkDropApp/utils/getMessageSignature.ts b/src/components/AppMain/Apps/ZkDropApp/utils/getMessageSignature.ts
new file mode 100644
index 00000000..d48e50ec
--- /dev/null
+++ b/src/components/AppMain/Apps/ZkDropApp/utils/getMessageSignature.ts
@@ -0,0 +1,12 @@
+import { encodeAbiParameters } from "viem";
+
+export const getMessageSignature = ({ destination }: {
+ destination: `0x${string}`
+ }) => {
+ if (!destination) return "";
+
+ return encodeAbiParameters(
+ [{ type: "address", name: "destination" }],
+ [destination as `0x${string}`]
+ );
+ };
\ No newline at end of file
diff --git a/src/components/AppMain/index.tsx b/src/components/AppMain/index.tsx
index b2d44f40..3377db00 100644
--- a/src/components/AppMain/index.tsx
+++ b/src/components/AppMain/index.tsx
@@ -12,6 +12,7 @@ import { redirect } from "next/navigation";
import Timer from "./Apps/components/Timer";
import { ZkAppType } from "@/src/services/spaces-service";
import ZkBadgeApp from "./Apps/ZkBadgeApp";
+import ZkDropApp from "./Apps/ZkDropApp";
const Container = styled.div`
flex-grow: 1;
@@ -207,6 +208,9 @@ export default function AppMain({ app, groupSnapshotMetadataList }: Props) {
{app?.type == "zkBadge" && (
)}
+ {app?.type == "zkDrop" && (
+
+ )}
>
)}
diff --git a/src/environments.ts b/src/environments.ts
index 5f989283..98834446 100644
--- a/src/environments.ts
+++ b/src/environments.ts
@@ -9,13 +9,27 @@ type Environment = {
redirection: string;
telegramBotToken: string;
defenderAPIKeys: {
- [network in Network]: {
- key: string,
- secret: string
+ zkDrop: {
+ [network in Network]: {
+ key: string,
+ secret: string
+ }
+ },
+ zkBadge: {
+ [network in Network]: {
+ key: string,
+ secret: string
+ }
}
},
zkBadgeAddresses: {
[network in Network]: `0x${string}`
+ },
+ zkDropAddresses: {
+ [network in Network]: `0x${string}`
+ },
+ pinata: {
+ jwtToken?: string
}
};
@@ -37,8 +51,15 @@ const env: Environment = {
hubApiUrl: process.env.NEXT_PUBLIC_HUB_API_URL,
redirection: process.env.NEXT_PUBLIC_REDIRECTION,
telegramBotToken: process.env.TELEGRAM_BOT_TOKEN,
- defenderAPIKeys: process.env.SH_RELAY_DEFENDER_API_KEYS && JSON.parse(process.env.SH_RELAY_DEFENDER_API_KEYS),
+ defenderAPIKeys: {
+ zkDrop: process.env.SH_ZK_DROP_RELAY_DEFENDER_API_KEYS && JSON.parse(process.env.SH_ZK_DROP_RELAY_DEFENDER_API_KEYS),
+ zkBadge: process.env.SH_ZK_BADGE_RELAY_DEFENDER_API_KEYS && JSON.parse(process.env.SH_ZK_BADGE_RELAY_DEFENDER_API_KEYS),
+ },
zkBadgeAddresses: process.env.NEXT_PUBLIC_ZK_BADGE_ADDRESSES && JSON.parse(process.env.NEXT_PUBLIC_ZK_BADGE_ADDRESSES),
+ zkDropAddresses: process.env.NEXT_PUBLIC_ZK_DROP_ADDRESSES && JSON.parse(process.env.NEXT_PUBLIC_ZK_DROP_ADDRESSES),
+ pinata: {
+ jwtToken: process.env.PINATA_JWT_TOKEN
+ }
};
if (env.isDemo) {
diff --git a/src/libs/contracts/networks.ts b/src/libs/contracts/networks.ts
index c556b3ee..4c30a90f 100644
--- a/src/libs/contracts/networks.ts
+++ b/src/libs/contracts/networks.ts
@@ -41,7 +41,10 @@ export const explorers: { [network in Network]?: string } = {
[Network.Gnosis]: "https://gnosisscan.io",
[Network.Sepolia]: "https://sepolia.etherscan.io",
[Network.Polygon]: "https://polygonscan.com",
- [Network.Mainnet]: "https://etherscan.io"
+ [Network.Mainnet]: "https://etherscan.io",
+ [Network.Goerli]: "https://goerli.etherscan.io",
+ [Network.Optimism]: "https://optimistic.etherscan.io",
+ [Network.ArbitrumOne]: "https://arbiscan.io"
};
export const getTxExplorer = ({ txHash, network }: { txHash: string, network: Network }) => {
@@ -49,6 +52,10 @@ export const getTxExplorer = ({ txHash, network }: { txHash: string, network: Ne
return `${explorers[network]}/tx/${txHash}`;
}
+export const getErc721Explorer = ({ contractAddress, network }: { contractAddress:string, network: Network }) => {
+ return "todo";
+}
+
export const getErc1155Explorer = ({ contractAddress, tokenId, network }: { contractAddress:string, tokenId: string, network: Network }) => {
if (!explorers[network]) return null;
return `${explorers[network]}/token/${contractAddress}?a=${tokenId}`;
diff --git a/src/libs/contracts/providers.ts b/src/libs/contracts/providers.ts
index f1bcdba7..3fb56115 100644
--- a/src/libs/contracts/providers.ts
+++ b/src/libs/contracts/providers.ts
@@ -16,6 +16,13 @@ export const getProvider = (network: Network): Provider => {
);
providers.set(network, _provider);
return _provider;
+ case Network.Sepolia:
+ _provider = new ethers.providers.JsonRpcProvider(
+ "https://sepolia.gateway.tenderly.co",
+ 11155111
+ );
+ providers.set(network, _provider);
+ return _provider;
case Network.Gnosis:
_provider = new ethers.providers.JsonRpcProvider(
"https://rpc.gnosis.gateway.fm",
@@ -23,5 +30,12 @@ export const getProvider = (network: Network): Provider => {
);
providers.set(network, _provider);
return _provider;
+ case Network.Polygon:
+ _provider = new ethers.providers.JsonRpcProvider(
+ "https://polygon-rpc.com",
+ 137
+ );
+ providers.set(network, _provider);
+ return _provider;
}
};
\ No newline at end of file
diff --git a/src/libs/contracts/signers.ts b/src/libs/contracts/signers.ts
index e35113e1..9e4280f7 100644
--- a/src/libs/contracts/signers.ts
+++ b/src/libs/contracts/signers.ts
@@ -4,19 +4,24 @@ import {
} from "defender-relay-client/lib/ethers";
import { Network } from "./networks";
import { Signer } from "ethers";
-import env from "@/src/environments";
+type DefenderAPIKeys = {
+ [network in Network]: {
+ key: string,
+ secret: string
+ }
+}
-export const getDefenderRelayerSigner = (network: Network): Signer => {
- if (!env.defenderAPIKeys) {
+export const getDefenderRelayerSigner = (network: Network, defenderAPIKeys: DefenderAPIKeys): Signer => {
+ if (!defenderAPIKeys) {
throw new Error(
"SH_RELAY_DEFENDER_API_KEYS env variables missing."
);
}
const credentials = {
- apiKey: env.defenderAPIKeys[network]?.key,
- apiSecret: env.defenderAPIKeys[network]?.secret,
+ apiKey: defenderAPIKeys[network]?.key,
+ apiSecret: defenderAPIKeys[network]?.secret,
};
const provider = new DefenderRelayProvider(credentials);
diff --git a/src/libs/contracts/zk-drop/abi.json b/src/libs/contracts/zk-drop/abi.json
new file mode 100644
index 00000000..c0821419
--- /dev/null
+++ b/src/libs/contracts/zk-drop/abi.json
@@ -0,0 +1,6797 @@
+{
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "baseURI_",
+ "type": "string"
+ },
+ {
+ "internalType": "bytes16",
+ "name": "appId_",
+ "type": "bytes16"
+ },
+ {
+ "internalType": "bool",
+ "name": "isImpersonationMode_",
+ "type": "bool"
+ },
+ {
+ "components": [
+ {
+ "internalType": "enum AuthType",
+ "name": "authType",
+ "type": "uint8"
+ },
+ {
+ "internalType": "uint256",
+ "name": "userId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "isAnon",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "isOptional",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "internalType": "struct AuthRequest[]",
+ "name": "authRequests_",
+ "type": "tuple[]"
+ },
+ {
+ "components": [
+ {
+ "internalType": "enum ClaimType",
+ "name": "claimType",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes16",
+ "name": "groupId",
+ "type": "bytes16"
+ },
+ {
+ "internalType": "bytes16",
+ "name": "groupTimestamp",
+ "type": "bytes16"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "isOptional",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "internalType": "struct ClaimRequest[]",
+ "name": "claimRequests_",
+ "type": "tuple[]"
+ },
+ {
+ "internalType": "address",
+ "name": "owner_",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "isNonTransferable_",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "enum AuthType",
+ "name": "authType",
+ "type": "uint8"
+ }
+ ],
+ "name": "AuthTypeNotFoundInVerifiedResult",
+ "type": "error"
+ },
+ {
+ "inputs": [
+
+ ],
+ "name": "ERC721NonTransferable",
+ "type": "error"
+ },
+ {
+ "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": "string",
+ "name": "baseTokenURI",
+ "type": "string"
+ }
+ ],
+ "name": "BaseTokenURISet",
+ "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"
+ },
+ {
+ "inputs": [
+
+ ],
+ "name": "ADDRESSES_PROVIDER_V2",
+ "outputs": [
+ {
+ "internalType": "contract IAddressesProvider",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+
+ ],
+ "name": "APP_ID",
+ "outputs": [
+ {
+ "internalType": "bytes16",
+ "name": "",
+ "type": "bytes16"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+
+ ],
+ "name": "IMPLEMENTATION_VERSION",
+ "outputs": [
+ {
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+
+ ],
+ "name": "IS_IMPERSONATION_MODE",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+
+ ],
+ "name": "IS_NON_TRANSFERABLE",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+
+ ],
+ "name": "SISMO_CONNECT_LIB_VERSION",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "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": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ }
+ ],
+ "name": "buildSignature",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "bytes",
+ "name": "message",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "internalType": "struct SignatureRequest",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "message",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "name": "buildSignature",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "bytes",
+ "name": "message",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "internalType": "struct SignatureRequest",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "name": "buildSignature",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "bytes",
+ "name": "message",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "internalType": "struct SignatureRequest",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "message",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "name": "buildSignature",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "bytes",
+ "name": "message",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "internalType": "struct SignatureRequest",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "responseBytes",
+ "type": "bytes"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ }
+ ],
+ "name": "claimWithSismoConnect",
+ "outputs": [
+
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+
+ ],
+ "name": "config",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "bytes16",
+ "name": "appId",
+ "type": "bytes16"
+ },
+ {
+ "components": [
+ {
+ "internalType": "bool",
+ "name": "isImpersonationMode",
+ "type": "bool"
+ }
+ ],
+ "internalType": "struct VaultConfig",
+ "name": "vault",
+ "type": "tuple"
+ }
+ ],
+ "internalType": "struct SismoConnectConfig",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "getApproved",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+
+ ],
+ "name": "getRequests",
+ "outputs": [
+ {
+ "components": [
+ {
+ "components": [
+ {
+ "internalType": "enum AuthType",
+ "name": "authType",
+ "type": "uint8"
+ },
+ {
+ "internalType": "uint256",
+ "name": "userId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "isAnon",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "isOptional",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "internalType": "struct AuthRequest[]",
+ "name": "auths",
+ "type": "tuple[]"
+ },
+ {
+ "components": [
+ {
+ "internalType": "enum ClaimType",
+ "name": "claimType",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes16",
+ "name": "groupId",
+ "type": "bytes16"
+ },
+ {
+ "internalType": "bytes16",
+ "name": "groupTimestamp",
+ "type": "bytes16"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "isOptional",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "internalType": "struct ClaimRequest[]",
+ "name": "claims",
+ "type": "tuple[]"
+ }
+ ],
+ "internalType": "struct ZKDrop.Requests",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "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": [
+
+ ],
+ "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": "string",
+ "name": "baseUri",
+ "type": "string"
+ }
+ ],
+ "name": "setBaseTokenUri",
+ "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": "",
+ "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"
+ }
+ ],
+ "bytecode": {
+ "object": "0x6101806040523480156200001257600080fd5b50604051620046d5380380620046d5833981016040819052620000359162000ba7565b62000041868662000471565b8989600062000051838262000d62565b50600162000060828262000d62565b505081516001600160801b031916610120525060208082015151151561014052604080518082018252601981527f7369736d6f436f6e6e65637456657269666965722d76312e3100000000000000928101929092525163349f642f60e11b8152733cd5334eb64ebbd4003b72022cc25465f1bfcee69163693ec85e91620000eb919060040162000e2e565b602060405180830381865afa15801562000109573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012f919062000e63565b6001600160a01b0316608052604080518082018252601781527f61757468526571756573744275696c6465722d76312e310000000000000000006020820152905163349f642f60e11b8152733cd5334eb64ebbd4003b72022cc25465f1bfcee69163693ec85e91620001a5919060040162000e2e565b602060405180830381865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000e63565b6001600160a01b031660a052604080518082018252601881527f636c61696d526571756573744275696c6465722d76312e3100000000000000006020820152905163349f642f60e11b8152733cd5334eb64ebbd4003b72022cc25465f1bfcee69163693ec85e916200025f919060040162000e2e565b602060405180830381865afa1580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000e63565b6001600160a01b031660c052604080518082018252601581527f7369676e61747572654275696c6465722d76312e3100000000000000000000006020820152905163349f642f60e11b8152733cd5334eb64ebbd4003b72022cc25465f1bfcee69163693ec85e9162000319919060040162000e2e565b602060405180830381865afa15801562000337573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035d919062000e63565b6001600160a01b031660e052604080518082018252601381527f726571756573744275696c6465722d76312e31000000000000000000000000006020820152905163349f642f60e11b8152733cd5334eb64ebbd4003b72022cc25465f1bfcee69163693ec85e91620003d3919060040162000e2e565b602060405180830381865afa158015620003f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000417919062000e63565b6001600160a01b031661010052506200043033620004d3565b6200043b82620004d3565b620004468762000525565b620004518462000570565b6200045c8362000671565b1515610160525062000edc9650505050505050565b62000498604080518082018252600080825282516020818101909452908152909182015290565b506040805180820182526001600160801b03199390931683528051602080820183526000909152815180820190925291151581529082015290565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600762000533828262000d62565b507f2e9b34e5ec7377754a85ec13c1e9a442a00db0c46dbdefbb143dd0371fd20c1c8160405162000565919062000e2e565b60405180910390a150565b60005b81518110156200066d57600860000182828151811062000597576200059762000e88565b60209081029190910181015182546001818101855560009485529290932081516004909402018054919390929091839160ff1990911690836005811115620005e357620005e362000e9e565b0217905550602082015160018201556040820151600282018054606085015160808601511515620100000262ff0000199115156101000261ff00199515159590951661ffff1990931692909217939093179290921691909117905560a0820151600382019062000654908262000d62565b5050508080620006649062000eb4565b91505062000573565b5050565b60005b81518110156200066d57600860010182828151811062000698576200069862000e88565b60209081029190910181015182546001818101855560009485529290932081516005909402018054919390929091839160ff1990911690836004811115620006e457620006e462000e9e565b021790555060208201518154610100600160881b031916610100608092831c810291909117835560408401516001840180546001600160801b03191691841c919091179055606084015160028401559083015160038301805460a086015161ffff1990911692151561ff0019169290921791151590920217905560c0820151600482019062000774908262000d62565b5050508080620007849062000eb4565b91505062000674565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715620007c857620007c86200078d565b60405290565b60405160e081016001600160401b0381118282101715620007c857620007c86200078d565b604051601f8201601f191681016001600160401b03811182821017156200081e576200081e6200078d565b604052919050565b60005b838110156200084357818101518382015260200162000829565b50506000910152565b600082601f8301126200085e57600080fd5b81516001600160401b038111156200087a576200087a6200078d565b6200088f601f8201601f1916602001620007f3565b818152846020838601011115620008a557600080fd5b620008b882602083016020870162000826565b949350505050565b80516001600160801b031981168114620008d957600080fd5b919050565b80518015158114620008d957600080fd5b60006001600160401b038211156200090b576200090b6200078d565b5060051b60200190565b600082601f8301126200092757600080fd5b81516020620009406200093a83620008ef565b620007f3565b82815260059290921b840181019181810190868411156200096057600080fd5b8286015b8481101562000a415780516001600160401b0380821115620009865760008081fd5b9088019060c0828b03601f1901811315620009a15760008081fd5b620009ab620007a3565b8784015160068110620009be5760008081fd5b8152604084810151898301526060620009d9818701620008de565b8284015260809150620009ee828701620008de565b9083015260a062000a01868201620008de565b8383015292850151928484111562000a1b57600091508182fd5b62000a2b8e8b868901016200084c565b9083015250865250505091830191830162000964565b509695505050505050565b805160058110620008d957600080fd5b600082601f83011262000a6e57600080fd5b8151602062000a816200093a83620008ef565b82815260059290921b8401810191818101908684111562000aa157600080fd5b8286015b8481101562000a415780516001600160401b038082111562000ac75760008081fd5b9088019060e0828b03601f190181131562000ae25760008081fd5b62000aec620007ce565b62000af988850162000a4c565b8152604062000b0a818601620008c0565b89830152606062000b1d818701620008c0565b828401526080915081860151818401525060a062000b3d818701620008de565b8284015260c0915062000b52828701620008de565b9083015291840151918383111562000b6a5760008081fd5b62000b7a8d8a858801016200084c565b90820152865250505091830191830162000aa5565b80516001600160a01b0381168114620008d957600080fd5b60008060008060008060008060006101208a8c03121562000bc757600080fd5b89516001600160401b038082111562000bdf57600080fd5b62000bed8d838e016200084c565b9a5060208c015191508082111562000c0457600080fd5b62000c128d838e016200084c565b995060408c015191508082111562000c2957600080fd5b62000c378d838e016200084c565b985062000c4760608d01620008c0565b975062000c5760808d01620008de565b965060a08c015191508082111562000c6e57600080fd5b62000c7c8d838e0162000915565b955060c08c015191508082111562000c9357600080fd5b5062000ca28c828d0162000a5c565b93505062000cb360e08b0162000b8f565b915062000cc46101008b01620008de565b90509295985092959850929598565b600181811c9082168062000ce857607f821691505b60208210810362000d0957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000d5d57600081815260208120601f850160051c8101602086101562000d385750805b601f850160051c820191505b8181101562000d595782815560010162000d44565b5050505b505050565b81516001600160401b0381111562000d7e5762000d7e6200078d565b62000d968162000d8f845462000cd3565b8462000d0f565b602080601f83116001811462000dce576000841562000db55750858301515b600019600386901b1c1916600185901b17855562000d59565b600085815260208120601f198616915b8281101562000dff5788860151825594840194600190910190840162000dde565b508582101562000e1e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000825180602084015262000e4f81604085016020870162000826565b601f01601f19169190910160400192915050565b60006020828403121562000e7657600080fd5b62000e818262000b8f565b9392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60006001820162000ed557634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e0516101005161012051610140516101605161375a62000f7b600039600081816104210152818161100b0152818161123b0152611ba70152600081816103940152610cd30152600081816103e10152610cb201526000611b27015260008181610a6b01528181610b6201528181611143015281816111a901526113430152600050506000505060006113da015261375a6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638813ce1211610104578063c187bbc1116100a2578063cea8eb4e11610071578063cea8eb4e1461045e578063e068970314610471578063e985e9c514610484578063f2fde38b1461049757600080fd5b8063c187bbc1146103dc578063c4b2e8ff1461041c578063c87b56dd14610443578063c9512d991461045657600080fd5b806395d89b41116100de57806395d89b4114610387578063a183dc271461038f578063a22cb465146103b6578063b88d4fde146103c957600080fd5b80638813ce121461034e5780638da5cb5b1461036357806395652cfa1461037457600080fd5b8063469163011161017c57806370a082311161014b57806370a08231146102f6578063715018a614610317578063754b377c1461031f57806379502c551461033957600080fd5b8063469163011461029557806349161195146102b05780636352211e146102d05780636e01370e146102e357600080fd5b8063081812fc116101b8578063081812fc14610231578063095ea7b31461025c57806323b872dd1461026f57806342842e0e1461028257600080fd5b806301ffc9a7146101df57806306fdde031461020757806307c8064f1461021c575b600080fd5b6101f26101ed366004611e20565b6104aa565b60405190151581526020015b60405180910390f35b61020f6104fc565b6040516101fe9190611e8d565b61022f61022a366004612015565b61058e565b005b61024461023f366004612062565b6108a7565b6040516001600160a01b0390911681526020016101fe565b61022f61026a36600461207b565b6108ce565b61022f61027d3660046120a5565b6109e8565b61022f6102903660046120a5565b610a19565b610244733cd5334eb64ebbd4003b72022cc25465f1bfcee681565b6102c36102be3660046120ef565b610a34565b6040516101fe919061214f565b6102446102de366004612062565b610adb565b6102c36102f1366004612162565b610b3b565b6103096103043660046121c5565b610bed565b6040519081526020016101fe565b61022f610c73565b610327600181565b60405160ff90911681526020016101fe565b610341610c87565b6040516101fe91906121e0565b610356610cfc565b6040516101fe9190612386565b6006546001600160a01b0316610244565b61022f6103823660046123bf565b610fe6565b61020f610ffa565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b61022f6103c4366004612407565b611009565b61022f6103d736600461243e565b611056565b6104037f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160801b031990911681526020016101fe565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b61020f610451366004612062565b611088565b610309600281565b6102c361046c3660046124a5565b61111c565b6102c361047f3660046124ea565b611182565b6101f2610492366004612561565b611237565b61022f6104a53660046121c5565b6112a6565b60006001600160e01b031982166380ac58cd60e01b14806104db57506001600160e01b03198216635b5e139f60e01b145b806104f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461050b9061258b565b80601f01602080910402602001604051908101604052809291908181526020018280546105379061258b565b80156105845780601f1061055957610100808354040283529160200191610584565b820191906000526020600020905b81548152906001019060200180831161056757829003601f168201915b5050505050905090565b6008805460408051602080840282018101909252828152600093610887938793869084015b828210156106df576000848152602090206040805160c08101909152600484029091018054829060ff1660058111156105ee576105ee612204565b60058111156105ff576105ff612204565b815260018201546020820152600282015460ff80821615156040840152610100820481161515606084015262010000909104161515608082015260038201805460a09092019161064e9061258b565b80601f016020809104026020016040519081016040528092919081815260200182805461067a9061258b565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b505050505081525050815260200190600101906105b3565b505050506008600101805480602002602001604051908101604052809291908181526020016000905b82821015610851576000848152602090206040805160e08101909152600584029091018054829060ff16600481111561074357610743612204565b600481111561075457610754612204565b8152815461010090819004608090811b6001600160801b031990811660208501526001850154821b16604084015260028401546060840152600384015460ff8082161515928501929092529190910416151560a082015260048201805460c0909201916107c09061258b565b80601f01602080910402602001604051908101604052809291908181526020018280546107ec9061258b565b80156108395780601f1061080e57610100808354040283529160200191610839565b820191906000526020600020905b81548152906001019060200180831161081c57829003601f168201915b50505050508152505081526020019060010190610708565b5050604080516001600160a01b038a166020820152610882935001905060405160208183030381529060405261131c565b611380565b905060006108958282611481565b90506108a18382611534565b50505050565b60006108b2826116cd565b506000908152600460205260409020546001600160a01b031690565b60006108d982610adb565b9050806001600160a01b0316836001600160a01b03160361094b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061096757506109678133611237565b6109d95760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610942565b6109e3838361172c565b505050565b6109f2338261179a565b610a0e5760405162461bcd60e51b8152600401610942906125c5565b6109e38383836117f8565b6109e383838360405180602001604052806000815250611056565b604080516060808201835280825260006020830152818301529051631f6c2b9760e11b815282151560048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ed8572e906024015b600060405180830381865afa158015610ab3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104f69190810190612701565b6000818152600260205260408120546001600160a01b0316806104f65760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610942565b604080516060808201835280825260006020830152818301529051631778ed1360e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635de3b44c90610ba19086908690600401612735565b600060405180830381865afa158015610bbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610be69190810190612701565b9392505050565b60006001600160a01b038216610c575760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610942565b506001600160a01b031660009081526003602052604090205490565b610c7b611969565b610c8560006119c3565b565b610cad604080518082018252600080825282516020818101909452908152909182015290565b610cf77f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611a15565b905090565b6040805180820190915260608082526020820152604080516008805460606020820284018101855293830181815260009484928491879085015b82821015610e62576000848152602090206040805160c08101909152600484029091018054829060ff166005811115610d7157610d71612204565b6005811115610d8257610d82612204565b815260018201546020820152600282015460ff80821615156040840152610100820481161515606084015262010000909104161515608082015260038201805460a090920191610dd19061258b565b80601f0160208091040260200160405190810160405280929190818152602001828054610dfd9061258b565b8015610e4a5780601f10610e1f57610100808354040283529160200191610e4a565b820191906000526020600020905b815481529060010190602001808311610e2d57829003601f168201915b50505050508152505081526020019060010190610d36565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610fd8576000848152602090206040805160e08101909152600584029091018054829060ff166004811115610eca57610eca612204565b6004811115610edb57610edb612204565b8152815461010090819004608090811b6001600160801b031990811660208501526001850154821b16604084015260028401546060840152600384015460ff8082161515928501929092529190910416151560a082015260048201805460c090920191610f479061258b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f739061258b565b8015610fc05780601f10610f9557610100808354040283529160200191610fc0565b820191906000526020600020905b815481529060010190602001808311610fa357829003601f168201915b50505050508152505081526020019060010190610e8f565b505050915250909392505050565b610fee611969565b610ff781611a83565b50565b60606001805461050b9061258b565b7f00000000000000000000000000000000000000000000000000000000000000001561104857604051632630e0df60e11b815260040160405180910390fd5b6110528282611aca565b5050565b611060338361179a565b61107c5760405162461bcd60e51b8152600401610942906125c5565b6108a184848484611ad5565b6060600780546110979061258b565b80601f01602080910402602001604051908101604052809291908181526020018280546110c39061258b565b80156111105780601f106110e557610100808354040283529160200191611110565b820191906000526020600020905b8154815290600101906020018083116110f357829003601f168201915b50505050509050919050565b604080516060808201835280825260006020830152818301529051631d1db46b60e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637476d1ac90610ba1908690869060040161275a565b604080516060808201835280825260006020830152818301529051631f785c9560e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631f785c95906111ea90879087908790600401612775565b600060405180830381865afa158015611207573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261122f9190810190612701565b949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000001561127857604051632630e0df60e11b815260040160405180910390fd5b6001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff16610be6565b6112ae611969565b6001600160a01b0381166113135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610942565b610ff7816119c3565b604080516060808201835280825260006020830152818301529051631a0d7ccb60e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636835f32c90610a96908590600401611e8d565b6040805160c0810182526000808252602082018190529181019190915260608082018190526080820181905260a08201526000858060200190518101906113c79190612a1a565b905060006113d6868686611b08565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166312b037ff8383611411610c87565b6040518463ffffffff1660e01b815260040161142f93929190612cf0565b6000604051808303816000875af115801561144e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261147691908101906130f6565b979650505050505050565b6000805b836060015151811015611518578260058111156114a4576114a4612204565b846060015182815181106114ba576114ba6131d6565b60200260200101516000015160058111156114d7576114d7612204565b0361150657836060015181815181106114f2576114f26131d6565b6020026020010151604001519150506104f6565b80611510816131ec565b915050611485565b508160405163267ac2cf60e01b81526004016109429190613213565b6001600160a01b03821661158a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610942565b6000818152600260205260409020546001600160a01b0316156115ef5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610942565b6115fd600083836001611ba5565b6000818152600260205260409020546001600160a01b0316156116625760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610942565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600260205260409020546001600160a01b0316610ff75760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610942565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061176182610adb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806117a683610adb565b9050806001600160a01b0316846001600160a01b031614806117cd57506117cd8185611237565b8061122f5750836001600160a01b03166117e6846108a7565b6001600160a01b031614949350505050565b826001600160a01b031661180b82610adb565b6001600160a01b0316146118315760405162461bcd60e51b815260040161094290613221565b6001600160a01b0382166118935760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610942565b6118a08383836001611ba5565b826001600160a01b03166118b382610adb565b6001600160a01b0316146118d95760405162461bcd60e51b815260040161094290613221565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6006546001600160a01b03163314610c855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610942565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611a3b604080518082018252600080825282516020818101909452908152909182015290565b6040518060400160405280846001600160801b0319168152602001611a7a84604080516020808201835260009091528151908101909152901515815290565b90529392505050565b6007611a8f82826132b4565b507f2e9b34e5ec7377754a85ec13c1e9a442a00db0c46dbdefbb143dd0371fd20c1c81604051611abf9190611e8d565b60405180910390a150565b611052338383611be9565b611ae08484846117f8565b611aec84848484611cb7565b6108a15760405162461bcd60e51b815260040161094290613373565b611b10611dba565b604051634c92019b60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639924033690611b60908790879087906004016133c5565b600060405180830381865afa158015611b7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261122f9190810190613519565b7f000000000000000000000000000000000000000000000000000000000000000015611be457604051632630e0df60e11b815260040160405180910390fd5b6108a1565b816001600160a01b0316836001600160a01b031603611c4a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610942565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60006001600160a01b0384163b15611dad57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611cfb9033908990889088906004016136d4565b6020604051808303816000875af1925050508015611d36575060408051601f3d908101601f19168201909252611d3391810190613707565b60015b611d93573d808015611d64576040519150601f19603f3d011682016040523d82523d6000602084013e611d69565b606091505b508051600003611d8b5760405162461bcd60e51b815260040161094290613373565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061122f565b50600161122f565b905290565b604051806080016040528060006001600160801b03191681526020016060815260200160608152602001611db5604051806060016040528060608152602001600015158152602001606081525090565b6001600160e01b031981168114610ff757600080fd5b600060208284031215611e3257600080fd5b8135610be681611e0a565b60005b83811015611e58578181015183820152602001611e40565b50506000910152565b60008151808452611e79816020860160208601611e3d565b601f01601f19169290920160200192915050565b602081526000610be66020830184611e61565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715611ed857611ed8611ea0565b60405290565b60405160c081016001600160401b0381118282101715611ed857611ed8611ea0565b60405160e081016001600160401b0381118282101715611ed857611ed8611ea0565b604051608081016001600160401b0381118282101715611ed857611ed8611ea0565b604051601f8201601f191681016001600160401b0381118282101715611f6c57611f6c611ea0565b604052919050565b60006001600160401b03821115611f8d57611f8d611ea0565b50601f01601f191660200190565b6000611fae611fa984611f74565b611f44565b9050828152838383011115611fc257600080fd5b828260208301376000602084830101529392505050565b600082601f830112611fea57600080fd5b610be683833560208501611f9b565b80356001600160a01b038116811461201057600080fd5b919050565b6000806040838503121561202857600080fd5b82356001600160401b0381111561203e57600080fd5b61204a85828601611fd9565b92505061205960208401611ff9565b90509250929050565b60006020828403121561207457600080fd5b5035919050565b6000806040838503121561208e57600080fd5b61209783611ff9565b946020939093013593505050565b6000806000606084860312156120ba57600080fd5b6120c384611ff9565b92506120d160208501611ff9565b9150604084013590509250925092565b8015158114610ff757600080fd5b60006020828403121561210157600080fd5b8135610be6816120e1565b60008151606084526121216060850182611e61565b9050602083015115156020850152604083015184820360408601526121468282611e61565b95945050505050565b602081526000610be6602083018461210c565b6000806040838503121561217557600080fd5b82356001600160401b038082111561218c57600080fd5b61219886838701611fd9565b935060208501359150808211156121ae57600080fd5b506121bb85828601611fd9565b9150509250929050565b6000602082840312156121d757600080fd5b610be682611ff9565b81516001600160801b031916815260208083015151151590820152604081016104f6565b634e487b7160e01b600052602160045260246000fd5b6006811061222a5761222a612204565b9052565b600082825180855260208086019550808260051b84010181860160005b848110156122c357601f19868403018952815160c061226b85835161221a565b818601518587015260408083015115159086015260608083015115159086015260808083015115159086015260a0918201519185018190526122af81860183611e61565b9a86019a945050509083019060010161224b565b5090979650505050505050565b6005811061222a5761222a612204565b6000815180845260208085019450848260051b860182860160005b858110156122c3578383038952815160e06123178583516122d0565b818701516001600160801b031990811686890152604080840151909116908601526060808301519086015260808083015115159086015260a08083015115159086015260c09182015191850181905261237281860183611e61565b9a87019a94505050908401906001016122fb565b6020815260008251604060208401526123a2606084018261222e565b90506020840151601f1984830301604085015261214682826122e0565b6000602082840312156123d157600080fd5b81356001600160401b038111156123e757600080fd5b8201601f810184136123f857600080fd5b61122f84823560208401611f9b565b6000806040838503121561241a57600080fd5b61242383611ff9565b91506020830135612433816120e1565b809150509250929050565b6000806000806080858703121561245457600080fd5b61245d85611ff9565b935061246b60208601611ff9565b92506040850135915060608501356001600160401b0381111561248d57600080fd5b61249987828801611fd9565b91505092959194509250565b600080604083850312156124b857600080fd5b82356124c3816120e1565b915060208301356001600160401b038111156124de57600080fd5b6121bb85828601611fd9565b6000806000606084860312156124ff57600080fd5b83356001600160401b038082111561251657600080fd5b61252287838801611fd9565b945060208601359150612534826120e1565b9092506040850135908082111561254a57600080fd5b5061255786828701611fd9565b9150509250925092565b6000806040838503121561257457600080fd5b61257d83611ff9565b915061205960208401611ff9565b600181811c9082168061259f57607f821691505b6020821081036125bf57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600082601f83011261262357600080fd5b8151612631611fa982611f74565b81815284602083860101111561264657600080fd5b61122f826020830160208701611e3d565b8051612010816120e1565b60006060828403121561267457600080fd5b604051606081016001600160401b03828210818311171561269757612697611ea0565b8160405282935084519150808211156126af57600080fd5b6126bb86838701612612565b8352602085015191506126cd826120e1565b81602084015260408501519150808211156126e757600080fd5b506126f485828601612612565b6040830152505092915050565b60006020828403121561271357600080fd5b81516001600160401b0381111561272957600080fd5b61122f84828501612662565b6040815260006127486040830185611e61565b82810360208401526121468185611e61565b821515815260406020820152600061122f6040830184611e61565b6060815260006127886060830186611e61565b841515602084015282810360408401526127a28185611e61565b9695505050505050565b80516001600160801b03198116811461201057600080fd5b60006001600160401b038211156127dd576127dd611ea0565b5060051b60200190565b80516006811061201057600080fd5b600082601f83011261280757600080fd5b81516020612817611fa9836127c4565b82815260059290921b8401810191818101908684111561283657600080fd5b8286015b848110156128f45780516001600160401b038082111561285a5760008081fd5b9088019060a0828b03601f19018113156128745760008081fd5b61287c611eb6565b6128878885016127e7565b8152604080850151612898816120e1565b828a01526060858101516128ab816120e1565b80838501525060809150818601518184015250828501519250838311156128d25760008081fd5b6128e08d8a85880101612612565b90820152865250505091830191830161283a565b509695505050505050565b80516005811061201057600080fd5b600082601f83011261291f57600080fd5b8151602061292f611fa9836127c4565b82815260059290921b8401810191818101908684111561294e57600080fd5b8286015b848110156128f45780516001600160401b03808211156129725760008081fd5b9088019060c0828b03601f190181131561298c5760008081fd5b612994611ede565b61299f8885016128ff565b815260406129ae8186016127ac565b8983015260606129bf8187016127ac565b8284015260809150818601516129d4816120e1565b9083015260a085810151828401529285015192848411156129f757600091508182fd5b612a058e8b86890101612612565b90830152508652505050918301918301612952565b60006020808385031215612a2d57600080fd5b82516001600160401b0380821115612a4457600080fd5b9084019060a08287031215612a5857600080fd5b612a60611eb6565b612a69836127ac565b8152612a768484016127ac565b8482015260408301516040820152606083015182811115612a9657600080fd5b612aa288828601612612565b60608301525060808084015183811115612abb57600080fd5b80850194505087601f850112612ad057600080fd5b8351612ade611fa9826127c4565b81815260059190911b8501860190868101908a831115612afd57600080fd5b8787015b83811015612be557805187811115612b195760008081fd5b880160a0818e03601f19011215612b305760008081fd5b612b38611eb6565b8a82015189811115612b4a5760008081fd5b612b588f8d838601016127f6565b825250604082015189811115612b6e5760008081fd5b612b7c8f8d8386010161290e565b8c83015250606082015160408201528682015189811115612b9d5760008081fd5b612bab8f8d83860101612612565b60608301525060a082015189811115612bc45760008081fd5b612bd28f8d83860101612612565b8289015250845250918801918801612b01565b50928401929092525090979650505050505050565b6000815180845260208085019450848260051b860182860160005b858110156122c3578383038952815160c0612c318583516122d0565b818701516001600160801b031990811686890152604080840151909116908601526060808301511515908601526080808301519086015260a091820151918501819052612c8081860183611e61565b9a87019a9450505090840190600101612c15565b6001600160801b031981511682526000602082015160806020850152612cbd608085018261222e565b905060408301518482036040860152612cd682826122e0565b91505060608301518482036060860152612146828261210c565b600060808083526001600160801b0319808751168285015260208088015182811660a087015250604088015191508160c08601526060880151915060a060e0860152612d40610120860183611e61565b88840151868203607f1901610100880152805180835291935082019082840190600581901b8501840160005b82811015612e7957601f198783030184528451805160a0808552815190850181905260c0600582901b86018101928a01919086019060005b81811015612e0e5760bf198886030183528351612dc286825161221a565b8c81015115158d870152604081015115156040870152606081015160608701528e810151905060a08f870152612dfb60a0870182611e61565b955050928b0192918b0191600101612da4565b505050508782015184820389860152612e278282612bfa565b9150506040820151604085015260608201518482036060860152612e4b8282611e61565b9150508982015191508381038a850152612e658183611e61565b968801969588019593505050600101612d6c565b50888103858a0152612e8b818c612c94565b8a516001600160801b03191660408b015260208b015151151560608b0152975061122f9650505050505050565b600082601f830112612ec957600080fd5b81516020612ed9611fa9836127c4565b82815260059290921b84018101918181019086841115612ef857600080fd5b8286015b848110156128f45780516001600160401b0380821115612f1c5760008081fd5b9088019060a0828b03601f1901811315612f365760008081fd5b612f3e611eb6565b612f498885016127e7565b8152604080850151612f5a816120e1565b808a8401525060608086015182840152608091508186015185811115612f805760008081fd5b612f8e8f8c838a0101612612565b82850152505082850151925083831115612fa85760008081fd5b612fb68d8a85880101612612565b908201528652505050918301918301612efc565b600082601f830112612fdb57600080fd5b81516020612feb611fa9836127c4565b82815260059290921b8401810191818101908684111561300a57600080fd5b8286015b848110156128f45780516001600160401b038082111561302e5760008081fd5b9088019060e0828b03601f19018113156130485760008081fd5b613050611f00565b61305b8885016128ff565b8152604061306a8186016127ac565b89830152606061307b8187016127ac565b828401526080915081860151818401525060a080860151858111156130a05760008081fd5b6130ae8f8c838a0101612612565b838501525060c09150818601518184015250828501519250838311156130d45760008081fd5b6130e28d8a85880101612612565b90820152865250505091830191830161300e565b60006020828403121561310857600080fd5b81516001600160401b038082111561311f57600080fd5b9083019060c0828603121561313357600080fd5b61313b611ede565b613144836127ac565b8152613152602084016127ac565b60208201526040830151604082015260608301518281111561317357600080fd5b61317f87828601612eb8565b60608301525060808301518281111561319757600080fd5b6131a387828601612fca565b60808301525060a0830151828111156131bb57600080fd5b6131c787828601612612565b60a08301525095945050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161320c57634e487b7160e01b600052601160045260246000fd5b5060010190565b602081016104f6828461221a565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b601f8211156109e357600081815260208120601f850160051c8101602086101561328d5750805b601f850160051c820191505b818110156132ac57828155600101613299565b505050505050565b81516001600160401b038111156132cd576132cd611ea0565b6132e1816132db845461258b565b84613266565b602080601f83116001811461331657600084156132fe5750858301515b600019600386901b1c1916600185901b1785556132ac565b600085815260208120601f198616915b8281101561334557888601518255948401946001909101908401613326565b50858210156133635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6060815260006133d8606083018661222e565b82810360208401526133ea81866122e0565b905082810360408401526127a2818561210c565b600082601f83011261340f57600080fd5b8151602061341f611fa9836127c4565b82815260059290921b8401810191818101908684111561343e57600080fd5b8286015b848110156128f45780516001600160401b03808211156134625760008081fd5b9088019060e0828b03601f190181131561347c5760008081fd5b613484611f00565b61348f8885016128ff565b8152604061349e8186016127ac565b8983015260606134af8187016127ac565b828401526080915081860151818401525060a06134cd818701612657565b8284015260c091506134e0828701612657565b908301529184015191838311156134f75760008081fd5b6135058d8a85880101612612565b908201528652505050918301918301613442565b6000602080838503121561352c57600080fd5b82516001600160401b038082111561354357600080fd5b908401906080828703121561355757600080fd5b61355f611f22565b613568836127ac565b8152838301518281111561357b57600080fd5b8301601f8101881361358c57600080fd5b805161359a611fa9826127c4565b81815260059190911b8201860190868101908a8311156135b957600080fd5b8784015b83811015613676578051878111156135d457600080fd5b850160c0818e03601f190112156135ea57600080fd5b6135f2611ede565b6135fd8b83016127e7565b815260408201518b8201526060820151613616816120e1565b60408201526080820151613629816120e1565b606082015260a082015161363c816120e1565b608082015260c0820151898111156136545760008081fd5b6136628f8d83860101612612565b60a0830152508452509188019188016135bd565b50808886015250505050604083015193508184111561369457600080fd5b6136a0878585016133fe565b604082015260608301519350818411156136b957600080fd5b6136c587858501612662565b60608201529695505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906127a290830184611e61565b60006020828403121561371957600080fd5b8151610be681611e0a56fea2646970667358221220951f770327b0f3c4c923ab0c5ab39b6259e0990664bc13501bf0f2c1cf10535864736f6c63430008140033",
+ "sourceMap": "223:3262:54:-:0;;;654:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;968:41;980:6;988:20;968:11;:41::i;:::-;939:5;946:7;1456:5:26;:13;939:5:54;1456::26;:13;:::i;:::-;-1:-1:-1;1479:7:26;:17;1489:7;1479;:17;:::i;:::-;-1:-1:-1;;1540:13:41;;-1:-1:-1;;;;;;1531:22:41;;;-1:-1:-1;1583:13:41;;;;;:33;1559:57;;;;1702:35;;;;;;;;;;;;;;;;;;;1676:62;-1:-1:-1;;;1676:62:41;;1054:42;;1676:25;;:62;;1702:35;1676:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1623:121:41;;;1850:33;;;;;;;;;;;;;;;;1824:60;;-1:-1:-1;;;1824:60:41;;1054:42;;1824:25;;:60;;1850:33;1824:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1776:114:41;;;1972:34;;;;;;;;;;;;;;;;1946:61;;-1:-1:-1;;;1946:61:41;;1054:42;;1946:25;;:61;;1972:34;1946:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1896:117:41;;;2089:31;;;;;;;;;;;;;;;;2063:58;;-1:-1:-1;;;2063:58:41;;1054:42;;2063:25;;:58;;2089:31;2063:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2019:108:41;;;2192:29;;;;;;;;;;;;;;;;2166:56;;-1:-1:-1;;;2166:56:41;;1054:42;;2166:25;;:56;;2192:29;2166:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2133:90:41;;;-1:-1:-1;936:32:18;719:10:31;936:18:18;:32::i;:::-;1017:26:54::2;1036:6:::0;1017:18:::2;:26::i;:::-;1049;1066:8:::0;1049:16:::2;:26::i;:::-;1081:24;1091:13:::0;1081:9:::2;:24::i;:::-;1111:26;1122:14:::0;1111:10:::2;:26::i;:::-;1143:40;;;::::0;-1:-1:-1;223:3262:54;;-1:-1:-1;;;;;;;223:3262:54;2632:222:41;2729:25;223:3262:54;;;;;;;;-1:-1:-1;223:3262:54;;;;;;;;;;;;;;;;;;;;;;2729:25:41;-1:-1:-1;2769:80:41;;;;;;;;-1:-1:-1;;;;;;2769:80:41;;;;;;223:3262:54;;2769:80:41;223:3262:54;;;;;-1:-1:-1;223:3262:54;;;3100:55:41;;;;;;;;;;;;;2769:80;;;;;2632:222::o;2426:187:18:-;2518:6;;;-1:-1:-1;;;;;2534:17:18;;;-1:-1:-1;;;;;;2534:17:18;;;;;;;2566:40;;2518:6;;;2534:17;2518:6;;2566:40;;2499:16;;2566:40;2489:124;2426:187;:::o;2258:126:54:-;2321:13;:23;2337:7;2321:13;:23;:::i;:::-;;2355:24;2371:7;2355:24;;;;;;:::i;:::-;;;;;;;;2258:126;:::o;1932:156::-;1999:9;1994:90;2018:6;:13;2014:1;:17;1994:90;;;2046:9;:15;;2067:6;2074:1;2067:9;;;;;;;;:::i;:::-;;;;;;;;;;;;2046:31;;;;;;;;-1:-1:-1;2046:31:54;;;;;;;;;;;;;;;;2067:9;;2046:31;;;;;;-1:-1:-1;;2046:31:54;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2046:31:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2046:31:54;;;;;-1:-1:-1;;2046:31:54;;;;;;;-1:-1:-1;;2046:31:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;2033:3;;;;;:::i;:::-;;;;1994:90;;;;1932:156;:::o;2092:162::-;2162:9;2157:93;2181:7;:14;2177:1;:18;2157:93;;;2210:9;:16;;2232:7;2240:1;2232:10;;;;;;;;:::i;:::-;;;;;;;;;;;;2210:33;;;;;;;;-1:-1:-1;2210:33:54;;;;;;;;;;;;;;;;2232:10;;2210:33;;;;;;-1:-1:-1;;2210:33:54;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2210:33:54;;;;;;-1:-1:-1;;;;;;2210:33:54;;;;;;;;;;;;;;;;;;-1:-1:-1;2210:33:54;;;;-1:-1:-1;;;;;;2210:33:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2210:33:54;;;;;;-1:-1:-1;;2210:33:54;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;2197:3;;;;;:::i;:::-;;;;2157:93;;14:127:57;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:253;218:2;212:9;260:4;248:17;;-1:-1:-1;;;;;280:34:57;;316:22;;;277:62;274:88;;;342:18;;:::i;:::-;378:2;371:22;146:253;:::o;404:::-;476:2;470:9;518:4;506:17;;-1:-1:-1;;;;;538:34:57;;574:22;;;535:62;532:88;;;600:18;;:::i;662:275::-;733:2;727:9;798:2;779:13;;-1:-1:-1;;775:27:57;763:40;;-1:-1:-1;;;;;818:34:57;;854:22;;;815:62;812:88;;;880:18;;:::i;:::-;916:2;909:22;662:275;;-1:-1:-1;662:275:57:o;942:250::-;1027:1;1037:113;1051:6;1048:1;1045:13;1037:113;;;1127:11;;;1121:18;1108:11;;;1101:39;1073:2;1066:10;1037:113;;;-1:-1:-1;;1184:1:57;1166:16;;1159:27;942:250::o;1197:510::-;1251:5;1304:3;1297:4;1289:6;1285:17;1281:27;1271:55;;1322:1;1319;1312:12;1271:55;1345:13;;-1:-1:-1;;;;;1370:26:57;;1367:52;;;1399:18;;:::i;:::-;1443:55;1486:2;1467:13;;-1:-1:-1;;1463:27:57;1492:4;1459:38;1443:55;:::i;:::-;1523:2;1514:7;1507:19;1569:3;1562:4;1557:2;1549:6;1545:15;1541:26;1538:35;1535:55;;;1586:1;1583;1576:12;1535:55;1599:77;1673:2;1666:4;1657:7;1653:18;1646:4;1638:6;1634:17;1599:77;:::i;:::-;1694:7;1197:510;-1:-1:-1;;;;1197:510:57:o;1712:182::-;1791:13;;-1:-1:-1;;;;;;1833:36:57;;1823:47;;1813:75;;1884:1;1881;1874:12;1813:75;1712:182;;;:::o;1899:164::-;1975:13;;2024;;2017:21;2007:32;;1997:60;;2053:1;2050;2043:12;2068:194;2139:4;-1:-1:-1;;;;;2161:30:57;;2158:56;;;2194:18;;:::i;:::-;-1:-1:-1;2239:1:57;2235:14;2251:4;2231:25;;2068:194::o;2267:2008::-;2343:5;2396:3;2389:4;2381:6;2377:17;2373:27;2363:55;;2414:1;2411;2404:12;2363:55;2443:6;2437:13;2469:4;2493:71;2509:54;2560:2;2509:54;:::i;:::-;2493:71;:::i;:::-;2598:15;;;2684:1;2680:10;;;;2668:23;;2664:32;;;2629:12;;;;2708:15;;;2705:35;;;2736:1;2733;2726:12;2705:35;2772:2;2764:6;2760:15;2784:1462;2800:6;2795:3;2792:15;2784:1462;;;2873:10;;-1:-1:-1;;;;;2940:19:57;;;2937:109;;;3000:1;3029:2;3025;3018:14;2937:109;3069:24;;;;3116:4;3144:12;;;-1:-1:-1;;3140:26:57;3136:35;-1:-1:-1;3133:125:57;;;3212:1;3241:2;3237;3230:14;3133:125;3284:22;;:::i;:::-;3348:2;3344;3340:11;3334:18;3387:1;3378:7;3375:14;3365:112;;3431:1;3460:2;3456;3449:14;3365:112;3490:22;;3535:2;3579:11;;;3573:18;3557:14;;;3550:42;3616:2;3654:40;3681:12;;;3654:40;:::i;:::-;3649:2;3642:5;3638:14;3631:64;3719:3;3708:14;;3759:40;3794:3;3790:2;3786:12;3759:40;:::i;:::-;3742:15;;;3735:65;3824:3;3864:40;3891:12;;;3864:40;:::i;:::-;3847:15;;;3840:65;3940:11;;;3934:18;;3968:16;;;3965:109;;;4026:1;4015:12;;4056:3;4051;4044:16;3965:109;4111:61;4168:3;4163:2;4152:8;4148:2;4144:17;4140:26;4111:61;:::i;:::-;4094:15;;;4087:86;-1:-1:-1;4186:18:57;;-1:-1:-1;;;4224:12:57;;;;2817;;2784:1462;;;-1:-1:-1;4264:5:57;2267:2008;-1:-1:-1;;;;;;2267:2008:57:o;4280:154::-;4366:13;;4408:1;4398:12;;4388:40;;4424:1;4421;4414:12;4439:1988;4516:5;4569:3;4562:4;4554:6;4550:17;4546:27;4536:55;;4587:1;4584;4577:12;4536:55;4616:6;4610:13;4642:4;4666:71;4682:54;4733:2;4682:54;:::i;4666:71::-;4771:15;;;4857:1;4853:10;;;;4841:23;;4837:32;;;4802:12;;;;4881:15;;;4878:35;;;4909:1;4906;4899:12;4878:35;4945:2;4937:6;4933:15;4957:1441;4973:6;4968:3;4965:15;4957:1441;;;5046:10;;-1:-1:-1;;;;;5113:19:57;;;5110:109;;;5173:1;5202:2;5198;5191:14;5110:109;5242:24;;;;5289:4;5317:12;;;-1:-1:-1;;5313:26:57;5309:35;-1:-1:-1;5306:125:57;;;5385:1;5414:2;5410;5403:14;5306:125;5457:22;;:::i;:::-;5506:49;5551:2;5547;5543:11;5506:49;:::i;:::-;5499:5;5492:64;5579:2;5617:42;5655:2;5651;5647:11;5617:42;:::i;:::-;5612:2;5605:5;5601:14;5594:66;5683:2;5721:42;5759:2;5755;5751:11;5721:42;:::i;:::-;5716:2;5709:5;5705:14;5698:66;5788:3;5777:14;;5841:3;5837:2;5833:12;5827:19;5822:2;5815:5;5811:14;5804:43;;5871:3;5911:40;5946:3;5942:2;5938:12;5911:40;:::i;:::-;5905:3;5898:5;5894:15;5887:65;5976:3;5965:14;;6016:40;6051:3;6047:2;6043:12;6016:40;:::i;:::-;5999:15;;;5992:65;6092:11;;;6086:18;;6120:16;;;6117:109;;;6178:1;6208:3;6203;6196:16;6117:109;6263:61;6320:3;6315:2;6304:8;6300:2;6296:17;6292:26;6263:61;:::i;:::-;6246:15;;;6239:86;6338:18;;-1:-1:-1;;;6376:12:57;;;;4990;;4957:1441;;6432:177;6511:13;;-1:-1:-1;;;;;6553:31:57;;6543:42;;6533:70;;6599:1;6596;6589:12;6614:1644;6891:6;6899;6907;6915;6923;6931;6939;6947;6955;7008:3;6996:9;6987:7;6983:23;6979:33;6976:53;;;7025:1;7022;7015:12;6976:53;7052:16;;-1:-1:-1;;;;;7117:14:57;;;7114:34;;;7144:1;7141;7134:12;7114:34;7167:61;7220:7;7211:6;7200:9;7196:22;7167:61;:::i;:::-;7157:71;;7274:2;7263:9;7259:18;7253:25;7237:41;;7303:2;7293:8;7290:16;7287:36;;;7319:1;7316;7309:12;7287:36;7342:63;7397:7;7386:8;7375:9;7371:24;7342:63;:::i;:::-;7332:73;;7451:2;7440:9;7436:18;7430:25;7414:41;;7480:2;7470:8;7467:16;7464:36;;;7496:1;7493;7486:12;7464:36;7519:63;7574:7;7563:8;7552:9;7548:24;7519:63;:::i;:::-;7509:73;;7601:49;7646:2;7635:9;7631:18;7601:49;:::i;:::-;7591:59;;7669:47;7711:3;7700:9;7696:19;7669:47;:::i;:::-;7659:57;;7762:3;7751:9;7747:19;7741:26;7725:42;;7792:2;7782:8;7779:16;7776:36;;;7808:1;7805;7798:12;7776:36;7831:85;7908:7;7897:8;7886:9;7882:24;7831:85;:::i;:::-;7821:95;;7962:3;7951:9;7947:19;7941:26;7925:42;;7992:2;7982:8;7979:16;7976:36;;;8008:1;8005;7998:12;7976:36;;8031:86;8109:7;8098:8;8087:9;8083:24;8031:86;:::i;:::-;8021:96;;;8136:50;8181:3;8170:9;8166:19;8136:50;:::i;:::-;8126:60;;8205:47;8247:3;8236:9;8232:19;8205:47;:::i;:::-;8195:57;;6614:1644;;;;;;;;;;;:::o;8263:380::-;8342:1;8338:12;;;;8385;;;8406:61;;8460:4;8452:6;8448:17;8438:27;;8406:61;8513:2;8505:6;8502:14;8482:18;8479:38;8476:161;;8559:10;8554:3;8550:20;8547:1;8540:31;8594:4;8591:1;8584:15;8622:4;8619:1;8612:15;8476:161;;8263:380;;;:::o;8774:545::-;8876:2;8871:3;8868:11;8865:448;;;8912:1;8937:5;8933:2;8926:17;8982:4;8978:2;8968:19;9052:2;9040:10;9036:19;9033:1;9029:27;9023:4;9019:38;9088:4;9076:10;9073:20;9070:47;;;-1:-1:-1;9111:4:57;9070:47;9166:2;9161:3;9157:12;9154:1;9150:20;9144:4;9140:31;9130:41;;9221:82;9239:2;9232:5;9229:13;9221:82;;;9284:17;;;9265:1;9254:13;9221:82;;;9225:3;;;8865:448;8774:545;;;:::o;9495:1352::-;9615:10;;-1:-1:-1;;;;;9637:30:57;;9634:56;;;9670:18;;:::i;:::-;9699:97;9789:6;9749:38;9781:4;9775:11;9749:38;:::i;:::-;9743:4;9699:97;:::i;:::-;9851:4;;9915:2;9904:14;;9932:1;9927:663;;;;10634:1;10651:6;10648:89;;;-1:-1:-1;10703:19:57;;;10697:26;10648:89;-1:-1:-1;;9452:1:57;9448:11;;;9444:24;9440:29;9430:40;9476:1;9472:11;;;9427:57;10750:81;;9897:944;;9927:663;8721:1;8714:14;;;8758:4;8745:18;;-1:-1:-1;;9963:20:57;;;10081:236;10095:7;10092:1;10089:14;10081:236;;;10184:19;;;10178:26;10163:42;;10276:27;;;;10244:1;10232:14;;;;10111:19;;10081:236;;;10085:3;10345:6;10336:7;10333:19;10330:201;;;10406:19;;;10400:26;-1:-1:-1;;10489:1:57;10485:14;;;10501:3;10481:24;10477:37;10473:42;10458:58;10443:74;;10330:201;-1:-1:-1;;;;;10577:1:57;10561:14;;;10557:22;10544:36;;-1:-1:-1;9495:1352:57:o;10852:396::-;11001:2;10990:9;10983:21;10964:4;11033:6;11027:13;11076:6;11071:2;11060:9;11056:18;11049:34;11092:79;11164:6;11159:2;11148:9;11144:18;11139:2;11131:6;11127:15;11092:79;:::i;:::-;11232:2;11211:15;-1:-1:-1;;11207:29:57;11192:45;;;;11239:2;11188:54;;10852:396;-1:-1:-1;;10852:396:57:o;11253:208::-;11323:6;11376:2;11364:9;11355:7;11351:23;11347:32;11344:52;;;11392:1;11389;11382:12;11344:52;11415:40;11445:9;11415:40;:::i;:::-;11405:50;11253:208;-1:-1:-1;;;11253:208:57:o;11466:127::-;11527:10;11522:3;11518:20;11515:1;11508:31;11558:4;11555:1;11548:15;11582:4;11579:1;11572:15;11598:127;11659:10;11654:3;11650:20;11647:1;11640:31;11690:4;11687:1;11680:15;11714:4;11711:1;11704:15;13085:232;13124:3;13145:17;;;13142:140;;13204:10;13199:3;13195:20;13192:1;13185:31;13239:4;13236:1;13229:15;13267:4;13264:1;13257:15;13142:140;-1:-1:-1;13309:1:57;13298:13;;13085:232::o;:::-;223:3262:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
+ "linkReferences": {
+
+ }
+ },
+ "deployedBytecode": {
+ "object": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638813ce1211610104578063c187bbc1116100a2578063cea8eb4e11610071578063cea8eb4e1461045e578063e068970314610471578063e985e9c514610484578063f2fde38b1461049757600080fd5b8063c187bbc1146103dc578063c4b2e8ff1461041c578063c87b56dd14610443578063c9512d991461045657600080fd5b806395d89b41116100de57806395d89b4114610387578063a183dc271461038f578063a22cb465146103b6578063b88d4fde146103c957600080fd5b80638813ce121461034e5780638da5cb5b1461036357806395652cfa1461037457600080fd5b8063469163011161017c57806370a082311161014b57806370a08231146102f6578063715018a614610317578063754b377c1461031f57806379502c551461033957600080fd5b8063469163011461029557806349161195146102b05780636352211e146102d05780636e01370e146102e357600080fd5b8063081812fc116101b8578063081812fc14610231578063095ea7b31461025c57806323b872dd1461026f57806342842e0e1461028257600080fd5b806301ffc9a7146101df57806306fdde031461020757806307c8064f1461021c575b600080fd5b6101f26101ed366004611e20565b6104aa565b60405190151581526020015b60405180910390f35b61020f6104fc565b6040516101fe9190611e8d565b61022f61022a366004612015565b61058e565b005b61024461023f366004612062565b6108a7565b6040516001600160a01b0390911681526020016101fe565b61022f61026a36600461207b565b6108ce565b61022f61027d3660046120a5565b6109e8565b61022f6102903660046120a5565b610a19565b610244733cd5334eb64ebbd4003b72022cc25465f1bfcee681565b6102c36102be3660046120ef565b610a34565b6040516101fe919061214f565b6102446102de366004612062565b610adb565b6102c36102f1366004612162565b610b3b565b6103096103043660046121c5565b610bed565b6040519081526020016101fe565b61022f610c73565b610327600181565b60405160ff90911681526020016101fe565b610341610c87565b6040516101fe91906121e0565b610356610cfc565b6040516101fe9190612386565b6006546001600160a01b0316610244565b61022f6103823660046123bf565b610fe6565b61020f610ffa565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b61022f6103c4366004612407565b611009565b61022f6103d736600461243e565b611056565b6104037f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160801b031990911681526020016101fe565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b61020f610451366004612062565b611088565b610309600281565b6102c361046c3660046124a5565b61111c565b6102c361047f3660046124ea565b611182565b6101f2610492366004612561565b611237565b61022f6104a53660046121c5565b6112a6565b60006001600160e01b031982166380ac58cd60e01b14806104db57506001600160e01b03198216635b5e139f60e01b145b806104f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461050b9061258b565b80601f01602080910402602001604051908101604052809291908181526020018280546105379061258b565b80156105845780601f1061055957610100808354040283529160200191610584565b820191906000526020600020905b81548152906001019060200180831161056757829003601f168201915b5050505050905090565b6008805460408051602080840282018101909252828152600093610887938793869084015b828210156106df576000848152602090206040805160c08101909152600484029091018054829060ff1660058111156105ee576105ee612204565b60058111156105ff576105ff612204565b815260018201546020820152600282015460ff80821615156040840152610100820481161515606084015262010000909104161515608082015260038201805460a09092019161064e9061258b565b80601f016020809104026020016040519081016040528092919081815260200182805461067a9061258b565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b505050505081525050815260200190600101906105b3565b505050506008600101805480602002602001604051908101604052809291908181526020016000905b82821015610851576000848152602090206040805160e08101909152600584029091018054829060ff16600481111561074357610743612204565b600481111561075457610754612204565b8152815461010090819004608090811b6001600160801b031990811660208501526001850154821b16604084015260028401546060840152600384015460ff8082161515928501929092529190910416151560a082015260048201805460c0909201916107c09061258b565b80601f01602080910402602001604051908101604052809291908181526020018280546107ec9061258b565b80156108395780601f1061080e57610100808354040283529160200191610839565b820191906000526020600020905b81548152906001019060200180831161081c57829003601f168201915b50505050508152505081526020019060010190610708565b5050604080516001600160a01b038a166020820152610882935001905060405160208183030381529060405261131c565b611380565b905060006108958282611481565b90506108a18382611534565b50505050565b60006108b2826116cd565b506000908152600460205260409020546001600160a01b031690565b60006108d982610adb565b9050806001600160a01b0316836001600160a01b03160361094b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061096757506109678133611237565b6109d95760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610942565b6109e3838361172c565b505050565b6109f2338261179a565b610a0e5760405162461bcd60e51b8152600401610942906125c5565b6109e38383836117f8565b6109e383838360405180602001604052806000815250611056565b604080516060808201835280825260006020830152818301529051631f6c2b9760e11b815282151560048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ed8572e906024015b600060405180830381865afa158015610ab3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104f69190810190612701565b6000818152600260205260408120546001600160a01b0316806104f65760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610942565b604080516060808201835280825260006020830152818301529051631778ed1360e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635de3b44c90610ba19086908690600401612735565b600060405180830381865afa158015610bbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610be69190810190612701565b9392505050565b60006001600160a01b038216610c575760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610942565b506001600160a01b031660009081526003602052604090205490565b610c7b611969565b610c8560006119c3565b565b610cad604080518082018252600080825282516020818101909452908152909182015290565b610cf77f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611a15565b905090565b6040805180820190915260608082526020820152604080516008805460606020820284018101855293830181815260009484928491879085015b82821015610e62576000848152602090206040805160c08101909152600484029091018054829060ff166005811115610d7157610d71612204565b6005811115610d8257610d82612204565b815260018201546020820152600282015460ff80821615156040840152610100820481161515606084015262010000909104161515608082015260038201805460a090920191610dd19061258b565b80601f0160208091040260200160405190810160405280929190818152602001828054610dfd9061258b565b8015610e4a5780601f10610e1f57610100808354040283529160200191610e4a565b820191906000526020600020905b815481529060010190602001808311610e2d57829003601f168201915b50505050508152505081526020019060010190610d36565b50505050815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610fd8576000848152602090206040805160e08101909152600584029091018054829060ff166004811115610eca57610eca612204565b6004811115610edb57610edb612204565b8152815461010090819004608090811b6001600160801b031990811660208501526001850154821b16604084015260028401546060840152600384015460ff8082161515928501929092529190910416151560a082015260048201805460c090920191610f479061258b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f739061258b565b8015610fc05780601f10610f9557610100808354040283529160200191610fc0565b820191906000526020600020905b815481529060010190602001808311610fa357829003601f168201915b50505050508152505081526020019060010190610e8f565b505050915250909392505050565b610fee611969565b610ff781611a83565b50565b60606001805461050b9061258b565b7f00000000000000000000000000000000000000000000000000000000000000001561104857604051632630e0df60e11b815260040160405180910390fd5b6110528282611aca565b5050565b611060338361179a565b61107c5760405162461bcd60e51b8152600401610942906125c5565b6108a184848484611ad5565b6060600780546110979061258b565b80601f01602080910402602001604051908101604052809291908181526020018280546110c39061258b565b80156111105780601f106110e557610100808354040283529160200191611110565b820191906000526020600020905b8154815290600101906020018083116110f357829003601f168201915b50505050509050919050565b604080516060808201835280825260006020830152818301529051631d1db46b60e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637476d1ac90610ba1908690869060040161275a565b604080516060808201835280825260006020830152818301529051631f785c9560e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631f785c95906111ea90879087908790600401612775565b600060405180830381865afa158015611207573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261122f9190810190612701565b949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000001561127857604051632630e0df60e11b815260040160405180910390fd5b6001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff16610be6565b6112ae611969565b6001600160a01b0381166113135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610942565b610ff7816119c3565b604080516060808201835280825260006020830152818301529051631a0d7ccb60e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636835f32c90610a96908590600401611e8d565b6040805160c0810182526000808252602082018190529181019190915260608082018190526080820181905260a08201526000858060200190518101906113c79190612a1a565b905060006113d6868686611b08565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166312b037ff8383611411610c87565b6040518463ffffffff1660e01b815260040161142f93929190612cf0565b6000604051808303816000875af115801561144e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261147691908101906130f6565b979650505050505050565b6000805b836060015151811015611518578260058111156114a4576114a4612204565b846060015182815181106114ba576114ba6131d6565b60200260200101516000015160058111156114d7576114d7612204565b0361150657836060015181815181106114f2576114f26131d6565b6020026020010151604001519150506104f6565b80611510816131ec565b915050611485565b508160405163267ac2cf60e01b81526004016109429190613213565b6001600160a01b03821661158a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610942565b6000818152600260205260409020546001600160a01b0316156115ef5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610942565b6115fd600083836001611ba5565b6000818152600260205260409020546001600160a01b0316156116625760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610942565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600260205260409020546001600160a01b0316610ff75760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610942565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061176182610adb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806117a683610adb565b9050806001600160a01b0316846001600160a01b031614806117cd57506117cd8185611237565b8061122f5750836001600160a01b03166117e6846108a7565b6001600160a01b031614949350505050565b826001600160a01b031661180b82610adb565b6001600160a01b0316146118315760405162461bcd60e51b815260040161094290613221565b6001600160a01b0382166118935760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610942565b6118a08383836001611ba5565b826001600160a01b03166118b382610adb565b6001600160a01b0316146118d95760405162461bcd60e51b815260040161094290613221565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6006546001600160a01b03163314610c855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610942565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611a3b604080518082018252600080825282516020818101909452908152909182015290565b6040518060400160405280846001600160801b0319168152602001611a7a84604080516020808201835260009091528151908101909152901515815290565b90529392505050565b6007611a8f82826132b4565b507f2e9b34e5ec7377754a85ec13c1e9a442a00db0c46dbdefbb143dd0371fd20c1c81604051611abf9190611e8d565b60405180910390a150565b611052338383611be9565b611ae08484846117f8565b611aec84848484611cb7565b6108a15760405162461bcd60e51b815260040161094290613373565b611b10611dba565b604051634c92019b60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639924033690611b60908790879087906004016133c5565b600060405180830381865afa158015611b7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261122f9190810190613519565b7f000000000000000000000000000000000000000000000000000000000000000015611be457604051632630e0df60e11b815260040160405180910390fd5b6108a1565b816001600160a01b0316836001600160a01b031603611c4a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610942565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60006001600160a01b0384163b15611dad57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611cfb9033908990889088906004016136d4565b6020604051808303816000875af1925050508015611d36575060408051601f3d908101601f19168201909252611d3391810190613707565b60015b611d93573d808015611d64576040519150601f19603f3d011682016040523d82523d6000602084013e611d69565b606091505b508051600003611d8b5760405162461bcd60e51b815260040161094290613373565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061122f565b50600161122f565b905290565b604051806080016040528060006001600160801b03191681526020016060815260200160608152602001611db5604051806060016040528060608152602001600015158152602001606081525090565b6001600160e01b031981168114610ff757600080fd5b600060208284031215611e3257600080fd5b8135610be681611e0a565b60005b83811015611e58578181015183820152602001611e40565b50506000910152565b60008151808452611e79816020860160208601611e3d565b601f01601f19169290920160200192915050565b602081526000610be66020830184611e61565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715611ed857611ed8611ea0565b60405290565b60405160c081016001600160401b0381118282101715611ed857611ed8611ea0565b60405160e081016001600160401b0381118282101715611ed857611ed8611ea0565b604051608081016001600160401b0381118282101715611ed857611ed8611ea0565b604051601f8201601f191681016001600160401b0381118282101715611f6c57611f6c611ea0565b604052919050565b60006001600160401b03821115611f8d57611f8d611ea0565b50601f01601f191660200190565b6000611fae611fa984611f74565b611f44565b9050828152838383011115611fc257600080fd5b828260208301376000602084830101529392505050565b600082601f830112611fea57600080fd5b610be683833560208501611f9b565b80356001600160a01b038116811461201057600080fd5b919050565b6000806040838503121561202857600080fd5b82356001600160401b0381111561203e57600080fd5b61204a85828601611fd9565b92505061205960208401611ff9565b90509250929050565b60006020828403121561207457600080fd5b5035919050565b6000806040838503121561208e57600080fd5b61209783611ff9565b946020939093013593505050565b6000806000606084860312156120ba57600080fd5b6120c384611ff9565b92506120d160208501611ff9565b9150604084013590509250925092565b8015158114610ff757600080fd5b60006020828403121561210157600080fd5b8135610be6816120e1565b60008151606084526121216060850182611e61565b9050602083015115156020850152604083015184820360408601526121468282611e61565b95945050505050565b602081526000610be6602083018461210c565b6000806040838503121561217557600080fd5b82356001600160401b038082111561218c57600080fd5b61219886838701611fd9565b935060208501359150808211156121ae57600080fd5b506121bb85828601611fd9565b9150509250929050565b6000602082840312156121d757600080fd5b610be682611ff9565b81516001600160801b031916815260208083015151151590820152604081016104f6565b634e487b7160e01b600052602160045260246000fd5b6006811061222a5761222a612204565b9052565b600082825180855260208086019550808260051b84010181860160005b848110156122c357601f19868403018952815160c061226b85835161221a565b818601518587015260408083015115159086015260608083015115159086015260808083015115159086015260a0918201519185018190526122af81860183611e61565b9a86019a945050509083019060010161224b565b5090979650505050505050565b6005811061222a5761222a612204565b6000815180845260208085019450848260051b860182860160005b858110156122c3578383038952815160e06123178583516122d0565b818701516001600160801b031990811686890152604080840151909116908601526060808301519086015260808083015115159086015260a08083015115159086015260c09182015191850181905261237281860183611e61565b9a87019a94505050908401906001016122fb565b6020815260008251604060208401526123a2606084018261222e565b90506020840151601f1984830301604085015261214682826122e0565b6000602082840312156123d157600080fd5b81356001600160401b038111156123e757600080fd5b8201601f810184136123f857600080fd5b61122f84823560208401611f9b565b6000806040838503121561241a57600080fd5b61242383611ff9565b91506020830135612433816120e1565b809150509250929050565b6000806000806080858703121561245457600080fd5b61245d85611ff9565b935061246b60208601611ff9565b92506040850135915060608501356001600160401b0381111561248d57600080fd5b61249987828801611fd9565b91505092959194509250565b600080604083850312156124b857600080fd5b82356124c3816120e1565b915060208301356001600160401b038111156124de57600080fd5b6121bb85828601611fd9565b6000806000606084860312156124ff57600080fd5b83356001600160401b038082111561251657600080fd5b61252287838801611fd9565b945060208601359150612534826120e1565b9092506040850135908082111561254a57600080fd5b5061255786828701611fd9565b9150509250925092565b6000806040838503121561257457600080fd5b61257d83611ff9565b915061205960208401611ff9565b600181811c9082168061259f57607f821691505b6020821081036125bf57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600082601f83011261262357600080fd5b8151612631611fa982611f74565b81815284602083860101111561264657600080fd5b61122f826020830160208701611e3d565b8051612010816120e1565b60006060828403121561267457600080fd5b604051606081016001600160401b03828210818311171561269757612697611ea0565b8160405282935084519150808211156126af57600080fd5b6126bb86838701612612565b8352602085015191506126cd826120e1565b81602084015260408501519150808211156126e757600080fd5b506126f485828601612612565b6040830152505092915050565b60006020828403121561271357600080fd5b81516001600160401b0381111561272957600080fd5b61122f84828501612662565b6040815260006127486040830185611e61565b82810360208401526121468185611e61565b821515815260406020820152600061122f6040830184611e61565b6060815260006127886060830186611e61565b841515602084015282810360408401526127a28185611e61565b9695505050505050565b80516001600160801b03198116811461201057600080fd5b60006001600160401b038211156127dd576127dd611ea0565b5060051b60200190565b80516006811061201057600080fd5b600082601f83011261280757600080fd5b81516020612817611fa9836127c4565b82815260059290921b8401810191818101908684111561283657600080fd5b8286015b848110156128f45780516001600160401b038082111561285a5760008081fd5b9088019060a0828b03601f19018113156128745760008081fd5b61287c611eb6565b6128878885016127e7565b8152604080850151612898816120e1565b828a01526060858101516128ab816120e1565b80838501525060809150818601518184015250828501519250838311156128d25760008081fd5b6128e08d8a85880101612612565b90820152865250505091830191830161283a565b509695505050505050565b80516005811061201057600080fd5b600082601f83011261291f57600080fd5b8151602061292f611fa9836127c4565b82815260059290921b8401810191818101908684111561294e57600080fd5b8286015b848110156128f45780516001600160401b03808211156129725760008081fd5b9088019060c0828b03601f190181131561298c5760008081fd5b612994611ede565b61299f8885016128ff565b815260406129ae8186016127ac565b8983015260606129bf8187016127ac565b8284015260809150818601516129d4816120e1565b9083015260a085810151828401529285015192848411156129f757600091508182fd5b612a058e8b86890101612612565b90830152508652505050918301918301612952565b60006020808385031215612a2d57600080fd5b82516001600160401b0380821115612a4457600080fd5b9084019060a08287031215612a5857600080fd5b612a60611eb6565b612a69836127ac565b8152612a768484016127ac565b8482015260408301516040820152606083015182811115612a9657600080fd5b612aa288828601612612565b60608301525060808084015183811115612abb57600080fd5b80850194505087601f850112612ad057600080fd5b8351612ade611fa9826127c4565b81815260059190911b8501860190868101908a831115612afd57600080fd5b8787015b83811015612be557805187811115612b195760008081fd5b880160a0818e03601f19011215612b305760008081fd5b612b38611eb6565b8a82015189811115612b4a5760008081fd5b612b588f8d838601016127f6565b825250604082015189811115612b6e5760008081fd5b612b7c8f8d8386010161290e565b8c83015250606082015160408201528682015189811115612b9d5760008081fd5b612bab8f8d83860101612612565b60608301525060a082015189811115612bc45760008081fd5b612bd28f8d83860101612612565b8289015250845250918801918801612b01565b50928401929092525090979650505050505050565b6000815180845260208085019450848260051b860182860160005b858110156122c3578383038952815160c0612c318583516122d0565b818701516001600160801b031990811686890152604080840151909116908601526060808301511515908601526080808301519086015260a091820151918501819052612c8081860183611e61565b9a87019a9450505090840190600101612c15565b6001600160801b031981511682526000602082015160806020850152612cbd608085018261222e565b905060408301518482036040860152612cd682826122e0565b91505060608301518482036060860152612146828261210c565b600060808083526001600160801b0319808751168285015260208088015182811660a087015250604088015191508160c08601526060880151915060a060e0860152612d40610120860183611e61565b88840151868203607f1901610100880152805180835291935082019082840190600581901b8501840160005b82811015612e7957601f198783030184528451805160a0808552815190850181905260c0600582901b86018101928a01919086019060005b81811015612e0e5760bf198886030183528351612dc286825161221a565b8c81015115158d870152604081015115156040870152606081015160608701528e810151905060a08f870152612dfb60a0870182611e61565b955050928b0192918b0191600101612da4565b505050508782015184820389860152612e278282612bfa565b9150506040820151604085015260608201518482036060860152612e4b8282611e61565b9150508982015191508381038a850152612e658183611e61565b968801969588019593505050600101612d6c565b50888103858a0152612e8b818c612c94565b8a516001600160801b03191660408b015260208b015151151560608b0152975061122f9650505050505050565b600082601f830112612ec957600080fd5b81516020612ed9611fa9836127c4565b82815260059290921b84018101918181019086841115612ef857600080fd5b8286015b848110156128f45780516001600160401b0380821115612f1c5760008081fd5b9088019060a0828b03601f1901811315612f365760008081fd5b612f3e611eb6565b612f498885016127e7565b8152604080850151612f5a816120e1565b808a8401525060608086015182840152608091508186015185811115612f805760008081fd5b612f8e8f8c838a0101612612565b82850152505082850151925083831115612fa85760008081fd5b612fb68d8a85880101612612565b908201528652505050918301918301612efc565b600082601f830112612fdb57600080fd5b81516020612feb611fa9836127c4565b82815260059290921b8401810191818101908684111561300a57600080fd5b8286015b848110156128f45780516001600160401b038082111561302e5760008081fd5b9088019060e0828b03601f19018113156130485760008081fd5b613050611f00565b61305b8885016128ff565b8152604061306a8186016127ac565b89830152606061307b8187016127ac565b828401526080915081860151818401525060a080860151858111156130a05760008081fd5b6130ae8f8c838a0101612612565b838501525060c09150818601518184015250828501519250838311156130d45760008081fd5b6130e28d8a85880101612612565b90820152865250505091830191830161300e565b60006020828403121561310857600080fd5b81516001600160401b038082111561311f57600080fd5b9083019060c0828603121561313357600080fd5b61313b611ede565b613144836127ac565b8152613152602084016127ac565b60208201526040830151604082015260608301518281111561317357600080fd5b61317f87828601612eb8565b60608301525060808301518281111561319757600080fd5b6131a387828601612fca565b60808301525060a0830151828111156131bb57600080fd5b6131c787828601612612565b60a08301525095945050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161320c57634e487b7160e01b600052601160045260246000fd5b5060010190565b602081016104f6828461221a565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b601f8211156109e357600081815260208120601f850160051c8101602086101561328d5750805b601f850160051c820191505b818110156132ac57828155600101613299565b505050505050565b81516001600160401b038111156132cd576132cd611ea0565b6132e1816132db845461258b565b84613266565b602080601f83116001811461331657600084156132fe5750858301515b600019600386901b1c1916600185901b1785556132ac565b600085815260208120601f198616915b8281101561334557888601518255948401946001909101908401613326565b50858210156133635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6060815260006133d8606083018661222e565b82810360208401526133ea81866122e0565b905082810360408401526127a2818561210c565b600082601f83011261340f57600080fd5b8151602061341f611fa9836127c4565b82815260059290921b8401810191818101908684111561343e57600080fd5b8286015b848110156128f45780516001600160401b03808211156134625760008081fd5b9088019060e0828b03601f190181131561347c5760008081fd5b613484611f00565b61348f8885016128ff565b8152604061349e8186016127ac565b8983015260606134af8187016127ac565b828401526080915081860151818401525060a06134cd818701612657565b8284015260c091506134e0828701612657565b908301529184015191838311156134f75760008081fd5b6135058d8a85880101612612565b908201528652505050918301918301613442565b6000602080838503121561352c57600080fd5b82516001600160401b038082111561354357600080fd5b908401906080828703121561355757600080fd5b61355f611f22565b613568836127ac565b8152838301518281111561357b57600080fd5b8301601f8101881361358c57600080fd5b805161359a611fa9826127c4565b81815260059190911b8201860190868101908a8311156135b957600080fd5b8784015b83811015613676578051878111156135d457600080fd5b850160c0818e03601f190112156135ea57600080fd5b6135f2611ede565b6135fd8b83016127e7565b815260408201518b8201526060820151613616816120e1565b60408201526080820151613629816120e1565b606082015260a082015161363c816120e1565b608082015260c0820151898111156136545760008081fd5b6136628f8d83860101612612565b60a0830152508452509188019188016135bd565b50808886015250505050604083015193508184111561369457600080fd5b6136a0878585016133fe565b604082015260608301519350818411156136b957600080fd5b6136c587858501612662565b60608201529695505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906127a290830184611e61565b60006020828403121561371957600080fd5b8151610be681611e0a56fea2646970667358221220951f770327b0f3c4c923ab0c5ab39b6259e0990664bc13501bf0f2c1cf10535864736f6c63430008140033",
+ "sourceMap": "223:3262:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300:26;;;;;;:::i;:::-;;:::i;:::-;;;661:14:57;;654:22;636:41;;624:2;609:18;1570:300:26;;;;;;;;2471:98;;;:::i;:::-;;;;;;;:::i;1192:387:54:-;;;;;;:::i;:::-;;:::i;:::-;;3935:167:26;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;4571:32:57;;;4553:51;;4541:2;4526:18;3935:167:26;4407:203:57;3468:406:26;;;;;;:::i;:::-;;:::i;4612:296::-;;;;;;:::i;:::-;;:::i;4974:149::-;;;;;;:::i;:::-;;:::i;972:125:41:-;;1054:42;972:125;;23032:158;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2190:219:26:-;;;;;;:::i;:::-;;:::i;22593:191:41:-;;;;;;:::i;:::-;;:::i;1929:204:26:-;;;;;;:::i;:::-;;:::i;:::-;;;7427:25:57;;;7415:2;7400:18;1929:204:26;7281:177:57;1824:101:18;;;:::i;336:48:54:-;;383:1;336:48;;;;;7635:4:57;7623:17;;;7605:36;;7593:2;7578:18;336:48:54;7463:184:57;2333:126:41;;;:::i;:::-;;;;;;;:::i;1583:131:54:-;;;:::i;:::-;;;;;;;:::i;1201:85:18:-;1273:6;;-1:-1:-1;;;;;1273:6:18;1201:85;;1718:103:54;;;;;;:::i;:::-;;:::i;2633:102:26:-;;;:::i;1430:43:41:-;;;;;2569:214:54;;;;;;:::i;:::-;;:::i;5189:276:26:-;;;;;;:::i;:::-;;:::i;1395:31:41:-;;;;;;;;-1:-1:-1;;;;;;13261:52:57;;;13243:71;;13231:2;13216:18;1395:31:41;13097:223:57;528:41:54;;;;;1825:103;;;;;;:::i;:::-;;:::i;914:53:41:-;;966:1;914:53;;23194:205;;;;;;:::i;:::-;;:::i;22788:240::-;;;;;;:::i;:::-;;:::i;2861:248:54:-;;;;;;:::i;:::-;;:::i;2074:198:18:-;;;;;;:::i;:::-;;:::i;1570:300:26:-;1672:4;-1:-1:-1;;;;;;1707:40:26;;-1:-1:-1;;;1707:40:26;;:104;;-1:-1:-1;;;;;;;1763:48:26;;-1:-1:-1;;;1763:48:26;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:34;;;1827:36:26;1688:175;1570:300;-1:-1:-1;;1570:300:26:o;2471:98::-;2525:13;2557:5;2550:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:98;:::o;1192:387:54:-;1379:9;1321:172;;;;;;;;;;;;;;;;;;;1278:40;;1321:172;;1351:13;;1278:40;;1321:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1410:9;:16;;1321:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;;1321:172:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1470:14:54;;;-1:-1:-1;;;;;4571:32:57;;1470:14:54;;;4553:51:57;1445:41:54;;-1:-1:-1;4526:18:57;;-1:-1:-1;1470:14:54;;;;;;;;;;;;1445;:41::i;:::-;1321:6;:172::i;:::-;1278:215;-1:-1:-1;1500:15:54;1518:32;1278:215;1500:15;1518:16;:32::i;:::-;1500:50;;1556:18;1562:2;1566:7;1556:5;:18::i;:::-;1272:307;;1192:387;;:::o;3935:167:26:-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:26;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:26;;3935:167::o;3468:406::-;3548:13;3564:23;3579:7;3564:14;:23::i;:::-;3548:39;;3611:5;-1:-1:-1;;;;;3605:11:26;:2;-1:-1:-1;;;;;3605:11:26;;3597:57;;;;-1:-1:-1;;;3597:57:26;;15304:2:57;3597:57:26;;;15286:21:57;15343:2;15323:18;;;15316:30;15382:34;15362:18;;;15355:62;-1:-1:-1;;;15433:18:57;;;15426:31;15474:19;;3597:57:26;;;;;;;;;719:10:31;-1:-1:-1;;;;;3686:21:26;;;;:62;;-1:-1:-1;3711:37:26;3728:5;719:10:31;2861:248:54;:::i;3711:37:26:-;3665:170;;;;-1:-1:-1;;;3665:170:26;;15706:2:57;3665:170:26;;;15688:21:57;15745:2;15725:18;;;15718:30;15784:34;15764:18;;;15757:62;15855:31;15835:18;;;15828:59;15904:19;;3665:170:26;15504:425:57;3665:170:26;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3538:336;3468:406;;:::o;4612:296::-;4771:41;719:10:31;4804:7:26;4771:18;:41::i;:::-;4763:99;;;;-1:-1:-1;;;4763:99:26;;;;;;;:::i;:::-;4873:28;4883:4;4889:2;4893:7;4873:9;:28::i;4974:149::-;5077:39;5094:4;5100:2;5104:7;5077:39;;;;;;;;;;;;:16;:39::i;23032:158:41:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;23142:43:41;;-1:-1:-1;;;23142:43:41;;661:14:57;;654:22;23142:43:41;;;636:41:57;-1:-1:-1;;;;;23142:17:41;:23;;;;609:18:57;;23142:43:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23142:43:41;;;;;;;;;;;;:::i;2190:219:26:-;2262:7;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:26;;2324:56;;;;-1:-1:-1;;;2324:56:26;;18400:2:57;2324:56:26;;;18382:21:57;18439:2;18419:18;;;18412:30;-1:-1:-1;;;18458:18:57;;;18451:54;18522:18;;2324:56:26;18198:348:57;22593:191:41;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;22736:43:41;;-1:-1:-1;;;22736:43:41;;:17;-1:-1:-1;;;;;22736:23:41;;;;:43;;22760:7;;22769:9;;22736:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22736:43:41;;;;;;;;;;;;:::i;:::-;22729:50;22593:191;-1:-1:-1;;;22593:191:41:o;1929:204:26:-;2001:7;-1:-1:-1;;;;;2028:19:26;;2020:73;;;;-1:-1:-1;;;2020:73:26;;19137:2:57;2020:73:26;;;19119:21:57;19176:2;19156:18;;;19149:30;19215:34;19195:18;;;19188:62;-1:-1:-1;;;19266:18:57;;;19259:39;19315:19;;2020:73:26;18935:405:57;2020:73:26;-1:-1:-1;;;;;;2110:16:26;;;;;:9;:16;;;;;;;1929:204::o;1824:101:18:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;2333:126:41:-;2372:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2372:25:41;2412:42;2424:6;2432:21;2412:11;:42::i;:::-;2405:49;;2333:126;:::o;1583:131:54:-;-1:-1:-1;;;;;;;;;;;;;;;;;1652:36:54;;;1679:9;1652:36;;;;;;;;;;;;;;;;;;:24;;:36;;1679:9;;1652:24;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;;1652:36:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1652:36:54;;-1:-1:-1;1652:36:54;;1583:131;-1:-1:-1;;;1583:131:54:o;1718:103::-;1094:13:18;:11;:13::i;:::-;1791:25:54::1;1808:7;1791:16;:25::i;:::-;1718:103:::0;:::o;2633:102:26:-;2689:13;2721:7;2714:14;;;;;:::i;2569:214:54:-;2663:19;2659:70;;;2699:23;;-1:-1:-1;;;2699:23:54;;;;;;;;;;;2659:70;2734:44;2759:8;2769;2734:24;:44::i;:::-;2569:214;;:::o;5189:276:26:-;5319:41;719:10:31;5352:7:26;5319:18;:41::i;:::-;5311:99;;;;-1:-1:-1;;;5311:99:26;;;;;;;:::i;:::-;5420:38;5434:4;5440:2;5444:7;5453:4;5420:13;:38::i;1825:103:54:-;1882:13;1910;1903:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1825:103;;;:::o;23194:205:41:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;23340:54:41;;-1:-1:-1;;;23340:54:41;;:17;-1:-1:-1;;;;;23340:23:41;;;;:54;;23364:18;;23384:9;;23340:54;;;:::i;22788:240::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;22960:63:41;;-1:-1:-1;;;22960:63:41;;:17;-1:-1:-1;;;;;22960:23:41;;;;:63;;22984:7;;22993:18;;23013:9;;22960:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22960:63:41;;;;;;;;;;;;:::i;:::-;22953:70;22788:240;-1:-1:-1;;;;22788:240:41:o;2861:248:54:-;2970:4;2986:19;2982:70;;;3022:23;;-1:-1:-1;;;3022:23:54;;;;;;;;;;;2982:70;-1:-1:-1;;;;;4508:25:26;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;3064:40:54;4388:162:26;2074:198:18;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:18;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:18;;20316:2:57;2154:73:18::1;::::0;::::1;20298:21:57::0;20355:2;20335:18;;;20328:30;20394:34;20374:18;;;20367:62;-1:-1:-1;;;20445:18:57;;;20438:36;20491:19;;2154:73:18::1;20114:402:57::0;2154:73:18::1;2237:28;2256:8;2237:18;:28::i;22240:144:41:-:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;22347:32:41;;-1:-1:-1;;;22347:32:41;;:17;-1:-1:-1;;;;;22347:23:41;;;;:32;;22371:7;;22347:32;;;:::i;11242:460::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11458:36:41;11508:13;11497:49;;;;;;;;;;;;:::i;:::-;11458:88;;11552:34;11589:38;11602:5;11609:6;11617:9;11589:12;:38::i;:::-;11552:75;;11640:21;-1:-1:-1;;;;;11640:28:41;;11669:8;11679:7;11688:8;:6;:8::i;:::-;11640:57;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11640:57:41;;;;;;;;;;;;:::i;:::-;11633:64;11242:460;-1:-1:-1;;;;;;;11242:460:41:o;176:397:46:-;291:7;;360:154;384:6;:12;;;:19;380:1;:23;360:154;;;450:8;422:36;;;;;;;;:::i;:::-;:6;:12;;;435:1;422:15;;;;;;;;:::i;:::-;;;;;;;:24;;;:36;;;;;;;;:::i;:::-;;418:90;;477:6;:12;;;490:1;477:15;;;;;;;;:::i;:::-;;;;;;;:22;;;470:29;;;;;418:90;405:3;;;;:::i;:::-;;;;360:154;;;;559:8;526:42;;-1:-1:-1;;;526:42:46;;;;;;;;:::i;8925:920:26:-;-1:-1:-1;;;;;9004:16:26;;8996:61;;;;-1:-1:-1;;;8996:61:26;;40195:2:57;8996:61:26;;;40177:21:57;;;40214:18;;;40207:30;40273:34;40253:18;;;40246:62;40325:18;;8996:61:26;39993:356:57;8996:61:26;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:26;7208:31;9067:58;;;;-1:-1:-1;;;9067:58:26;;40556:2:57;9067:58:26;;;40538:21:57;40595:2;40575:18;;;40568:30;40634;40614:18;;;40607:58;40682:18;;9067:58:26;40354:352:57;9067:58:26;9136:48;9165:1;9169:2;9173:7;9182:1;9136:20;:48::i;:::-;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:26;7208:31;9271:58;;;;-1:-1:-1;;;9271:58:26;;40556:2:57;9271:58:26;;;40538:21:57;40595:2;40575:18;;;40568:30;40634;40614:18;;;40607:58;40682:18;;9271:58:26;40354:352:57;9271:58:26;-1:-1:-1;;;;;9671:13:26;;;;;;:9;:13;;;;;;;;:18;;9688:1;9671:18;;;9710:16;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9710:21:26;;;;;9747:33;9718:7;;9671:13;;9747:33;;9671:13;;9747:33;2569:214:54;;:::o;13240:133:26:-;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:26;13313:53;;;;-1:-1:-1;;;13313:53:26;;18400:2:57;13313:53:26;;;18382:21:57;18439:2;18419:18;;;18412:30;-1:-1:-1;;;18458:18:57;;;18451:54;18522:18;;13313:53:26;18198:348:57;12572:171:26;12646:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;12646:29:26;-1:-1:-1;;;;;12646:29:26;;;;;;;;:24;;12699:23;12646:24;12699:14;:23::i;:::-;-1:-1:-1;;;;;12690:46:26;;;;;;;;;;;12572:171;;:::o;7404:261::-;7497:4;7513:13;7529:23;7544:7;7529:14;:23::i;:::-;7513:39;;7581:5;-1:-1:-1;;;;;7570:16:26;:7;-1:-1:-1;;;;;7570:16:26;;:52;;;;7590:32;7607:5;7614:7;7590:16;:32::i;:::-;7570:87;;;;7650:7;-1:-1:-1;;;;;7626:31:26;:20;7638:7;7626:11;:20::i;:::-;-1:-1:-1;;;;;7626:31:26;;7562:96;7404:261;-1:-1:-1;;;;7404:261:26:o;11257:1203::-;11381:4;-1:-1:-1;;;;;11354:31:26;:23;11369:7;11354:14;:23::i;:::-;-1:-1:-1;;;;;11354:31:26;;11346:81;;;;-1:-1:-1;;;11346:81:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;11445:16:26;;11437:65;;;;-1:-1:-1;;;11437:65:26;;41319:2:57;11437:65:26;;;41301:21:57;41358:2;41338:18;;;41331:30;41397:34;41377:18;;;41370:62;-1:-1:-1;;;41448:18:57;;;41441:34;41492:19;;11437:65:26;41117:400:57;11437:65:26;11513:42;11534:4;11540:2;11544:7;11553:1;11513:20;:42::i;:::-;11682:4;-1:-1:-1;;;;;11655:31:26;:23;11670:7;11655:14;:23::i;:::-;-1:-1:-1;;;;;11655:31:26;;11647:81;;;;-1:-1:-1;;;11647:81:26;;;;;;;:::i;:::-;11797:24;;;;:15;:24;;;;;;;;11790:31;;-1:-1:-1;;;;;;11790:31:26;;;;;;-1:-1:-1;;;;;12265:15:26;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12265:20:26;;;12299:13;;;;;;;;;:18;;11790:31;12299:18;;;12337:16;;;:7;:16;;;;;;:21;;;;;;;;;;12374:27;;11813:7;;12374:27;;;3538:336;3468:406;;:::o;1359:130:18:-;1273:6;;-1:-1:-1;;;;;1273:6:18;719:10:31;1422:23:18;1414:68;;;;-1:-1:-1;;;1414:68:18;;41724:2:57;1414:68:18;;;41706:21:57;;;41743:18;;;41736:30;41802:34;41782:18;;;41775:62;41854:18;;1414:68:18;41522:356:57;2426:187:18;2518:6;;;-1:-1:-1;;;;;2534:17:18;;;-1:-1:-1;;;;;;2534:17:18;;;;;;;2566:40;;2518:6;;;2534:17;2518:6;;2566:40;;2499:16;;2566:40;2489:124;2426:187;:::o;2632:222:41:-;2729:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2729:25:41;2769:80;;;;;;;;2796:5;-1:-1:-1;;;;;2769:80:41;;;;;;2810:37;2827:19;-1:-1:-1;;;;;;;;;;;;;3100:55:41;;;;;;;;;;;;;;2992:168;2810:37;2769:80;;2762:87;2632:222;-1:-1:-1;;;2632:222:41:o;2258:126:54:-;2321:13;:23;2337:7;2321:13;:23;:::i;:::-;;2355:24;2371:7;2355:24;;;;;;:::i;:::-;;;;;;;;2258:126;:::o;4169:153:26:-;4263:52;719:10:31;4296:8:26;4306;4263:18;:52::i;6326:267::-;6438:28;6448:4;6454:2;6458:7;6438:9;:28::i;:::-;6484:47;6507:4;6513:2;6517:7;6526:4;6484:22;:47::i;:::-;6476:110;;;;-1:-1:-1;;;6476:110:26;;;;;;;:::i;26123:247:41:-;26277:26;;:::i;:::-;26318:47;;-1:-1:-1;;;26318:47:41;;-1:-1:-1;;;;;26318:15:41;:21;;;;:47;;26340:5;;26347:6;;26355:9;;26318:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26318:47:41;;;;;;;;;;;;:::i;3192:291:54:-;3345:19;3341:70;;;3381:23;;-1:-1:-1;;;3381:23:54;;;;;;;;;;;3341:70;3416:62;1192:387;12879:277:26;12999:8;-1:-1:-1;;;;;12990:17:26;:5;-1:-1:-1;;;;;12990:17:26;;12982:55;;;;-1:-1:-1;;;12982:55:26;;50276:2:57;12982:55:26;;;50258:21:57;50315:2;50295:18;;;50288:30;50354:27;50334:18;;;50327:55;50399:18;;12982:55:26;50074:349:57;12982:55:26;-1:-1:-1;;;;;13047:25:26;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13047:46:26;;;;;;;;;;13108:41;;636::57;;;13108::26;;609:18:57;13108:41:26;;;;;;;12879:277;;;:::o;13925:831::-;14074:4;-1:-1:-1;;;;;14094:13:26;;1702:19:30;:23;14090:660:26;;14129:71;;-1:-1:-1;;;14129:71:26;;-1:-1:-1;;;;;14129:36:26;;;;;:71;;719:10:31;;14180:4:26;;14186:7;;14195:4;;14129:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14129:71:26;;;;;;;;-1:-1:-1;;14129:71:26;;;;;;;;;;;;:::i;:::-;;;14125:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14367:6;:13;14384:1;14367:18;14363:321;;14409:60;;-1:-1:-1;;;14409:60:26;;;;;;;:::i;14363:321::-;14636:6;14630:13;14621:6;14617:2;14613:15;14606:38;14125:573;-1:-1:-1;;;;;;14250:51:26;-1:-1:-1;;;14250:51:26;;-1:-1:-1;14243:58:26;;14090:660;-1:-1:-1;14735:4:26;14728:11;;-1:-1:-1;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:131:57;-1:-1:-1;;;;;;88:32:57;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;688:250::-;773:1;783:113;797:6;794:1;791:13;783:113;;;873:11;;;867:18;854:11;;;847:39;819:2;812:10;783:113;;;-1:-1:-1;;930:1:57;912:16;;905:27;688:250::o;943:271::-;985:3;1023:5;1017:12;1050:6;1045:3;1038:19;1066:76;1135:6;1128:4;1123:3;1119:14;1112:4;1105:5;1101:16;1066:76;:::i;:::-;1196:2;1175:15;-1:-1:-1;;1171:29:57;1162:39;;;;1203:4;1158:50;;943:271;-1:-1:-1;;943:271:57:o;1219:220::-;1368:2;1357:9;1350:21;1331:4;1388:45;1429:2;1418:9;1414:18;1406:6;1388:45;:::i;1444:127::-;1505:10;1500:3;1496:20;1493:1;1486:31;1536:4;1533:1;1526:15;1560:4;1557:1;1550:15;1576:253;1648:2;1642:9;1690:4;1678:17;;-1:-1:-1;;;;;1710:34:57;;1746:22;;;1707:62;1704:88;;;1772:18;;:::i;:::-;1808:2;1801:22;1576:253;:::o;1834:::-;1906:2;1900:9;1948:4;1936:17;;-1:-1:-1;;;;;1968:34:57;;2004:22;;;1965:62;1962:88;;;2030:18;;:::i;2092:253::-;2164:2;2158:9;2206:4;2194:17;;-1:-1:-1;;;;;2226:34:57;;2262:22;;;2223:62;2220:88;;;2288:18;;:::i;2350:253::-;2422:2;2416:9;2464:4;2452:17;;-1:-1:-1;;;;;2484:34:57;;2520:22;;;2481:62;2478:88;;;2546:18;;:::i;2608:275::-;2679:2;2673:9;2744:2;2725:13;;-1:-1:-1;;2721:27:57;2709:40;;-1:-1:-1;;;;;2764:34:57;;2800:22;;;2761:62;2758:88;;;2826:18;;:::i;:::-;2862:2;2855:22;2608:275;;-1:-1:-1;2608:275:57:o;2888:186::-;2936:4;-1:-1:-1;;;;;2961:6:57;2958:30;2955:56;;;2991:18;;:::i;:::-;-1:-1:-1;3057:2:57;3036:15;-1:-1:-1;;3032:29:57;3063:4;3028:40;;2888:186::o;3079:336::-;3143:5;3172:52;3188:35;3216:6;3188:35;:::i;:::-;3172:52;:::i;:::-;3163:61;;3247:6;3240:5;3233:21;3287:3;3278:6;3273:3;3269:16;3266:25;3263:45;;;3304:1;3301;3294:12;3263:45;3353:6;3348:3;3341:4;3334:5;3330:16;3317:43;3407:1;3400:4;3391:6;3384:5;3380:18;3376:29;3369:40;3079:336;;;;;:::o;3420:220::-;3462:5;3515:3;3508:4;3500:6;3496:17;3492:27;3482:55;;3533:1;3530;3523:12;3482:55;3555:79;3630:3;3621:6;3608:20;3601:4;3593:6;3589:17;3555:79;:::i;3645:173::-;3713:20;;-1:-1:-1;;;;;3762:31:57;;3752:42;;3742:70;;3808:1;3805;3798:12;3742:70;3645:173;;;:::o;3823:394::-;3900:6;3908;3961:2;3949:9;3940:7;3936:23;3932:32;3929:52;;;3977:1;3974;3967:12;3929:52;4017:9;4004:23;-1:-1:-1;;;;;4042:6:57;4039:30;4036:50;;;4082:1;4079;4072:12;4036:50;4105:49;4146:7;4137:6;4126:9;4122:22;4105:49;:::i;:::-;4095:59;;;4173:38;4207:2;4196:9;4192:18;4173:38;:::i;:::-;4163:48;;3823:394;;;;;:::o;4222:180::-;4281:6;4334:2;4322:9;4313:7;4309:23;4305:32;4302:52;;;4350:1;4347;4340:12;4302:52;-1:-1:-1;4373:23:57;;4222:180;-1:-1:-1;4222:180:57:o;4615:254::-;4683:6;4691;4744:2;4732:9;4723:7;4719:23;4715:32;4712:52;;;4760:1;4757;4750:12;4712:52;4783:29;4802:9;4783:29;:::i;:::-;4773:39;4859:2;4844:18;;;;4831:32;;-1:-1:-1;;;4615:254:57:o;4874:328::-;4951:6;4959;4967;5020:2;5008:9;4999:7;4995:23;4991:32;4988:52;;;5036:1;5033;5026:12;4988:52;5059:29;5078:9;5059:29;:::i;:::-;5049:39;;5107:38;5141:2;5130:9;5126:18;5107:38;:::i;:::-;5097:48;;5192:2;5181:9;5177:18;5164:32;5154:42;;4874:328;;;;;:::o;5443:118::-;5529:5;5522:13;5515:21;5508:5;5505:32;5495:60;;5551:1;5548;5541:12;5566:241;5622:6;5675:2;5663:9;5654:7;5650:23;5646:32;5643:52;;;5691:1;5688;5681:12;5643:52;5730:9;5717:23;5749:28;5771:5;5749:28;:::i;5812:437::-;5871:3;5915:5;5909:12;5942:4;5937:3;5930:17;5968:47;6009:4;6004:3;6000:14;5986:12;5968:47;:::i;:::-;5956:59;;6078:4;6071:5;6067:16;6061:23;6054:31;6047:39;6040:4;6035:3;6031:14;6024:63;6135:4;6128:5;6124:16;6118:23;6183:3;6177:4;6173:14;6166:4;6161:3;6157:14;6150:38;6204:39;6238:4;6222:14;6204:39;:::i;:::-;6197:46;5812:437;-1:-1:-1;;;;;5812:437:57:o;6254:287::-;6453:2;6442:9;6435:21;6416:4;6473:62;6531:2;6520:9;6516:18;6508:6;6473:62;:::i;6546:539::-;6632:6;6640;6693:2;6681:9;6672:7;6668:23;6664:32;6661:52;;;6709:1;6706;6699:12;6661:52;6749:9;6736:23;-1:-1:-1;;;;;6819:2:57;6811:6;6808:14;6805:34;;;6835:1;6832;6825:12;6805:34;6858:49;6899:7;6890:6;6879:9;6875:22;6858:49;:::i;:::-;6848:59;;6960:2;6949:9;6945:18;6932:32;6916:48;;6989:2;6979:8;6976:16;6973:36;;;7005:1;7002;6995:12;6973:36;;7028:51;7071:7;7060:8;7049:9;7045:24;7028:51;:::i;:::-;7018:61;;;6546:539;;;;;:::o;7090:186::-;7149:6;7202:2;7190:9;7181:7;7177:23;7173:32;7170:52;;;7218:1;7215;7208:12;7170:52;7241:29;7260:9;7241:29;:::i;7885:281::-;7740:12;;-1:-1:-1;;;;;;7736:58:57;7724:71;;7864:4;7853:16;;;7847:23;7841:30;7834:38;7827:46;7811:14;;;7804:70;8093:2;8078:18;;8105:55;7652:228;8171:127;8232:10;8227:3;8223:20;8220:1;8213:31;8263:4;8260:1;8253:15;8287:4;8284:1;8277:15;8303:139;8383:1;8376:5;8373:12;8363:46;;8389:18;;:::i;:::-;8418;;8303:139::o;8447:1190::-;8511:3;8542;8574:5;8568:12;8601:6;8596:3;8589:19;8627:4;8656:2;8651:3;8647:12;8640:19;;8712:2;8702:6;8699:1;8695:14;8688:5;8684:26;8680:35;8749:2;8742:5;8738:14;8770:1;8780:831;8794:6;8791:1;8788:13;8780:831;;;8881:2;8877:7;8869:5;8863:4;8859:16;8855:30;8850:3;8843:43;8915:6;8909:13;8945:4;8962:41;8998:4;8993:2;8987:9;8962:41;:::i;:::-;9044:11;;;9038:18;9023:13;;;9016:41;9080:4;9139:11;;;9133:18;9126:26;9119:34;9104:13;;;9097:57;9177:4;9236:11;;;9230:18;9223:26;9216:34;9201:13;;;9194:57;9274:4;9333:11;;;9327:18;9320:26;9313:34;9298:13;;;9291:57;9371:4;9414:11;;;9408:18;9446:13;;;9439:25;;;9485:46;9517:13;;;9408:18;9485:46;:::i;:::-;9589:12;;;;9477:54;-1:-1:-1;;;9554:15:57;;;;8816:1;8809:9;8780:831;;;-1:-1:-1;9627:4:57;;8447:1190;-1:-1:-1;;;;;;;8447:1190:57:o;9642:140::-;9723:1;9716:5;9713:12;9703:46;;9729:18;;:::i;9787:1403::-;9852:3;9890:5;9884:12;9917:6;9912:3;9905:19;9943:4;9972:2;9967:3;9963:12;9956:19;;9997:3;10037:6;10034:1;10030:14;10025:3;10021:24;10079:2;10072:5;10068:14;10100:1;10110:1054;10124:6;10121:1;10118:13;10110:1054;;;10195:5;10189:4;10185:16;10180:3;10173:29;10231:6;10225:13;10261:4;10278:42;10315:4;10310:2;10304:9;10278:42;:::i;:::-;10359:11;;;10353:18;-1:-1:-1;;;;;;10468:21:57;;;10453:13;;;10446:44;10513:4;10562:11;;;10556:18;10552:27;;;10537:13;;;10530:50;10603:4;10648:11;;;10642:18;10627:13;;;10620:41;10684:4;10743:11;;;10737:18;10730:26;10723:34;10708:13;;;10701:57;10781:4;10826:11;;;10820:18;470:13;463:21;10883:13;;;451:34;10920:4;10965:11;;;10959:18;10997:13;;;10990:25;;;11036:48;11070:13;;;10959:18;11036:48;:::i;:::-;11142:12;;;;11028:56;-1:-1:-1;;;11107:15:57;;;;10146:1;10139:9;10110:1054;;11195:580;11378:2;11367:9;11360:21;11341:4;11416:6;11410:13;11459:4;11454:2;11443:9;11439:18;11432:32;11487:73;11556:2;11545:9;11541:18;11527:12;11487:73;:::i;:::-;11473:87;;11609:2;11601:6;11597:15;11591:22;11683:2;11679:7;11667:9;11659:6;11655:22;11651:36;11644:4;11633:9;11629:20;11622:66;11705:64;11762:6;11746:14;11705:64;:::i;11780:450::-;11849:6;11902:2;11890:9;11881:7;11877:23;11873:32;11870:52;;;11918:1;11915;11908:12;11870:52;11958:9;11945:23;-1:-1:-1;;;;;11983:6:57;11980:30;11977:50;;;12023:1;12020;12013:12;11977:50;12046:22;;12099:4;12091:13;;12087:27;-1:-1:-1;12077:55:57;;12128:1;12125;12118:12;12077:55;12151:73;12216:7;12211:2;12198:16;12193:2;12189;12185:11;12151:73;:::i;12235:315::-;12300:6;12308;12361:2;12349:9;12340:7;12336:23;12332:32;12329:52;;;12377:1;12374;12367:12;12329:52;12400:29;12419:9;12400:29;:::i;:::-;12390:39;;12479:2;12468:9;12464:18;12451:32;12492:28;12514:5;12492:28;:::i;:::-;12539:5;12529:15;;;12235:315;;;;;:::o;12555:537::-;12650:6;12658;12666;12674;12727:3;12715:9;12706:7;12702:23;12698:33;12695:53;;;12744:1;12741;12734:12;12695:53;12767:29;12786:9;12767:29;:::i;:::-;12757:39;;12815:38;12849:2;12838:9;12834:18;12815:38;:::i;:::-;12805:48;;12900:2;12889:9;12885:18;12872:32;12862:42;;12955:2;12944:9;12940:18;12927:32;-1:-1:-1;;;;;12974:6:57;12971:30;12968:50;;;13014:1;13011;13004:12;12968:50;13037:49;13078:7;13069:6;13058:9;13054:22;13037:49;:::i;:::-;13027:59;;;12555:537;;;;;;;:::o;13325:449::-;13399:6;13407;13460:2;13448:9;13439:7;13435:23;13431:32;13428:52;;;13476:1;13473;13466:12;13428:52;13515:9;13502:23;13534:28;13556:5;13534:28;:::i;:::-;13581:5;-1:-1:-1;13637:2:57;13622:18;;13609:32;-1:-1:-1;;;;;13653:30:57;;13650:50;;;13696:1;13693;13686:12;13650:50;13719:49;13760:7;13751:6;13740:9;13736:22;13719:49;:::i;13779:668::-;13871:6;13879;13887;13940:2;13928:9;13919:7;13915:23;13911:32;13908:52;;;13956:1;13953;13946:12;13908:52;13996:9;13983:23;-1:-1:-1;;;;;14066:2:57;14058:6;14055:14;14052:34;;;14082:1;14079;14072:12;14052:34;14105:49;14146:7;14137:6;14126:9;14122:22;14105:49;:::i;:::-;14095:59;;14204:2;14193:9;14189:18;14176:32;14163:45;;14217:28;14239:5;14217:28;:::i;:::-;14264:5;;-1:-1:-1;14322:2:57;14307:18;;14294:32;;14338:16;;;14335:36;;;14367:1;14364;14357:12;14335:36;;14390:51;14433:7;14422:8;14411:9;14407:24;14390:51;:::i;:::-;14380:61;;;13779:668;;;;;:::o;14452:260::-;14520:6;14528;14581:2;14569:9;14560:7;14556:23;14552:32;14549:52;;;14597:1;14594;14587:12;14549:52;14620:29;14639:9;14620:29;:::i;:::-;14610:39;;14668:38;14702:2;14691:9;14687:18;14668:38;:::i;14717:380::-;14796:1;14792:12;;;;14839;;;14860:61;;14914:4;14906:6;14902:17;14892:27;;14860:61;14967:2;14959:6;14956:14;14936:18;14933:38;14930:161;;15013:10;15008:3;15004:20;15001:1;14994:31;15048:4;15045:1;15038:15;15076:4;15073:1;15066:15;14930:161;;14717:380;;;:::o;15934:409::-;16136:2;16118:21;;;16175:2;16155:18;;;16148:30;16214:34;16209:2;16194:18;;16187:62;-1:-1:-1;;;16280:2:57;16265:18;;16258:43;16333:3;16318:19;;15934:409::o;16348:441::-;16401:5;16454:3;16447:4;16439:6;16435:17;16431:27;16421:55;;16472:1;16469;16462:12;16421:55;16501:6;16495:13;16532:48;16548:31;16576:2;16548:31;:::i;16532:48::-;16605:2;16596:7;16589:19;16651:3;16644:4;16639:2;16631:6;16627:15;16623:26;16620:35;16617:55;;;16668:1;16665;16658:12;16617:55;16681:77;16755:2;16748:4;16739:7;16735:18;16728:4;16720:6;16716:17;16681:77;:::i;16794:132::-;16870:13;;16892:28;16870:13;16892:28;:::i;16931:878::-;17005:5;17053:4;17041:9;17036:3;17032:19;17028:30;17025:50;;;17071:1;17068;17061:12;17025:50;17104:2;17098:9;17146:4;17138:6;17134:17;-1:-1:-1;;;;;17238:6:57;17226:10;17223:22;17218:2;17206:10;17203:18;17200:46;17197:72;;;17249:18;;:::i;:::-;17289:10;17285:2;17278:22;17318:6;17309:15;;17353:9;17347:16;17333:30;;17386:2;17378:6;17375:14;17372:34;;;17402:1;17399;17392:12;17372:34;17430:56;17482:3;17473:6;17462:9;17458:22;17430:56;:::i;:::-;17422:6;17415:72;17532:2;17521:9;17517:18;17511:25;17496:40;;17545:30;17567:7;17545:30;:::i;:::-;17608:7;17603:2;17595:6;17591:15;17584:32;17662:2;17651:9;17647:18;17641:25;17625:41;;17691:2;17681:8;17678:16;17675:36;;;17707:1;17704;17697:12;17675:36;;17744:58;17798:3;17787:8;17776:9;17772:24;17744:58;:::i;:::-;17739:2;17731:6;17727:15;17720:83;;;16931:878;;;;:::o;17814:379::-;17919:6;17972:2;17960:9;17951:7;17947:23;17943:32;17940:52;;;17988:1;17985;17978:12;17940:52;18021:9;18015:16;-1:-1:-1;;;;;18046:6:57;18043:30;18040:50;;;18086:1;18083;18076:12;18040:50;18109:78;18179:7;18170:6;18159:9;18155:22;18109:78;:::i;18551:379::-;18744:2;18733:9;18726:21;18707:4;18770:45;18811:2;18800:9;18796:18;18788:6;18770:45;:::i;:::-;18863:9;18855:6;18851:22;18846:2;18835:9;18831:18;18824:50;18891:33;18917:6;18909;18891:33;:::i;19345:299::-;19528:6;19521:14;19514:22;19503:9;19496:41;19573:2;19568;19557:9;19553:18;19546:30;19477:4;19593:45;19634:2;19623:9;19619:18;19611:6;19593:45;:::i;19649:460::-;19864:2;19853:9;19846:21;19827:4;19890:45;19931:2;19920:9;19916:18;19908:6;19890:45;:::i;:::-;19985:6;19978:14;19971:22;19966:2;19955:9;19951:18;19944:50;20042:9;20034:6;20030:22;20025:2;20014:9;20010:18;20003:50;20070:33;20096:6;20088;20070:33;:::i;:::-;20062:41;19649:460;-1:-1:-1;;;;;;19649:460:57:o;20744:197::-;20823:13;;-1:-1:-1;;;;;;20865:51:57;;20855:62;;20845:90;;20931:1;20928;20921:12;20946:200;21023:4;-1:-1:-1;;;;;21048:6:57;21045:30;21042:56;;;21078:18;;:::i;:::-;-1:-1:-1;21123:1:57;21119:14;21135:4;21115:25;;20946:200::o;21151:153::-;21236:13;;21278:1;21268:12;;21258:40;;21294:1;21291;21284:12;21309:1882;21378:5;21431:3;21424:4;21416:6;21412:17;21408:27;21398:55;;21449:1;21446;21439:12;21398:55;21478:6;21472:13;21504:4;21528:77;21544:60;21601:2;21544:60;:::i;21528:77::-;21639:15;;;21725:1;21721:10;;;;21709:23;;21705:32;;;21670:12;;;;21749:15;;;21746:35;;;21777:1;21774;21767:12;21746:35;21813:2;21805:6;21801:15;21825:1337;21841:6;21836:3;21833:15;21825:1337;;;21920:3;21914:10;-1:-1:-1;;;;;21997:2:57;21984:11;21981:19;21978:109;;;22041:1;22070:2;22066;22059:14;21978:109;22110:24;;;;22157:4;22185:12;;;-1:-1:-1;;22181:26:57;22177:35;-1:-1:-1;22174:125:57;;;22253:1;22282:2;22278;22271:14;22174:125;22325:22;;:::i;:::-;22374:48;22418:2;22414;22410:11;22374:48;:::i;:::-;22367:5;22360:63;22446:2;22490;22486;22482:11;22476:18;22507:30;22529:7;22507:30;:::i;:::-;22557:14;;;22550:31;22604:2;22640:11;;;22634:18;22665:30;22634:18;22665:30;:::i;:::-;22731:7;22726:2;22719:5;22715:14;22708:31;;22763:3;22752:14;;22816:3;22812:2;22808:12;22802:19;22797:2;22790:5;22786:14;22779:43;;22865:2;22861;22857:11;22851:18;22835:34;;22898:2;22888:8;22885:16;22882:109;;;22943:1;22973:3;22968;22961:16;22882:109;23028:60;23084:3;23079:2;23068:8;23064:2;23060:17;23056:26;23028:60;:::i;:::-;23011:15;;;23004:85;23102:18;;-1:-1:-1;;;23140:12:57;;;;21858;;21825:1337;;;-1:-1:-1;23180:5:57;21309:1882;-1:-1:-1;;;;;;21309:1882:57:o;23196:154::-;23282:13;;23324:1;23314:12;;23304:40;;23340:1;23337;23330:12;23355:1938;23425:5;23478:3;23471:4;23463:6;23459:17;23455:27;23445:55;;23496:1;23493;23486:12;23445:55;23525:6;23519:13;23551:4;23575:77;23591:60;23648:2;23591:60;:::i;23575:77::-;23686:15;;;23772:1;23768:10;;;;23756:23;;23752:32;;;23717:12;;;;23796:15;;;23793:35;;;23824:1;23821;23814:12;23793:35;23860:2;23852:6;23848:15;23872:1392;23888:6;23883:3;23880:15;23872:1392;;;23967:3;23961:10;-1:-1:-1;;;;;24044:2:57;24031:11;24028:19;24025:109;;;24088:1;24117:2;24113;24106:14;24025:109;24157:24;;;;24204:4;24232:12;;;-1:-1:-1;;24228:26:57;24224:35;-1:-1:-1;24221:125:57;;;24300:1;24329:2;24325;24318:14;24221:125;24372:22;;:::i;:::-;24421:49;24466:2;24462;24458:11;24421:49;:::i;:::-;24414:5;24407:64;24494:2;24532:42;24570:2;24566;24562:11;24532:42;:::i;:::-;24527:2;24520:5;24516:14;24509:66;24598:2;24636:42;24674:2;24670;24666:11;24636:42;:::i;:::-;24631:2;24624:5;24620:14;24613:66;24703:3;24692:14;;24748:3;24744:2;24740:12;24734:19;24766:30;24788:7;24766:30;:::i;:::-;24816:14;;;24809:31;24864:3;24910:12;;;24904:19;24887:15;;;24880:44;24959:11;;;24953:18;;24987:16;;;24984:109;;;25045:1;25034:12;;25075:3;25070;25063:16;24984:109;25130:60;25186:3;25181:2;25170:8;25166:2;25162:17;25158:26;25130:60;:::i;:::-;25113:15;;;25106:85;-1:-1:-1;25204:18:57;;-1:-1:-1;;;25242:12:57;;;;23905;;23872:1392;;25298:3145;25407:6;25438:2;25481;25469:9;25460:7;25456:23;25452:32;25449:52;;;25497:1;25494;25487:12;25449:52;25530:9;25524:16;-1:-1:-1;;;;;25600:2:57;25592:6;25589:14;25586:34;;;25616:1;25613;25606:12;25586:34;25639:22;;;;25695:4;25677:16;;;25673:27;25670:47;;;25713:1;25710;25703:12;25670:47;25739:22;;:::i;:::-;25784:33;25814:2;25784:33;:::i;:::-;25777:5;25770:48;25850:42;25888:2;25884;25880:11;25850:42;:::i;:::-;25845:2;25838:5;25834:14;25827:66;25939:2;25935;25931:11;25925:18;25920:2;25913:5;25909:14;25902:42;25983:2;25979;25975:11;25969:18;26012:2;26002:8;25999:16;25996:36;;;26028:1;26025;26018:12;25996:36;26064:55;26111:7;26100:8;26096:2;26092:17;26064:55;:::i;:::-;26059:2;26052:5;26048:14;26041:79;;26139:3;26181:2;26177;26173:11;26167:18;26210:2;26200:8;26197:16;26194:36;;;26226:1;26223;26216:12;26194:36;26257:8;26253:2;26249:17;26239:27;;;26304:7;26297:4;26293:2;26289:13;26285:27;26275:55;;26326:1;26323;26316:12;26275:55;26355:2;26349:9;26378:77;26394:60;26451:2;26394:60;:::i;26378:77::-;26489:15;;;26571:1;26567:10;;;;26559:19;;26555:28;;;26520:12;;;;26595:19;;;26592:39;;;26627:1;26624;26617:12;26592:39;26659:2;26655;26651:11;26671:1704;26687:6;26682:3;26679:15;26671:1704;;;26766:3;26760:10;26802:2;26789:11;26786:19;26783:109;;;26846:1;26875:2;26871;26864:14;26783:109;26915:20;;26987:4;26959:16;;;-1:-1:-1;;26955:30:57;26951:41;26948:131;;;27033:1;27062:2;27058;27051:14;26948:131;27107:22;;:::i;:::-;27172:2;27168;27164:11;27158:18;27205:2;27195:8;27192:16;27189:109;;;27250:1;27280:3;27275;27268:16;27189:109;27327:80;27399:7;27394:2;27383:8;27379:2;27375:17;27371:26;27327:80;:::i;:::-;27318:7;27311:97;;27451:2;27447;27443:11;27437:18;27484:2;27474:8;27471:16;27468:109;;;27529:1;27559:3;27554;27547:16;27468:109;27615:81;27688:7;27683:2;27672:8;27668:2;27664:17;27660:26;27615:81;:::i;:::-;27610:2;27601:7;27597:16;27590:107;;27749:2;27745;27741:11;27735:18;27730:2;27721:7;27717:16;27710:44;27797:2;27793;27789:11;27783:18;27830:2;27820:8;27817:16;27814:109;;;27875:1;27905:3;27900;27893:16;27814:109;27961:64;28017:7;28012:2;28001:8;27997:2;27993:17;27989:26;27961:64;:::i;:::-;27956:2;27947:7;27943:16;27936:90;;28069:4;28065:2;28061:13;28055:20;28104:2;28094:8;28091:16;28088:109;;;28149:1;28179:3;28174;28167:16;28088:109;28235:64;28291:7;28286:2;28275:8;28271:2;28267:17;28263:26;28235:64;:::i;:::-;28217:16;;;28210:90;-1:-1:-1;28313:20:57;;-1:-1:-1;28353:12:57;;;;26704;;26671:1704;;;-1:-1:-1;28391:14:57;;;28384:29;;;;-1:-1:-1;28395:5:57;;25298:3145;-1:-1:-1;;;;;;;25298:3145:57:o;28448:1257::-;28506:3;28544:5;28538:12;28571:6;28566:3;28559:19;28597:4;28626:2;28621:3;28617:12;28610:19;;28651:3;28691:6;28688:1;28684:14;28679:3;28675:24;28733:2;28726:5;28722:14;28754:1;28764:915;28778:6;28775:1;28772:13;28764:915;;;28849:5;28843:4;28839:16;28834:3;28827:29;28885:6;28879:13;28915:4;28932:42;28969:4;28964:2;28958:9;28932:42;:::i;:::-;29013:11;;;29007:18;-1:-1:-1;;;;;;29122:21:57;;;29107:13;;;29100:44;29167:4;29216:11;;;29210:18;29206:27;;;29191:13;;;29184:50;29257:4;29316:11;;;29310:18;29303:26;29296:34;29281:13;;;29274:57;29354:4;29399:11;;;29393:18;29378:13;;;29371:41;29435:4;29480:11;;;29474:18;29512:13;;;29505:25;;;29551:48;29585:13;;;29474:18;29551:48;:::i;:::-;29657:12;;;;29543:56;-1:-1:-1;;;29622:15:57;;;;28800:1;28793:9;28764:915;;29710:699;-1:-1:-1;;;;;29820:39:57;29812:5;29806:12;29802:58;29797:3;29790:71;29772:3;29907:4;29900:5;29896:16;29890:23;29945:4;29938;29933:3;29929:14;29922:28;29971:69;30034:4;30029:3;30025:14;30011:12;29971:69;:::i;:::-;29959:81;;30088:4;30081:5;30077:16;30071:23;30136:3;30130:4;30126:14;30119:4;30114:3;30110:14;30103:38;30164:62;30221:4;30205:14;30164:62;:::i;:::-;30150:76;;;30274:4;30267:5;30263:16;30257:23;30324:3;30316:6;30312:16;30305:4;30300:3;30296:14;30289:40;30345:58;30396:6;30380:14;30345:58;:::i;30414:3550::-;30790:4;30819:3;30849:2;30838:9;30831:21;-1:-1:-1;;;;;30871:39:57;30965:2;30956:6;30950:13;30946:22;30941:2;30930:9;30926:18;30919:50;30988:4;31039:2;31031:6;31027:15;31021:22;31099:2;31085:12;31081:21;31074:4;31063:9;31059:20;31052:51;;31140:4;31132:6;31128:17;31122:24;31112:34;;31183:2;31177:3;31166:9;31162:19;31155:31;31235:4;31227:6;31223:17;31217:24;31195:46;;31278:4;31272:3;31261:9;31257:19;31250:33;31306:54;31355:3;31344:9;31340:19;31324:14;31306:54;:::i;:::-;31397:15;;;31391:22;31454;;;-1:-1:-1;;31450:37:57;31444:3;31429:19;;31422:66;31537:21;;31567:22;;;31292:68;;-1:-1:-1;31702:23:57;;;31605:15;;;;31663:1;31659:14;;;31647:27;;31643:36;;31743:1;31753:2001;31767:6;31764:1;31761:13;31753:2001;;;-1:-1:-1;;31832:19:57;;;31828:33;31816:46;;31885:13;;31977:9;;31937:4;31999:20;;;32080:21;;31925:17;;;32114:24;;;32172:3;32223:1;32219:16;;;32207:29;;32203:39;;;32271:23;;;32160:16;;;;-1:-1:-1;32332:732:57;32348:8;32343:3;32340:17;32332:732;;;32454:3;32450:8;32441:6;32433;32429:19;32425:34;32418:5;32411:49;32493:8;32487:15;32519:43;32555:6;32550:2;32544:9;32519:43;:::i;:::-;32631:2;32627;32623:11;32617:18;32610:26;32603:34;32598:2;32590:6;32586:15;32579:59;32709:4;32705:2;32701:13;32695:20;32688:28;32681:36;32674:4;32666:6;32662:17;32655:63;32775:4;32771:2;32767:13;32761:20;32754:4;32746:6;32742:17;32735:47;32835:2;32831;32827:11;32821:18;32799:40;;32880:4;32875:2;32867:6;32863:15;32856:29;32912:52;32958:4;32950:6;32946:17;32930:14;32912:52;:::i;:::-;32902:62;-1:-1:-1;;32993:17:57;;;;33036:14;;;;32376:1;32367:11;32332:732;;;32336:3;;;;33113:2;33109;33105:11;33099:18;33166:6;33158;33154:19;33149:2;33141:6;33137:15;33130:44;33201:57;33251:6;33235:14;33201:57;:::i;:::-;33187:71;;;33311:4;33307:2;33303:13;33297:20;33290:4;33282:6;33278:17;33271:47;33367:4;33363:2;33359:13;33353:20;33424:6;33416;33412:19;33405:4;33397:6;33393:17;33386:46;33459:41;33493:6;33477:14;33459:41;:::i;:::-;33445:55;;;33549:2;33545;33541:11;33535:18;33513:40;;33602:6;33594;33590:19;33585:2;33577:6;33573:15;33566:44;33633:41;33667:6;33651:14;33633:41;:::i;:::-;33697:15;;;;33732:12;;;;33623:51;-1:-1:-1;;;31789:1:57;31782:9;31753:2001;;;31757:3;33802:9;33794:6;33790:22;33785:2;33774:9;33770:18;33763:50;33830:53;33876:6;33868;33830:53;:::i;:::-;7740:12;;-1:-1:-1;;;;;;7736:58:57;33952:4;33937:20;;7724:71;7864:4;7853:16;;7847:23;7841:30;7834:38;7827:46;7811:14;;;7804:70;33822:61;-1:-1:-1;33892:66:57;;-1:-1:-1;;;;;;;7652:228:57;33969:2023;34046:5;34099:3;34092:4;34084:6;34080:17;34076:27;34066:55;;34117:1;34114;34107:12;34066:55;34146:6;34140:13;34172:4;34196:77;34212:60;34269:2;34212:60;:::i;34196:77::-;34307:15;;;34393:1;34389:10;;;;34377:23;;34373:32;;;34338:12;;;;34417:15;;;34414:35;;;34445:1;34442;34435:12;34414:35;34481:2;34473:6;34469:15;34493:1470;34509:6;34504:3;34501:15;34493:1470;;;34588:3;34582:10;-1:-1:-1;;;;;34665:2:57;34652:11;34649:19;34646:109;;;34709:1;34738:2;34734;34727:14;34646:109;34778:24;;;;34825:4;34853:12;;;-1:-1:-1;;34849:26:57;34845:35;-1:-1:-1;34842:125:57;;;34921:1;34950:2;34946;34939:14;34842:125;34993:22;;:::i;:::-;35042:48;35086:2;35082;35078:11;35042:48;:::i;:::-;35035:5;35028:63;35114:2;35158;35154;35150:11;35144:18;35175:30;35197:7;35175:30;:::i;:::-;35241:7;35236:2;35229:5;35225:14;35218:31;;35272:2;35324;35320;35316:11;35310:18;35305:2;35298:5;35294:14;35287:42;35353:3;35342:14;;35399:3;35395:2;35391:12;35385:19;35433:2;35423:8;35420:16;35417:109;;;35478:1;35508:3;35503;35496:16;35417:109;35562:60;35618:3;35613:2;35602:8;35598:2;35594:17;35590:26;35562:60;:::i;:::-;35557:2;35550:5;35546:14;35539:84;;;35666:2;35662;35658:11;35652:18;35636:34;;35699:2;35689:8;35686:16;35683:109;;;35744:1;35774:3;35769;35762:16;35683:109;35829:60;35885:3;35880:2;35869:8;35865:2;35861:17;35857:26;35829:60;:::i;:::-;35812:15;;;35805:85;35903:18;;-1:-1:-1;;;35941:12:57;;;;34526;;34493:1470;;35997:2163;36075:5;36128:3;36121:4;36113:6;36109:17;36105:27;36095:55;;36146:1;36143;36136:12;36095:55;36175:6;36169:13;36201:4;36225:77;36241:60;36298:2;36241:60;:::i;36225:77::-;36336:15;;;36422:1;36418:10;;;;36406:23;;36402:32;;;36367:12;;;;36446:15;;;36443:35;;;36474:1;36471;36464:12;36443:35;36510:2;36502:6;36498:15;36522:1609;36538:6;36533:3;36530:15;36522:1609;;;36617:3;36611:10;-1:-1:-1;;;;;36694:2:57;36681:11;36678:19;36675:109;;;36738:1;36767:2;36763;36756:14;36675:109;36807:24;;;;36854:4;36882:12;;;-1:-1:-1;;36878:26:57;36874:35;-1:-1:-1;36871:125:57;;;36950:1;36979:2;36975;36968:14;36871:125;37022:22;;:::i;:::-;37071:49;37116:2;37112;37108:11;37071:49;:::i;:::-;37064:5;37057:64;37144:2;37182:42;37220:2;37216;37212:11;37182:42;:::i;:::-;37177:2;37170:5;37166:14;37159:66;37248:2;37286:42;37324:2;37320;37316:11;37286:42;:::i;:::-;37281:2;37274:5;37270:14;37263:66;37353:3;37342:14;;37406:3;37402:2;37398:12;37392:19;37387:2;37380:5;37376:14;37369:43;;37436:3;37482;37478:2;37474:12;37468:19;37516:2;37506:8;37503:16;37500:109;;;37561:1;37591:3;37586;37579:16;37500:109;37646:60;37702:3;37697:2;37686:8;37682:2;37678:17;37674:26;37646:60;:::i;:::-;37640:3;37633:5;37629:15;37622:85;;37731:3;37720:14;;37785:3;37781:2;37777:12;37771:19;37765:3;37758:5;37754:15;37747:44;;37834:2;37830;37826:11;37820:18;37804:34;;37867:2;37857:8;37854:16;37851:109;;;37912:1;37942:3;37937;37930:16;37851:109;37997:60;38053:3;38048:2;38037:8;38033:2;38029:17;38025:26;37997:60;:::i;:::-;37980:15;;;37973:85;38071:18;;-1:-1:-1;;;38109:12:57;;;;36555;;36522:1609;;38165:1242;38280:6;38333:2;38321:9;38312:7;38308:23;38304:32;38301:52;;;38349:1;38346;38339:12;38301:52;38382:9;38376:16;-1:-1:-1;;;;;38452:2:57;38444:6;38441:14;38438:34;;;38468:1;38465;38458:12;38438:34;38491:22;;;;38547:4;38529:16;;;38525:27;38522:47;;;38565:1;38562;38555:12;38522:47;38591:22;;:::i;:::-;38636:33;38666:2;38636:33;:::i;:::-;38629:5;38622:48;38702:42;38740:2;38736;38732:11;38702:42;:::i;:::-;38697:2;38690:5;38686:14;38679:66;38791:2;38787;38783:11;38777:18;38772:2;38765:5;38761:14;38754:42;38835:2;38831;38827:11;38821:18;38864:2;38854:8;38851:16;38848:36;;;38880:1;38877;38870:12;38848:36;38916:79;38987:7;38976:8;38972:2;38968:17;38916:79;:::i;:::-;38911:2;38904:5;38900:14;38893:103;;39035:3;39031:2;39027:12;39021:19;39065:2;39055:8;39052:16;39049:36;;;39081:1;39078;39071:12;39049:36;39118:80;39190:7;39179:8;39175:2;39171:17;39118:80;:::i;:::-;39112:3;39105:5;39101:15;39094:105;;39238:3;39234:2;39230:12;39224:19;39268:2;39258:8;39255:16;39252:36;;;39284:1;39281;39274:12;39252:36;39321:55;39368:7;39357:8;39353:2;39349:17;39321:55;:::i;:::-;39315:3;39304:15;;39297:80;-1:-1:-1;39308:5:57;38165:1242;-1:-1:-1;;;;;38165:1242:57:o;39412:127::-;39473:10;39468:3;39464:20;39461:1;39454:31;39504:4;39501:1;39494:15;39528:4;39525:1;39518:15;39544:232;39583:3;39604:17;;;39601:140;;39663:10;39658:3;39654:20;39651:1;39644:31;39698:4;39695:1;39688:15;39726:4;39723:1;39716:15;39601:140;-1:-1:-1;39768:1:57;39757:13;;39544:232::o;39781:207::-;39927:2;39912:18;;39939:43;39916:9;39964:6;39939:43;:::i;40711:401::-;40913:2;40895:21;;;40952:2;40932:18;;;40925:30;40991:34;40986:2;40971:18;;40964:62;-1:-1:-1;;;41057:2:57;41042:18;;41035:35;41102:3;41087:19;;40711:401::o;42009:545::-;42111:2;42106:3;42103:11;42100:448;;;42147:1;42172:5;42168:2;42161:17;42217:4;42213:2;42203:19;42287:2;42275:10;42271:19;42268:1;42264:27;42258:4;42254:38;42323:4;42311:10;42308:20;42305:47;;;-1:-1:-1;42346:4:57;42305:47;42401:2;42396:3;42392:12;42389:1;42385:20;42379:4;42375:31;42365:41;;42456:82;42474:2;42467:5;42464:13;42456:82;;;42519:17;;;42500:1;42489:13;42456:82;;;42460:3;;;42009:545;;;:::o;42730:1352::-;42856:3;42850:10;-1:-1:-1;;;;;42875:6:57;42872:30;42869:56;;;42905:18;;:::i;:::-;42934:97;43024:6;42984:38;43016:4;43010:11;42984:38;:::i;:::-;42978:4;42934:97;:::i;:::-;43086:4;;43150:2;43139:14;;43167:1;43162:663;;;;43869:1;43886:6;43883:89;;;-1:-1:-1;43938:19:57;;;43932:26;43883:89;-1:-1:-1;;42687:1:57;42683:11;;;42679:24;42675:29;42665:40;42711:1;42707:11;;;42662:57;43985:81;;43132:944;;43162:663;41956:1;41949:14;;;41993:4;41980:18;;-1:-1:-1;;43198:20:57;;;43316:236;43330:7;43327:1;43324:14;43316:236;;;43419:19;;;43413:26;43398:42;;43511:27;;;;43479:1;43467:14;;;;43346:19;;43316:236;;;43320:3;43580:6;43571:7;43568:19;43565:201;;;43641:19;;;43635:26;-1:-1:-1;;43724:1:57;43720:14;;;43736:3;43716:24;43712:37;43708:42;43693:58;43678:74;;43565:201;-1:-1:-1;;;;;43812:1:57;43796:14;;;43792:22;43779:36;;-1:-1:-1;42730:1352:57:o;44087:414::-;44289:2;44271:21;;;44328:2;44308:18;;;44301:30;44367:34;44362:2;44347:18;;44340:62;-1:-1:-1;;;44433:2:57;44418:18;;44411:48;44491:3;44476:19;;44087:414::o;44506:840::-;44983:2;44972:9;44965:21;44946:4;45009:67;45072:2;45061:9;45057:18;45049:6;45009:67;:::i;:::-;45124:9;45116:6;45112:22;45107:2;45096:9;45092:18;45085:50;45158:56;45207:6;45199;45158:56;:::i;:::-;45144:70;;45262:9;45254:6;45250:22;45245:2;45234:9;45230:18;45223:50;45290;45333:6;45325;45290:50;:::i;45351:1993::-;45428:5;45481:3;45474:4;45466:6;45462:17;45458:27;45448:55;;45499:1;45496;45489:12;45448:55;45528:6;45522:13;45554:4;45578:77;45594:60;45651:2;45594:60;:::i;45578:77::-;45689:15;;;45775:1;45771:10;;;;45759:23;;45755:32;;;45720:12;;;;45799:15;;;45796:35;;;45827:1;45824;45817:12;45796:35;45863:2;45855:6;45851:15;45875:1440;45891:6;45886:3;45883:15;45875:1440;;;45970:3;45964:10;-1:-1:-1;;;;;46047:2:57;46034:11;46031:19;46028:109;;;46091:1;46120:2;46116;46109:14;46028:109;46160:24;;;;46207:4;46235:12;;;-1:-1:-1;;46231:26:57;46227:35;-1:-1:-1;46224:125:57;;;46303:1;46332:2;46328;46321:14;46224:125;46375:22;;:::i;:::-;46424:49;46469:2;46465;46461:11;46424:49;:::i;:::-;46417:5;46410:64;46497:2;46535:42;46573:2;46569;46565:11;46535:42;:::i;:::-;46530:2;46523:5;46519:14;46512:66;46601:2;46639:42;46677:2;46673;46669:11;46639:42;:::i;:::-;46634:2;46627:5;46623:14;46616:66;46706:3;46695:14;;46759:3;46755:2;46751:12;46745:19;46740:2;46733:5;46729:14;46722:43;;46789:3;46829:40;46864:3;46860:2;46856:12;46829:40;:::i;:::-;46823:3;46816:5;46812:15;46805:65;46894:3;46883:14;;46934:40;46969:3;46965:2;46961:12;46934:40;:::i;:::-;46917:15;;;46910:65;47010:11;;;47004:18;;47038:16;;;47035:109;;;47096:1;47126:3;47121;47114:16;47035:109;47181:60;47237:3;47232:2;47221:8;47217:2;47213:17;47209:26;47181:60;:::i;:::-;47164:15;;;47157:85;47255:18;;-1:-1:-1;;;47293:12:57;;;;45908;;45875:1440;;47349:2720;47457:6;47488:2;47531;47519:9;47510:7;47506:23;47502:32;47499:52;;;47547:1;47544;47537:12;47499:52;47580:9;47574:16;-1:-1:-1;;;;;47650:2:57;47642:6;47639:14;47636:34;;;47666:1;47663;47656:12;47636:34;47689:22;;;;47745:4;47727:16;;;47723:27;47720:47;;;47763:1;47760;47753:12;47720:47;47789:22;;:::i;:::-;47834:33;47864:2;47834:33;:::i;:::-;47827:5;47820:48;47907:2;47903;47899:11;47893:18;47936:2;47926:8;47923:16;47920:36;;;47952:1;47949;47942:12;47920:36;47975:17;;48023:4;48015:13;;48011:27;-1:-1:-1;48001:55:57;;48052:1;48049;48042:12;48001:55;48081:2;48075:9;48104:77;48120:60;48177:2;48120:60;:::i;48104:77::-;48215:15;;;48297:1;48293:10;;;;48285:19;;48281:28;;;48246:12;;;;48321:19;;;48318:39;;;48353:1;48350;48343:12;48318:39;48385:2;48381;48377:11;48397:1210;48413:6;48408:3;48405:15;48397:1210;;;48492:3;48486:10;48528:2;48515:11;48512:19;48509:39;;;48544:1;48541;48534:12;48509:39;48571:20;;48643:4;48615:16;;;-1:-1:-1;;48611:30:57;48607:41;48604:61;;;48661:1;48658;48651:12;48604:61;48693:22;;:::i;:::-;48744:48;48788:2;48784;48780:11;48744:48;:::i;:::-;48735:7;48728:65;48845:2;48841;48837:11;48831:18;48826:2;48817:7;48813:16;48806:44;48892:2;48888;48884:11;48878:18;48909:30;48931:7;48909:30;:::i;:::-;48972:2;48959:16;;48952:33;49027:4;49019:13;;49013:20;49046:30;49013:20;49046:30;:::i;:::-;49109:2;49096:16;;49089:33;49164:3;49156:12;;49150:19;49182:30;49150:19;49182:30;:::i;:::-;49245:4;49232:18;;49225:35;49303:4;49295:13;;49289:20;49325:16;;;49322:106;;;49382:1;49411:2;49407;49400:14;49322:106;49467:64;49523:7;49518:2;49507:8;49503:2;49499:17;49495:26;49467:64;:::i;:::-;49461:3;49448:17;;49441:91;-1:-1:-1;49545:20:57;;-1:-1:-1;49585:12:57;;;;48430;;48397:1210;;;48401:3;49639:5;49634:2;49627:5;49623:14;49616:29;;;;;49684:2;49680;49676:11;49670:18;49654:34;;49713:2;49703:8;49700:16;49697:36;;;49729:1;49726;49719:12;49697:36;49765:79;49836:7;49825:8;49821:2;49817:17;49765:79;:::i;:::-;49760:2;49753:5;49749:14;49742:103;49884:2;49880;49876:11;49870:18;49854:34;;49913:2;49903:8;49900:16;49897:36;;;49929:1;49926;49919:12;49897:36;49965:73;50030:7;50019:8;50015:2;50011:17;49965:73;:::i;:::-;49960:2;49949:14;;49942:97;49953:5;47349:2720;-1:-1:-1;;;;;;47349:2720:57:o;50428:489::-;-1:-1:-1;;;;;50697:15:57;;;50679:34;;50749:15;;50744:2;50729:18;;50722:43;50796:2;50781:18;;50774:34;;;50844:3;50839:2;50824:18;;50817:31;;;50622:4;;50865:46;;50891:19;;50883:6;50865:46;:::i;50922:249::-;50991:6;51044:2;51032:9;51023:7;51019:23;51015:32;51012:52;;;51060:1;51057;51050:12;51012:52;51092:9;51086:16;51111:30;51135:5;51111:30;:::i",
+ "linkReferences": {
+
+ },
+ "immutableReferences": {
+ "34162": [
+ {
+ "start": 5082,
+ "length": 32
+ }
+ ],
+ "34171": [
+ {
+ "start": 2667,
+ "length": 32
+ },
+ {
+ "start": 2914,
+ "length": 32
+ },
+ {
+ "start": 4419,
+ "length": 32
+ },
+ {
+ "start": 4521,
+ "length": 32
+ },
+ {
+ "start": 4931,
+ "length": 32
+ }
+ ],
+ "34174": [
+ {
+ "start": 6951,
+ "length": 32
+ }
+ ],
+ "34176": [
+ {
+ "start": 993,
+ "length": 32
+ },
+ {
+ "start": 3250,
+ "length": 32
+ }
+ ],
+ "34178": [
+ {
+ "start": 916,
+ "length": 32
+ },
+ {
+ "start": 3283,
+ "length": 32
+ }
+ ],
+ "40715": [
+ {
+ "start": 1057,
+ "length": 32
+ },
+ {
+ "start": 4107,
+ "length": 32
+ },
+ {
+ "start": 4667,
+ "length": 32
+ },
+ {
+ "start": 7079,
+ "length": 32
+ }
+ ]
+ }
+ },
+ "methodIdentifiers": {
+ "ADDRESSES_PROVIDER_V2()": "46916301",
+ "APP_ID()": "c187bbc1",
+ "IMPLEMENTATION_VERSION()": "754b377c",
+ "IS_IMPERSONATION_MODE()": "a183dc27",
+ "IS_NON_TRANSFERABLE()": "c4b2e8ff",
+ "SISMO_CONNECT_LIB_VERSION()": "c9512d99",
+ "approve(address,uint256)": "095ea7b3",
+ "balanceOf(address)": "70a08231",
+ "buildSignature(bool)": "49161195",
+ "buildSignature(bool,bytes)": "cea8eb4e",
+ "buildSignature(bytes,bool,bytes)": "e0689703",
+ "buildSignature(bytes,bytes)": "6e01370e",
+ "claimWithSismoConnect(bytes,address)": "07c8064f",
+ "config()": "79502c55",
+ "getApproved(uint256)": "081812fc",
+ "getRequests()": "8813ce12",
+ "isApprovedForAll(address,address)": "e985e9c5",
+ "name()": "06fdde03",
+ "owner()": "8da5cb5b",
+ "ownerOf(uint256)": "6352211e",
+ "renounceOwnership()": "715018a6",
+ "safeTransferFrom(address,address,uint256)": "42842e0e",
+ "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
+ "setApprovalForAll(address,bool)": "a22cb465",
+ "setBaseTokenUri(string)": "95652cfa",
+ "supportsInterface(bytes4)": "01ffc9a7",
+ "symbol()": "95d89b41",
+ "tokenURI(uint256)": "c87b56dd",
+ "transferFrom(address,address,uint256)": "23b872dd",
+ "transferOwnership(address)": "f2fde38b"
+ },
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"baseURI_\",\"type\":\"string\"},{\"internalType\":\"bytes16\",\"name\":\"appId_\",\"type\":\"bytes16\"},{\"internalType\":\"bool\",\"name\":\"isImpersonationMode_\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum AuthType\",\"name\":\"authType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"userId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isAnon\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isOptional\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AuthRequest[]\",\"name\":\"authRequests_\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ClaimType\",\"name\":\"claimType\",\"type\":\"uint8\"},{\"internalType\":\"bytes16\",\"name\":\"groupId\",\"type\":\"bytes16\"},{\"internalType\":\"bytes16\",\"name\":\"groupTimestamp\",\"type\":\"bytes16\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOptional\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct ClaimRequest[]\",\"name\":\"claimRequests_\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isNonTransferable_\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"enum AuthType\",\"name\":\"authType\",\"type\":\"uint8\"}],\"name\":\"AuthTypeNotFoundInVerifiedResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC721NonTransferable\",\"type\":\"error\"},{\"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\":\"string\",\"name\":\"baseTokenURI\",\"type\":\"string\"}],\"name\":\"BaseTokenURISet\",\"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\"},{\"inputs\":[],\"name\":\"ADDRESSES_PROVIDER_V2\",\"outputs\":[{\"internalType\":\"contract IAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"APP_ID\",\"outputs\":[{\"internalType\":\"bytes16\",\"name\":\"\",\"type\":\"bytes16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IMPLEMENTATION_VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_IMPERSONATION_MODE\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_NON_TRANSFERABLE\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SISMO_CONNECT_LIB_VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"}],\"name\":\"buildSignature\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct SignatureRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"buildSignature\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct SignatureRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"buildSignature\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct SignatureRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"buildSignature\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct SignatureRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"responseBytes\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"claimWithSismoConnect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"config\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes16\",\"name\":\"appId\",\"type\":\"bytes16\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isImpersonationMode\",\"type\":\"bool\"}],\"internalType\":\"struct VaultConfig\",\"name\":\"vault\",\"type\":\"tuple\"}],\"internalType\":\"struct SismoConnectConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRequests\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum AuthType\",\"name\":\"authType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"userId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isAnon\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isOptional\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AuthRequest[]\",\"name\":\"auths\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ClaimType\",\"name\":\"claimType\",\"type\":\"uint8\"},{\"internalType\":\"bytes16\",\"name\":\"groupId\",\"type\":\"bytes16\"},{\"internalType\":\"bytes16\",\"name\":\"groupTimestamp\",\"type\":\"bytes16\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOptional\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSelectableByUser\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct ClaimRequest[]\",\"name\":\"claims\",\"type\":\"tuple[]\"}],\"internalType\":\"struct ZKDrop.Requests\",\"name\":\"\",\"type\":\"tuple\"}],\"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\":[],\"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\":\"string\",\"name\":\"baseUri\",\"type\":\"string\"}],\"name\":\"setBaseTokenUri\",\"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\":\"\",\"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\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Reverts, this is a non transferable ERC115 contract\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"ERC721 can be set to non transferable in the constructor\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ZKDrop.sol\":\"ZKDrop\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/lib/openzeppelin-contracts/contracts/\",\":@sismo-core/hydra-s3/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/lib/hydra-s3-zkps/package/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":hydra-s3-zkps/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/lib/hydra-s3-zkps/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":sismo-connect-onchain-verifier/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/\",\":sismo-connect-packages/=lib/sismo-connect-packages/packages/sismo-connect-solidity/src/\",\":sismo-connect-solidity/=lib/sismo-connect-packages/packages/sismo-connect-solidity/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7063b5c98711a98018ba4635ac74cee1c1cfa2ea01099498e062699ed9530005\",\"dweb:/ipfs/QmeJ8rGXkcv7RrqLdAW8PCXPAykxVsddfYY6g5NaTwmRFE\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4\",\"dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/interfaces/ISismoConnectVerifier.sol\":{\"keccak256\":\"0x5d75914f12cf3f8d0cf67bca21aaf9d54fb9906e445fc1f2faf61110e1f17a2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1910f1912cf2e967620a6863972f14a4d6b46e1896645691dd0a3d94ba080bd\",\"dweb:/ipfs/QmcBbYEz7T74rWCRKA4bTXWWuXCVSFfMRujjCj1DWjbqyz\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/sismo-connect/SismoConnectLib.sol\":{\"keccak256\":\"0x33aa00d8e5e494f53d8d094210ec314fd8d84becb9d2070ee0f23760d0c96d5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeb0e6b4386ff99259e27fd774f755f535644d4231a883d5586d3cb7252fa7d3\",\"dweb:/ipfs/QmQt7ueMtQvQLbWrRULJC5AgP47TG6ANTsSnQ2gDUK7BkT\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/AuthRequestBuilder.sol\":{\"keccak256\":\"0xbdda4b5b5409ac0c27f2400f51862a9571522c5d7e208026a18999485c5f014b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187d17390b234da4204b007ef4a55e66a6c924ee86fc84172e4b6933b97f239b\",\"dweb:/ipfs/QmPgfmeZYdS2fvVFn24QCLaKJGsVqR3BceHsigGhDfKY3J\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/ClaimRequestBuilder.sol\":{\"keccak256\":\"0x7b4109877f1339b0d98201b4c850a25d78ffe238e255eaec1b07a1064c8d8742\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58584f1e68aeb2e1ebb8fa05c0a756ec082afff05ef21b5f373f199d9e83bb2a\",\"dweb:/ipfs/QmUvT1HHThpEf8zRJYkhsVjVX4w3nZZoG718n2Cad2z6wH\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/RequestBuilder.sol\":{\"keccak256\":\"0x19fc14558d3512750b4d4d92238df61f66ab0687bef02468565c3e98fe969ac4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfea028b27cc576b4cb219fb6c5283b108ccb3e876bccfc4321c7b86360c7807\",\"dweb:/ipfs/QmWrXZXhBHVjgpSNnP45iNqihjGwKyszsSsbbDgTu1yfpy\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/SignatureBuilder.sol\":{\"keccak256\":\"0x5d071367c63510c3e38d4fe73b81ec2b7eda1c442fe3e8c75fcbab0d929524dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e6ca7efdab0b903c060b743cf88c1f33db62e23a53786be56f91eddc6ccaeac\",\"dweb:/ipfs/QmSRmRKouzYAqeEArZDrquG5i1hJHnNE18qegMhKaQYVEk\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/SismoConnectHelper.sol\":{\"keccak256\":\"0xa3affedc6093d4b9a5796ee1ac1a6bc552991f19ca319a76ef5f8f522f730346\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b6bb082dd92cae11ab6a470a0cd5522e9f79664fe4b8967b8fad6420bed3c9a\",\"dweb:/ipfs/QmQEg2YE76ZPAfRaVUJSURT7BFPV7D4XqXYoztHYzNpNnf\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/Structs.sol\":{\"keccak256\":\"0x978c56d685ed88ce85590f7f7acec107e34f5ef6b4cf9f4dcfc2be5b5d3e97d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6373516cad9fa0e4fbc344b3ce7155a4eca356403f748209cd13d86f8b24dee4\",\"dweb:/ipfs/QmRDHCyetFYKL36GdM3hibo4hFHEWEZ9xPKrrvw9fBnLQn\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/periphery/interfaces/IAddressesProvider.sol\":{\"keccak256\":\"0x7088a8721bb95c4d2ae77db038542e3afccfdb5772a9f6af500098f34514369e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://80cbf6bd03d96a9ef936b00d3cc7041e74e88ae6aa3bd6d8ab5a87a3c1eb7092\",\"dweb:/ipfs/QmTxXhUhPC9siLtnudFpqtcV1JsJyDULmTV17F1NQdKFy7\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/verifiers/IHydraS3Verifier.sol\":{\"keccak256\":\"0x2c826b5e1ecfa9744fac3e13e9d19bc3eee097c5327844239c2d39ff37393825\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd09478db59c454a03532b66024bd544cb537c7a3f6d9b5f7cdf5afae5e0e1ad\",\"dweb:/ipfs/QmTf64dzbbCfFbssr8b8QG7K1AYDV5MThJ55Gyzi8DrwKv\"]},\"lib/sismo-connect-packages/packages/sismo-connect-solidity/src/SismoLib.sol\":{\"keccak256\":\"0xcacd8c83ca5df7d2562f05aaf299a65bdc2af393065b67cff0dc5f31ea6589b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3e7736338bab098b47788ac36d001c15d4441e344f0a52e012089417c4b134\",\"dweb:/ipfs/QmfJjb7LQ31o7XdFsE917sZKXYVJTry8npdhSmKo9KywNu\"]},\"src/ZKDrop.sol\":{\"keccak256\":\"0xdca8cfb8d7d5808cc94247ebec1245f3eaf9eb64608a50f19fc31c9d97147914\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de49f07be7b5fbb54fc97e74f5e68b72c1e37dd224151d2a86c472edd90e0769\",\"dweb:/ipfs/QmaGxT3kiP13zfeXFYsLwnqSR18VR3SCEq3cVbU2QUx7Tt\"]}},\"version\":1}",
+ "metadata": {
+ "compiler": {
+ "version": "0.8.20+commit.a1b79de6"
+ },
+ "language": "Solidity",
+ "output": {
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "name_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "symbol_",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "baseURI_",
+ "type": "string"
+ },
+ {
+ "internalType": "bytes16",
+ "name": "appId_",
+ "type": "bytes16"
+ },
+ {
+ "internalType": "bool",
+ "name": "isImpersonationMode_",
+ "type": "bool"
+ },
+ {
+ "internalType": "struct AuthRequest[]",
+ "name": "authRequests_",
+ "type": "tuple[]",
+ "components": [
+ {
+ "internalType": "enum AuthType",
+ "name": "authType",
+ "type": "uint8"
+ },
+ {
+ "internalType": "uint256",
+ "name": "userId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "isAnon",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "isOptional",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ]
+ },
+ {
+ "internalType": "struct ClaimRequest[]",
+ "name": "claimRequests_",
+ "type": "tuple[]",
+ "components": [
+ {
+ "internalType": "enum ClaimType",
+ "name": "claimType",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes16",
+ "name": "groupId",
+ "type": "bytes16"
+ },
+ {
+ "internalType": "bytes16",
+ "name": "groupTimestamp",
+ "type": "bytes16"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "isOptional",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ]
+ },
+ {
+ "internalType": "address",
+ "name": "owner_",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "isNonTransferable_",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "enum AuthType",
+ "name": "authType",
+ "type": "uint8"
+ }
+ ],
+ "type": "error",
+ "name": "AuthTypeNotFoundInVerifiedResult"
+ },
+ {
+ "inputs": [
+
+ ],
+ "type": "error",
+ "name": "ERC721NonTransferable"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address",
+ "indexed": true
+ },
+ {
+ "internalType": "address",
+ "name": "approved",
+ "type": "address",
+ "indexed": true
+ },
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256",
+ "indexed": true
+ }
+ ],
+ "type": "event",
+ "name": "Approval",
+ "anonymous": false
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address",
+ "indexed": true
+ },
+ {
+ "internalType": "address",
+ "name": "operator",
+ "type": "address",
+ "indexed": true
+ },
+ {
+ "internalType": "bool",
+ "name": "approved",
+ "type": "bool",
+ "indexed": false
+ }
+ ],
+ "type": "event",
+ "name": "ApprovalForAll",
+ "anonymous": false
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "baseTokenURI",
+ "type": "string",
+ "indexed": false
+ }
+ ],
+ "type": "event",
+ "name": "BaseTokenURISet",
+ "anonymous": false
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address",
+ "indexed": true
+ },
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address",
+ "indexed": true
+ }
+ ],
+ "type": "event",
+ "name": "OwnershipTransferred",
+ "anonymous": false
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "from",
+ "type": "address",
+ "indexed": true
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address",
+ "indexed": true
+ },
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256",
+ "indexed": true
+ }
+ ],
+ "type": "event",
+ "name": "Transfer",
+ "anonymous": false
+ },
+ {
+ "inputs": [
+
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "ADDRESSES_PROVIDER_V2",
+ "outputs": [
+ {
+ "internalType": "contract IAddressesProvider",
+ "name": "",
+ "type": "address"
+ }
+ ]
+ },
+ {
+ "inputs": [
+
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "APP_ID",
+ "outputs": [
+ {
+ "internalType": "bytes16",
+ "name": "",
+ "type": "bytes16"
+ }
+ ]
+ },
+ {
+ "inputs": [
+
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "IMPLEMENTATION_VERSION",
+ "outputs": [
+ {
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
+ }
+ ]
+ },
+ {
+ "inputs": [
+
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "IS_IMPERSONATION_MODE",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ]
+ },
+ {
+ "inputs": [
+
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "IS_NON_TRANSFERABLE",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ]
+ },
+ {
+ "inputs": [
+
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "SISMO_CONNECT_LIB_VERSION",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ]
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "name": "approve"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ]
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "buildSignature",
+ "outputs": [
+ {
+ "internalType": "struct SignatureRequest",
+ "name": "",
+ "type": "tuple",
+ "components": [
+ {
+ "internalType": "bytes",
+ "name": "message",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "message",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "buildSignature",
+ "outputs": [
+ {
+ "internalType": "struct SignatureRequest",
+ "name": "",
+ "type": "tuple",
+ "components": [
+ {
+ "internalType": "bytes",
+ "name": "message",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "buildSignature",
+ "outputs": [
+ {
+ "internalType": "struct SignatureRequest",
+ "name": "",
+ "type": "tuple",
+ "components": [
+ {
+ "internalType": "bytes",
+ "name": "message",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "message",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "buildSignature",
+ "outputs": [
+ {
+ "internalType": "struct SignatureRequest",
+ "name": "",
+ "type": "tuple",
+ "components": [
+ {
+ "internalType": "bytes",
+ "name": "message",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "responseBytes",
+ "type": "bytes"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "name": "claimWithSismoConnect"
+ },
+ {
+ "inputs": [
+
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "config",
+ "outputs": [
+ {
+ "internalType": "struct SismoConnectConfig",
+ "name": "",
+ "type": "tuple",
+ "components": [
+ {
+ "internalType": "bytes16",
+ "name": "appId",
+ "type": "bytes16"
+ },
+ {
+ "internalType": "struct VaultConfig",
+ "name": "vault",
+ "type": "tuple",
+ "components": [
+ {
+ "internalType": "bool",
+ "name": "isImpersonationMode",
+ "type": "bool"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "getApproved",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ]
+ },
+ {
+ "inputs": [
+
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "getRequests",
+ "outputs": [
+ {
+ "internalType": "struct ZKDrop.Requests",
+ "name": "",
+ "type": "tuple",
+ "components": [
+ {
+ "internalType": "struct AuthRequest[]",
+ "name": "auths",
+ "type": "tuple[]",
+ "components": [
+ {
+ "internalType": "enum AuthType",
+ "name": "authType",
+ "type": "uint8"
+ },
+ {
+ "internalType": "uint256",
+ "name": "userId",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "isAnon",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "isOptional",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ]
+ },
+ {
+ "internalType": "struct ClaimRequest[]",
+ "name": "claims",
+ "type": "tuple[]",
+ "components": [
+ {
+ "internalType": "enum ClaimType",
+ "name": "claimType",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes16",
+ "name": "groupId",
+ "type": "bytes16"
+ },
+ {
+ "internalType": "bytes16",
+ "name": "groupTimestamp",
+ "type": "bytes16"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "isOptional",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "isSelectableByUser",
+ "type": "bool"
+ },
+ {
+ "internalType": "bytes",
+ "name": "extraData",
+ "type": "bytes"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "operator",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "isApprovedForAll",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ]
+ },
+ {
+ "inputs": [
+
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "name",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "inputs": [
+
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ]
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "ownerOf",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ]
+ },
+ {
+ "inputs": [
+
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "name": "renounceOwnership"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "name": "safeTransferFrom"
+ },
+ {
+ "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"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "name": "safeTransferFrom"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "operator",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "approved",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "name": "setApprovalForAll"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "baseUri",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "name": "setBaseTokenUri"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes4",
+ "name": "interfaceId",
+ "type": "bytes4"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "supportsInterface",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ]
+ },
+ {
+ "inputs": [
+
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "symbol",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "tokenURI",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "name": "transferFrom"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function",
+ "name": "transferOwnership"
+ }
+ ],
+ "devdoc": {
+ "kind": "dev",
+ "methods": {
+ "approve(address,uint256)": {
+ "details": "See {IERC721-approve}."
+ },
+ "balanceOf(address)": {
+ "details": "See {IERC721-balanceOf}."
+ },
+ "getApproved(uint256)": {
+ "details": "See {IERC721-getApproved}."
+ },
+ "isApprovedForAll(address,address)": {
+ "details": "Reverts, this is a non transferable ERC115 contract"
+ },
+ "name()": {
+ "details": "See {IERC721Metadata-name}."
+ },
+ "owner()": {
+ "details": "Returns the address of the current owner."
+ },
+ "ownerOf(uint256)": {
+ "details": "See {IERC721-ownerOf}."
+ },
+ "renounceOwnership()": {
+ "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
+ },
+ "safeTransferFrom(address,address,uint256)": {
+ "details": "See {IERC721-safeTransferFrom}."
+ },
+ "safeTransferFrom(address,address,uint256,bytes)": {
+ "details": "See {IERC721-safeTransferFrom}."
+ },
+ "setApprovalForAll(address,bool)": {
+ "details": "ERC721 can be set to non transferable in the constructor"
+ },
+ "supportsInterface(bytes4)": {
+ "details": "See {IERC165-supportsInterface}."
+ },
+ "symbol()": {
+ "details": "See {IERC721Metadata-symbol}."
+ },
+ "transferFrom(address,address,uint256)": {
+ "details": "See {IERC721-transferFrom}."
+ },
+ "transferOwnership(address)": {
+ "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
+ }
+ },
+ "version": 1
+ },
+ "userdoc": {
+ "kind": "user",
+ "methods": {
+
+ },
+ "version": 1
+ }
+ },
+ "settings": {
+ "remappings": [
+ ":@openzeppelin/contracts/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/lib/openzeppelin-contracts/contracts/",
+ ":@sismo-core/hydra-s3/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/lib/hydra-s3-zkps/package/contracts/",
+ ":ds-test/=lib/forge-std/lib/ds-test/src/",
+ ":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
+ ":forge-std/=lib/forge-std/src/",
+ ":hydra-s3-zkps/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/lib/hydra-s3-zkps/",
+ ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
+ ":openzeppelin-contracts/=lib/openzeppelin-contracts/",
+ ":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
+ ":openzeppelin/=lib/openzeppelin-contracts/contracts/",
+ ":sismo-connect-onchain-verifier/=lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/",
+ ":sismo-connect-packages/=lib/sismo-connect-packages/packages/sismo-connect-solidity/src/",
+ ":sismo-connect-solidity/=lib/sismo-connect-packages/packages/sismo-connect-solidity/src/"
+ ],
+ "optimizer": {
+ "enabled": true,
+ "runs": 200
+ },
+ "metadata": {
+ "bytecodeHash": "ipfs"
+ },
+ "compilationTarget": {
+ "src/ZKDrop.sol": "ZKDrop"
+ },
+ "libraries": {
+
+ }
+ },
+ "sources": {
+ "lib/openzeppelin-contracts/contracts/access/Ownable.sol": {
+ "keccak256": "0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218",
+ "urls": [
+ "bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32",
+ "dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz"
+ ],
+ "license": "MIT"
+ },
+ "lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol": {
+ "keccak256": "0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff",
+ "urls": [
+ "bzz-raw://7063b5c98711a98018ba4635ac74cee1c1cfa2ea01099498e062699ed9530005",
+ "dweb:/ipfs/QmeJ8rGXkcv7RrqLdAW8PCXPAykxVsddfYY6g5NaTwmRFE"
+ ],
+ "license": "MIT"
+ },
+ "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol": {
+ "keccak256": "0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266",
+ "urls": [
+ "bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4",
+ "dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR"
+ ],
+ "license": "MIT"
+ },
+ "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": {
+ "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da",
+ "urls": [
+ "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708",
+ "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV"
+ ],
+ "license": "MIT"
+ },
+ "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol": {
+ "keccak256": "0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9",
+ "urls": [
+ "bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146",
+ "dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf"
+ ],
+ "license": "MIT"
+ },
+ "lib/openzeppelin-contracts/contracts/utils/Address.sol": {
+ "keccak256": "0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa",
+ "urls": [
+ "bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931",
+ "dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"
+ ],
+ "license": "MIT"
+ },
+ "lib/openzeppelin-contracts/contracts/utils/Context.sol": {
+ "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
+ "urls": [
+ "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
+ "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
+ ],
+ "license": "MIT"
+ },
+ "lib/openzeppelin-contracts/contracts/utils/Strings.sol": {
+ "keccak256": "0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0",
+ "urls": [
+ "bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f",
+ "dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n"
+ ],
+ "license": "MIT"
+ },
+ "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": {
+ "keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b",
+ "urls": [
+ "bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d",
+ "dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"
+ ],
+ "license": "MIT"
+ },
+ "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": {
+ "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1",
+ "urls": [
+ "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f",
+ "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"
+ ],
+ "license": "MIT"
+ },
+ "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": {
+ "keccak256": "0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3",
+ "urls": [
+ "bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c",
+ "dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"
+ ],
+ "license": "MIT"
+ },
+ "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": {
+ "keccak256": "0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc",
+ "urls": [
+ "bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7",
+ "dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"
+ ],
+ "license": "MIT"
+ },
+ "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/interfaces/ISismoConnectVerifier.sol": {
+ "keccak256": "0x5d75914f12cf3f8d0cf67bca21aaf9d54fb9906e445fc1f2faf61110e1f17a2b",
+ "urls": [
+ "bzz-raw://b1910f1912cf2e967620a6863972f14a4d6b46e1896645691dd0a3d94ba080bd",
+ "dweb:/ipfs/QmcBbYEz7T74rWCRKA4bTXWWuXCVSFfMRujjCj1DWjbqyz"
+ ],
+ "license": "MIT"
+ },
+ "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/sismo-connect/SismoConnectLib.sol": {
+ "keccak256": "0x33aa00d8e5e494f53d8d094210ec314fd8d84becb9d2070ee0f23760d0c96d5c",
+ "urls": [
+ "bzz-raw://aeb0e6b4386ff99259e27fd774f755f535644d4231a883d5586d3cb7252fa7d3",
+ "dweb:/ipfs/QmQt7ueMtQvQLbWrRULJC5AgP47TG6ANTsSnQ2gDUK7BkT"
+ ],
+ "license": "MIT"
+ },
+ "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/AuthRequestBuilder.sol": {
+ "keccak256": "0xbdda4b5b5409ac0c27f2400f51862a9571522c5d7e208026a18999485c5f014b",
+ "urls": [
+ "bzz-raw://187d17390b234da4204b007ef4a55e66a6c924ee86fc84172e4b6933b97f239b",
+ "dweb:/ipfs/QmPgfmeZYdS2fvVFn24QCLaKJGsVqR3BceHsigGhDfKY3J"
+ ],
+ "license": "MIT"
+ },
+ "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/ClaimRequestBuilder.sol": {
+ "keccak256": "0x7b4109877f1339b0d98201b4c850a25d78ffe238e255eaec1b07a1064c8d8742",
+ "urls": [
+ "bzz-raw://58584f1e68aeb2e1ebb8fa05c0a756ec082afff05ef21b5f373f199d9e83bb2a",
+ "dweb:/ipfs/QmUvT1HHThpEf8zRJYkhsVjVX4w3nZZoG718n2Cad2z6wH"
+ ],
+ "license": "MIT"
+ },
+ "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/RequestBuilder.sol": {
+ "keccak256": "0x19fc14558d3512750b4d4d92238df61f66ab0687bef02468565c3e98fe969ac4",
+ "urls": [
+ "bzz-raw://bfea028b27cc576b4cb219fb6c5283b108ccb3e876bccfc4321c7b86360c7807",
+ "dweb:/ipfs/QmWrXZXhBHVjgpSNnP45iNqihjGwKyszsSsbbDgTu1yfpy"
+ ],
+ "license": "MIT"
+ },
+ "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/SignatureBuilder.sol": {
+ "keccak256": "0x5d071367c63510c3e38d4fe73b81ec2b7eda1c442fe3e8c75fcbab0d929524dc",
+ "urls": [
+ "bzz-raw://4e6ca7efdab0b903c060b743cf88c1f33db62e23a53786be56f91eddc6ccaeac",
+ "dweb:/ipfs/QmSRmRKouzYAqeEArZDrquG5i1hJHnNE18qegMhKaQYVEk"
+ ],
+ "license": "MIT"
+ },
+ "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/SismoConnectHelper.sol": {
+ "keccak256": "0xa3affedc6093d4b9a5796ee1ac1a6bc552991f19ca319a76ef5f8f522f730346",
+ "urls": [
+ "bzz-raw://6b6bb082dd92cae11ab6a470a0cd5522e9f79664fe4b8967b8fad6420bed3c9a",
+ "dweb:/ipfs/QmQEg2YE76ZPAfRaVUJSURT7BFPV7D4XqXYoztHYzNpNnf"
+ ],
+ "license": "MIT"
+ },
+ "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/libs/utils/Structs.sol": {
+ "keccak256": "0x978c56d685ed88ce85590f7f7acec107e34f5ef6b4cf9f4dcfc2be5b5d3e97d8",
+ "urls": [
+ "bzz-raw://6373516cad9fa0e4fbc344b3ce7155a4eca356403f748209cd13d86f8b24dee4",
+ "dweb:/ipfs/QmRDHCyetFYKL36GdM3hibo4hFHEWEZ9xPKrrvw9fBnLQn"
+ ],
+ "license": "MIT"
+ },
+ "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/periphery/interfaces/IAddressesProvider.sol": {
+ "keccak256": "0x7088a8721bb95c4d2ae77db038542e3afccfdb5772a9f6af500098f34514369e",
+ "urls": [
+ "bzz-raw://80cbf6bd03d96a9ef936b00d3cc7041e74e88ae6aa3bd6d8ab5a87a3c1eb7092",
+ "dweb:/ipfs/QmTxXhUhPC9siLtnudFpqtcV1JsJyDULmTV17F1NQdKFy7"
+ ],
+ "license": "MIT"
+ },
+ "lib/sismo-connect-packages/packages/sismo-connect-solidity/lib/sismo-connect-onchain-verifier/src/verifiers/IHydraS3Verifier.sol": {
+ "keccak256": "0x2c826b5e1ecfa9744fac3e13e9d19bc3eee097c5327844239c2d39ff37393825",
+ "urls": [
+ "bzz-raw://dd09478db59c454a03532b66024bd544cb537c7a3f6d9b5f7cdf5afae5e0e1ad",
+ "dweb:/ipfs/QmTf64dzbbCfFbssr8b8QG7K1AYDV5MThJ55Gyzi8DrwKv"
+ ],
+ "license": "MIT"
+ },
+ "lib/sismo-connect-packages/packages/sismo-connect-solidity/src/SismoLib.sol": {
+ "keccak256": "0xcacd8c83ca5df7d2562f05aaf299a65bdc2af393065b67cff0dc5f31ea6589b0",
+ "urls": [
+ "bzz-raw://1c3e7736338bab098b47788ac36d001c15d4441e344f0a52e012089417c4b134",
+ "dweb:/ipfs/QmfJjb7LQ31o7XdFsE917sZKXYVJTry8npdhSmKo9KywNu"
+ ],
+ "license": "MIT"
+ },
+ "src/ZKDrop.sol": {
+ "keccak256": "0xdca8cfb8d7d5808cc94247ebec1245f3eaf9eb64608a50f19fc31c9d97147914",
+ "urls": [
+ "bzz-raw://de49f07be7b5fbb54fc97e74f5e68b72c1e37dd224151d2a86c472edd90e0769",
+ "dweb:/ipfs/QmaGxT3kiP13zfeXFYsLwnqSR18VR3SCEq3cVbU2QUx7Tt"
+ ],
+ "license": "MIT"
+ }
+ },
+ "version": 1
+ },
+ "ast": {
+ "absolutePath": "src/ZKDrop.sol",
+ "id": 41015,
+ "exportedSymbols": {
+ "Auth": [
+ 39279
+ ],
+ "AuthRequest": [
+ 39231
+ ],
+ "AuthRequestBuilder": [
+ 37258
+ ],
+ "AuthType": [
+ 39261
+ ],
+ "Claim": [
+ 39293
+ ],
+ "ClaimRequest": [
+ 39247
+ ],
+ "ClaimRequestBuilder": [
+ 37905
+ ],
+ "ClaimType": [
+ 39267
+ ],
+ "ERC721": [
+ 31163
+ ],
+ "IAddressesProvider": [
+ 39441
+ ],
+ "IHydraS3Verifier": [
+ 39522
+ ],
+ "ISismoConnectVerifier": [
+ 34116
+ ],
+ "Ownable": [
+ 29479
+ ],
+ "RequestBuilder": [
+ 38939
+ ],
+ "Signature": [
+ 39298
+ ],
+ "SignatureBuilder": [
+ 39065
+ ],
+ "SignatureRequest": [
+ 39254
+ ],
+ "SismoConnect": [
+ 36800
+ ],
+ "SismoConnectConfig": [
+ 39214
+ ],
+ "SismoConnectHelper": [
+ 39192
+ ],
+ "SismoConnectRequest": [
+ 39208
+ ],
+ "SismoConnectResponse": [
+ 39311
+ ],
+ "SismoConnectVerifiedResult": [
+ 39343
+ ],
+ "VaultConfig": [
+ 39217
+ ],
+ "VerifiedAuth": [
+ 39355
+ ],
+ "VerifiedClaim": [
+ 39371
+ ],
+ "ZKDrop": [
+ 41014
+ ]
+ },
+ "nodeType": "SourceUnit",
+ "src": "32:3454:54",
+ "nodes": [
+ {
+ "id": 40681,
+ "nodeType": "PragmaDirective",
+ "src": "32:24:54",
+ "nodes": [
+
+ ],
+ "literals": [
+ "solidity",
+ "^",
+ "0.8",
+ ".17"
+ ]
+ },
+ {
+ "id": 40682,
+ "nodeType": "ImportDirective",
+ "src": "58:45:54",
+ "nodes": [
+
+ ],
+ "absolutePath": "lib/sismo-connect-packages/packages/sismo-connect-solidity/src/SismoLib.sol",
+ "file": "sismo-connect-solidity/SismoLib.sol",
+ "nameLocation": "-1:-1:-1",
+ "scope": 41015,
+ "sourceUnit": 39526,
+ "symbolAliases": [
+
+ ],
+ "unitAlias": ""
+ },
+ {
+ "id": 40684,
+ "nodeType": "ImportDirective",
+ "src": "104:60:54",
+ "nodes": [
+
+ ],
+ "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol",
+ "file": "openzeppelin/token/ERC721/ERC721.sol",
+ "nameLocation": "-1:-1:-1",
+ "scope": 41015,
+ "sourceUnit": 31164,
+ "symbolAliases": [
+ {
+ "foreign": {
+ "id": 40683,
+ "name": "ERC721",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 31163,
+ "src": "112:6:54",
+ "typeDescriptions": {
+
+ }
+ },
+ "nameLocation": "-1:-1:-1"
+ }
+ ],
+ "unitAlias": ""
+ },
+ {
+ "id": 40686,
+ "nodeType": "ImportDirective",
+ "src": "165:56:54",
+ "nodes": [
+
+ ],
+ "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol",
+ "file": "openzeppelin/access/Ownable.sol",
+ "nameLocation": "-1:-1:-1",
+ "scope": 41015,
+ "sourceUnit": 29480,
+ "symbolAliases": [
+ {
+ "foreign": {
+ "id": 40685,
+ "name": "Ownable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 29479,
+ "src": "173:7:54",
+ "typeDescriptions": {
+
+ }
+ },
+ "nameLocation": "-1:-1:-1"
+ }
+ ],
+ "unitAlias": ""
+ },
+ {
+ "id": 41014,
+ "nodeType": "ContractDefinition",
+ "src": "223:3262:54",
+ "nodes": [
+ {
+ "id": 40696,
+ "nodeType": "UsingForDirective",
+ "src": "276:56:54",
+ "nodes": [
+
+ ],
+ "global": false,
+ "libraryName": {
+ "id": 40693,
+ "name": "SismoConnectHelper",
+ "nameLocations": [
+ "282:18:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 39192,
+ "src": "282:18:54"
+ },
+ "typeName": {
+ "id": 40695,
+ "nodeType": "UserDefinedTypeName",
+ "pathNode": {
+ "id": 40694,
+ "name": "SismoConnectVerifiedResult",
+ "nameLocations": [
+ "305:26:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 39343,
+ "src": "305:26:54"
+ },
+ "referencedDeclaration": 39343,
+ "src": "305:26:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SismoConnectVerifiedResult_$39343_storage_ptr",
+ "typeString": "struct SismoConnectVerifiedResult"
+ }
+ }
+ },
+ {
+ "id": 40699,
+ "nodeType": "VariableDeclaration",
+ "src": "336:48:54",
+ "nodes": [
+
+ ],
+ "constant": true,
+ "functionSelector": "754b377c",
+ "mutability": "constant",
+ "name": "IMPLEMENTATION_VERSION",
+ "nameLocation": "358:22:54",
+ "scope": 41014,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 40697,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "336:5:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": {
+ "hexValue": "31",
+ "id": 40698,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "383:1:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "visibility": "public"
+ },
+ {
+ "id": 40708,
+ "nodeType": "StructDefinition",
+ "src": "389:73:54",
+ "nodes": [
+
+ ],
+ "canonicalName": "ZKDrop.Requests",
+ "members": [
+ {
+ "constant": false,
+ "id": 40703,
+ "mutability": "mutable",
+ "name": "auths",
+ "nameLocation": "425:5:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40708,
+ "src": "411:19:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage_ptr",
+ "typeString": "struct AuthRequest[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 40701,
+ "nodeType": "UserDefinedTypeName",
+ "pathNode": {
+ "id": 40700,
+ "name": "AuthRequest",
+ "nameLocations": [
+ "411:11:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 39231,
+ "src": "411:11:54"
+ },
+ "referencedDeclaration": 39231,
+ "src": "411:11:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_AuthRequest_$39231_storage_ptr",
+ "typeString": "struct AuthRequest"
+ }
+ },
+ "id": 40702,
+ "nodeType": "ArrayTypeName",
+ "src": "411:13:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage_ptr",
+ "typeString": "struct AuthRequest[]"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40707,
+ "mutability": "mutable",
+ "name": "claims",
+ "nameLocation": "451:6:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40708,
+ "src": "436:21:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage_ptr",
+ "typeString": "struct ClaimRequest[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 40705,
+ "nodeType": "UserDefinedTypeName",
+ "pathNode": {
+ "id": 40704,
+ "name": "ClaimRequest",
+ "nameLocations": [
+ "436:12:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 39247,
+ "src": "436:12:54"
+ },
+ "referencedDeclaration": 39247,
+ "src": "436:12:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_ClaimRequest_$39247_storage_ptr",
+ "typeString": "struct ClaimRequest"
+ }
+ },
+ "id": 40706,
+ "nodeType": "ArrayTypeName",
+ "src": "436:14:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage_ptr",
+ "typeString": "struct ClaimRequest[]"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "name": "Requests",
+ "nameLocation": "396:8:54",
+ "scope": 41014,
+ "visibility": "public"
+ },
+ {
+ "id": 40710,
+ "nodeType": "VariableDeclaration",
+ "src": "466:28:54",
+ "nodes": [
+
+ ],
+ "constant": false,
+ "mutability": "mutable",
+ "name": "_baseTokenURI",
+ "nameLocation": "481:13:54",
+ "scope": 41014,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 40709,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "466:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "visibility": "private"
+ },
+ {
+ "id": 40713,
+ "nodeType": "VariableDeclaration",
+ "src": "498:26:54",
+ "nodes": [
+
+ ],
+ "constant": false,
+ "mutability": "mutable",
+ "name": "_requests",
+ "nameLocation": "515:9:54",
+ "scope": 41014,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Requests_$40708_storage",
+ "typeString": "struct ZKDrop.Requests"
+ },
+ "typeName": {
+ "id": 40712,
+ "nodeType": "UserDefinedTypeName",
+ "pathNode": {
+ "id": 40711,
+ "name": "Requests",
+ "nameLocations": [
+ "498:8:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 40708,
+ "src": "498:8:54"
+ },
+ "referencedDeclaration": 40708,
+ "src": "498:8:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Requests_$40708_storage_ptr",
+ "typeString": "struct ZKDrop.Requests"
+ }
+ },
+ "visibility": "private"
+ },
+ {
+ "id": 40715,
+ "nodeType": "VariableDeclaration",
+ "src": "528:41:54",
+ "nodes": [
+
+ ],
+ "constant": false,
+ "functionSelector": "c4b2e8ff",
+ "mutability": "immutable",
+ "name": "IS_NON_TRANSFERABLE",
+ "nameLocation": "550:19:54",
+ "scope": 41014,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 40714,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "528:4:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "visibility": "public"
+ },
+ {
+ "id": 40717,
+ "nodeType": "ErrorDefinition",
+ "src": "574:30:54",
+ "nodes": [
+
+ ],
+ "errorSelector": "4c61c1be",
+ "name": "ERC721NonTransferable",
+ "nameLocation": "580:21:54",
+ "parameters": {
+ "id": 40716,
+ "nodeType": "ParameterList",
+ "parameters": [
+
+ ],
+ "src": "601:2:54"
+ }
+ },
+ {
+ "id": 40721,
+ "nodeType": "EventDefinition",
+ "src": "607:43:54",
+ "nodes": [
+
+ ],
+ "anonymous": false,
+ "eventSelector": "2e9b34e5ec7377754a85ec13c1e9a442a00db0c46dbdefbb143dd0371fd20c1c",
+ "name": "BaseTokenURISet",
+ "nameLocation": "613:15:54",
+ "parameters": {
+ "id": 40720,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40719,
+ "indexed": false,
+ "mutability": "mutable",
+ "name": "baseTokenURI",
+ "nameLocation": "636:12:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40721,
+ "src": "629:19:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 40718,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "629:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "628:21:54"
+ }
+ },
+ {
+ "id": 40777,
+ "nodeType": "FunctionDefinition",
+ "src": "654:534:54",
+ "nodes": [
+
+ ],
+ "body": {
+ "id": 40776,
+ "nodeType": "Block",
+ "src": "1011:177:54",
+ "nodes": [
+
+ ],
+ "statements": [
+ {
+ "expression": {
+ "arguments": [
+ {
+ "id": 40757,
+ "name": "owner_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40741,
+ "src": "1036:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 40756,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 29478,
+ "src": "1017:18:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 40758,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "1017:26:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 40759,
+ "nodeType": "ExpressionStatement",
+ "src": "1017:26:54"
+ },
+ {
+ "expression": {
+ "arguments": [
+ {
+ "id": 40761,
+ "name": "baseURI_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40727,
+ "src": "1066:8:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ ],
+ "id": 40760,
+ "name": "_setBaseTokenUri",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40928,
+ "src": "1049:16:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (string memory)"
+ }
+ },
+ "id": 40762,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "1049:26:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 40763,
+ "nodeType": "ExpressionStatement",
+ "src": "1049:26:54"
+ },
+ {
+ "expression": {
+ "arguments": [
+ {
+ "id": 40765,
+ "name": "authRequests_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40735,
+ "src": "1091:13:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr",
+ "typeString": "struct AuthRequest memory[] memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr",
+ "typeString": "struct AuthRequest memory[] memory"
+ }
+ ],
+ "id": 40764,
+ "name": "_setAuths",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40883,
+ "src": "1081:9:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr_$returns$__$",
+ "typeString": "function (struct AuthRequest memory[] memory)"
+ }
+ },
+ "id": 40766,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "1081:24:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 40767,
+ "nodeType": "ExpressionStatement",
+ "src": "1081:24:54"
+ },
+ {
+ "expression": {
+ "arguments": [
+ {
+ "id": 40769,
+ "name": "claimRequests_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40739,
+ "src": "1122:14:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr",
+ "typeString": "struct ClaimRequest memory[] memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr",
+ "typeString": "struct ClaimRequest memory[] memory"
+ }
+ ],
+ "id": 40768,
+ "name": "_setClaims",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40914,
+ "src": "1111:10:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr_$returns$__$",
+ "typeString": "function (struct ClaimRequest memory[] memory)"
+ }
+ },
+ "id": 40770,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "1111:26:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 40771,
+ "nodeType": "ExpressionStatement",
+ "src": "1111:26:54"
+ },
+ {
+ "expression": {
+ "id": 40774,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "id": 40772,
+ "name": "IS_NON_TRANSFERABLE",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40715,
+ "src": "1143:19:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "id": 40773,
+ "name": "isNonTransferable_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40743,
+ "src": "1165:18:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "1143:40:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 40775,
+ "nodeType": "ExpressionStatement",
+ "src": "1143:40:54"
+ }
+ ]
+ },
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "id": 40746,
+ "name": "name_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40723,
+ "src": "939:5:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ {
+ "id": 40747,
+ "name": "symbol_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40725,
+ "src": "946:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ }
+ ],
+ "id": 40748,
+ "kind": "baseConstructorSpecifier",
+ "modifierName": {
+ "id": 40745,
+ "name": "ERC721",
+ "nameLocations": [
+ "932:6:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 31163,
+ "src": "932:6:54"
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "932:22:54"
+ },
+ {
+ "arguments": [
+ {
+ "arguments": [
+ {
+ "id": 40751,
+ "name": "appId_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40729,
+ "src": "980:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes16",
+ "typeString": "bytes16"
+ }
+ },
+ {
+ "id": 40752,
+ "name": "isImpersonationMode_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40731,
+ "src": "988:20:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes16",
+ "typeString": "bytes16"
+ },
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 40750,
+ "name": "buildConfig",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 34283,
+ 34301
+ ],
+ "referencedDeclaration": 34301,
+ "src": "968:11:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes16_$_t_bool_$returns$_t_struct$_SismoConnectConfig_$39214_memory_ptr_$",
+ "typeString": "function (bytes16,bool) pure returns (struct SismoConnectConfig memory)"
+ }
+ },
+ "id": 40753,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "968:41:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SismoConnectConfig_$39214_memory_ptr",
+ "typeString": "struct SismoConnectConfig memory"
+ }
+ }
+ ],
+ "id": 40754,
+ "kind": "baseConstructorSpecifier",
+ "modifierName": {
+ "id": 40749,
+ "name": "SismoConnect",
+ "nameLocations": [
+ "955:12:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 36800,
+ "src": "955:12:54"
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "955:55:54"
+ }
+ ],
+ "name": "",
+ "nameLocation": "-1:-1:-1",
+ "parameters": {
+ "id": 40744,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40723,
+ "mutability": "mutable",
+ "name": "name_",
+ "nameLocation": "685:5:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40777,
+ "src": "671:19:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 40722,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "671:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40725,
+ "mutability": "mutable",
+ "name": "symbol_",
+ "nameLocation": "710:7:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40777,
+ "src": "696:21:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 40724,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "696:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40727,
+ "mutability": "mutable",
+ "name": "baseURI_",
+ "nameLocation": "737:8:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40777,
+ "src": "723:22:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 40726,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "723:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40729,
+ "mutability": "mutable",
+ "name": "appId_",
+ "nameLocation": "759:6:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40777,
+ "src": "751:14:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes16",
+ "typeString": "bytes16"
+ },
+ "typeName": {
+ "id": 40728,
+ "name": "bytes16",
+ "nodeType": "ElementaryTypeName",
+ "src": "751:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes16",
+ "typeString": "bytes16"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40731,
+ "mutability": "mutable",
+ "name": "isImpersonationMode_",
+ "nameLocation": "776:20:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40777,
+ "src": "771:25:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 40730,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "771:4:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40735,
+ "mutability": "mutable",
+ "name": "authRequests_",
+ "nameLocation": "823:13:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40777,
+ "src": "802:34:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr",
+ "typeString": "struct AuthRequest[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 40733,
+ "nodeType": "UserDefinedTypeName",
+ "pathNode": {
+ "id": 40732,
+ "name": "AuthRequest",
+ "nameLocations": [
+ "802:11:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 39231,
+ "src": "802:11:54"
+ },
+ "referencedDeclaration": 39231,
+ "src": "802:11:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_AuthRequest_$39231_storage_ptr",
+ "typeString": "struct AuthRequest"
+ }
+ },
+ "id": 40734,
+ "nodeType": "ArrayTypeName",
+ "src": "802:13:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage_ptr",
+ "typeString": "struct AuthRequest[]"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40739,
+ "mutability": "mutable",
+ "name": "claimRequests_",
+ "nameLocation": "864:14:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40777,
+ "src": "842:36:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr",
+ "typeString": "struct ClaimRequest[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 40737,
+ "nodeType": "UserDefinedTypeName",
+ "pathNode": {
+ "id": 40736,
+ "name": "ClaimRequest",
+ "nameLocations": [
+ "842:12:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 39247,
+ "src": "842:12:54"
+ },
+ "referencedDeclaration": 39247,
+ "src": "842:12:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_ClaimRequest_$39247_storage_ptr",
+ "typeString": "struct ClaimRequest"
+ }
+ },
+ "id": 40738,
+ "nodeType": "ArrayTypeName",
+ "src": "842:14:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage_ptr",
+ "typeString": "struct ClaimRequest[]"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40741,
+ "mutability": "mutable",
+ "name": "owner_",
+ "nameLocation": "892:6:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40777,
+ "src": "884:14:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 40740,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "884:7:54",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40743,
+ "mutability": "mutable",
+ "name": "isNonTransferable_",
+ "nameLocation": "909:18:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40777,
+ "src": "904:23:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 40742,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "904:4:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "665:266:54"
+ },
+ "returnParameters": {
+ "id": 40755,
+ "nodeType": "ParameterList",
+ "parameters": [
+
+ ],
+ "src": "1011:0:54"
+ },
+ "scope": 41014,
+ "stateMutability": "nonpayable",
+ "virtual": false,
+ "visibility": "public"
+ },
+ {
+ "id": 40815,
+ "nodeType": "FunctionDefinition",
+ "src": "1192:387:54",
+ "nodes": [
+
+ ],
+ "body": {
+ "id": 40814,
+ "nodeType": "Block",
+ "src": "1272:307:54",
+ "nodes": [
+
+ ],
+ "statements": [
+ {
+ "assignments": [
+ 40786
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 40786,
+ "mutability": "mutable",
+ "name": "result",
+ "nameLocation": "1312:6:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40814,
+ "src": "1278:40:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SismoConnectVerifiedResult_$39343_memory_ptr",
+ "typeString": "struct SismoConnectVerifiedResult"
+ },
+ "typeName": {
+ "id": 40785,
+ "nodeType": "UserDefinedTypeName",
+ "pathNode": {
+ "id": 40784,
+ "name": "SismoConnectVerifiedResult",
+ "nameLocations": [
+ "1278:26:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 39343,
+ "src": "1278:26:54"
+ },
+ "referencedDeclaration": 39343,
+ "src": "1278:26:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SismoConnectVerifiedResult_$39343_storage_ptr",
+ "typeString": "struct SismoConnectVerifiedResult"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "id": 40800,
+ "initialValue": {
+ "arguments": [
+ {
+ "id": 40788,
+ "name": "responseBytes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40779,
+ "src": "1351:13:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "expression": {
+ "id": 40789,
+ "name": "_requests",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40713,
+ "src": "1379:9:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Requests_$40708_storage",
+ "typeString": "struct ZKDrop.Requests storage ref"
+ }
+ },
+ "id": 40790,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberLocation": "1389:5:54",
+ "memberName": "auths",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 40703,
+ "src": "1379:15:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage",
+ "typeString": "struct AuthRequest storage ref[] storage ref"
+ }
+ },
+ {
+ "expression": {
+ "id": 40791,
+ "name": "_requests",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40713,
+ "src": "1410:9:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Requests_$40708_storage",
+ "typeString": "struct ZKDrop.Requests storage ref"
+ }
+ },
+ "id": 40792,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberLocation": "1420:6:54",
+ "memberName": "claims",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 40707,
+ "src": "1410:16:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage",
+ "typeString": "struct ClaimRequest storage ref[] storage ref"
+ }
+ },
+ {
+ "arguments": [
+ {
+ "arguments": [
+ {
+ "id": 40796,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40781,
+ "src": "1481:2:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "expression": {
+ "id": 40794,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": -1,
+ "src": "1470:3:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 40795,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberLocation": "1474:6:54",
+ "memberName": "encode",
+ "nodeType": "MemberAccess",
+ "src": "1470:10:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 40797,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "1470:14:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 40793,
+ "name": "buildSignature",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 36187,
+ 36204
+ ],
+ "referencedDeclaration": 36187,
+ "src": "1445:14:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_struct$_SignatureRequest_$39254_memory_ptr_$",
+ "typeString": "function (bytes memory) view returns (struct SignatureRequest memory)"
+ }
+ },
+ "id": 40798,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+ "1461:7:54"
+ ],
+ "names": [
+ "message"
+ ],
+ "nodeType": "FunctionCall",
+ "src": "1445:41:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignatureRequest_$39254_memory_ptr",
+ "typeString": "struct SignatureRequest memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage",
+ "typeString": "struct AuthRequest storage ref[] storage ref"
+ },
+ {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage",
+ "typeString": "struct ClaimRequest storage ref[] storage ref"
+ },
+ {
+ "typeIdentifier": "t_struct$_SignatureRequest_$39254_memory_ptr",
+ "typeString": "struct SignatureRequest memory"
+ }
+ ],
+ "id": 40787,
+ "name": "verify",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 34373,
+ 34417,
+ 34461,
+ 34505,
+ 34545,
+ 34585,
+ 34630,
+ 34671,
+ 34712,
+ 34753,
+ 34790,
+ 34827,
+ 34857,
+ 34907,
+ 34953,
+ 34998,
+ 35043,
+ 35084,
+ 35125,
+ 35172,
+ 35215,
+ 35257,
+ 35299,
+ 35337,
+ 35375
+ ],
+ "referencedDeclaration": 35172,
+ "src": "1321:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr_$_t_struct$_SignatureRequest_$39254_memory_ptr_$returns$_t_struct$_SismoConnectVerifiedResult_$39343_memory_ptr_$",
+ "typeString": "function (bytes memory,struct AuthRequest memory[] memory,struct ClaimRequest memory[] memory,struct SignatureRequest memory) returns (struct SismoConnectVerifiedResult memory)"
+ }
+ },
+ "id": 40799,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+ "1336:13:54",
+ "1372:5:54",
+ "1402:6:54",
+ "1434:9:54"
+ ],
+ "names": [
+ "responseBytes",
+ "auths",
+ "claims",
+ "signature"
+ ],
+ "nodeType": "FunctionCall",
+ "src": "1321:172:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SismoConnectVerifiedResult_$39343_memory_ptr",
+ "typeString": "struct SismoConnectVerifiedResult memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1278:215:54"
+ },
+ {
+ "assignments": [
+ 40802
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 40802,
+ "mutability": "mutable",
+ "name": "tokenId",
+ "nameLocation": "1508:7:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40814,
+ "src": "1500:15:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 40801,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1500:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "id": 40808,
+ "initialValue": {
+ "arguments": [
+ {
+ "expression": {
+ "id": 40805,
+ "name": "AuthType",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 39261,
+ "src": "1535:8:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_enum$_AuthType_$39261_$",
+ "typeString": "type(enum AuthType)"
+ }
+ },
+ "id": 40806,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberLocation": "1544:5:54",
+ "memberName": "VAULT",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 39255,
+ "src": "1535:14:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_enum$_AuthType_$39261",
+ "typeString": "enum AuthType"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_enum$_AuthType_$39261",
+ "typeString": "enum AuthType"
+ }
+ ],
+ "expression": {
+ "id": 40803,
+ "name": "result",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40786,
+ "src": "1518:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SismoConnectVerifiedResult_$39343_memory_ptr",
+ "typeString": "struct SismoConnectVerifiedResult memory"
+ }
+ },
+ "id": 40804,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberLocation": "1525:9:54",
+ "memberName": "getUserId",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 39118,
+ "src": "1518:16:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_SismoConnectVerifiedResult_$39343_memory_ptr_$_t_enum$_AuthType_$39261_$returns$_t_uint256_$attached_to$_t_struct$_SismoConnectVerifiedResult_$39343_memory_ptr_$",
+ "typeString": "function (struct SismoConnectVerifiedResult memory,enum AuthType) pure returns (uint256)"
+ }
+ },
+ "id": 40807,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "1518:32:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1500:50:54"
+ },
+ {
+ "expression": {
+ "arguments": [
+ {
+ "id": 40810,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40781,
+ "src": "1562:2:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "id": 40811,
+ "name": "tokenId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40802,
+ "src": "1566:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 40809,
+ "name": "_mint",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 30837,
+ "src": "1556:5:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 40812,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "1556:18:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 40813,
+ "nodeType": "ExpressionStatement",
+ "src": "1556:18:54"
+ }
+ ]
+ },
+ "functionSelector": "07c8064f",
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+
+ ],
+ "name": "claimWithSismoConnect",
+ "nameLocation": "1201:21:54",
+ "parameters": {
+ "id": 40782,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40779,
+ "mutability": "mutable",
+ "name": "responseBytes",
+ "nameLocation": "1236:13:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40815,
+ "src": "1223:26:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 40778,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "1223:5:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40781,
+ "mutability": "mutable",
+ "name": "to",
+ "nameLocation": "1259:2:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40815,
+ "src": "1251:10:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 40780,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1251:7:54",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "1222:40:54"
+ },
+ "returnParameters": {
+ "id": 40783,
+ "nodeType": "ParameterList",
+ "parameters": [
+
+ ],
+ "src": "1272:0:54"
+ },
+ "scope": 41014,
+ "stateMutability": "nonpayable",
+ "virtual": false,
+ "visibility": "external"
+ },
+ {
+ "id": 40829,
+ "nodeType": "FunctionDefinition",
+ "src": "1583:131:54",
+ "nodes": [
+
+ ],
+ "body": {
+ "id": 40828,
+ "nodeType": "Block",
+ "src": "1646:68:54",
+ "nodes": [
+
+ ],
+ "statements": [
+ {
+ "assignments": [
+ 40823
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 40823,
+ "mutability": "mutable",
+ "name": "requests",
+ "nameLocation": "1668:8:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40828,
+ "src": "1652:24:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Requests_$40708_memory_ptr",
+ "typeString": "struct ZKDrop.Requests"
+ },
+ "typeName": {
+ "id": 40822,
+ "nodeType": "UserDefinedTypeName",
+ "pathNode": {
+ "id": 40821,
+ "name": "Requests",
+ "nameLocations": [
+ "1652:8:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 40708,
+ "src": "1652:8:54"
+ },
+ "referencedDeclaration": 40708,
+ "src": "1652:8:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Requests_$40708_storage_ptr",
+ "typeString": "struct ZKDrop.Requests"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "id": 40825,
+ "initialValue": {
+ "id": 40824,
+ "name": "_requests",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40713,
+ "src": "1679:9:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Requests_$40708_storage",
+ "typeString": "struct ZKDrop.Requests storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1652:36:54"
+ },
+ {
+ "expression": {
+ "id": 40826,
+ "name": "requests",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40823,
+ "src": "1701:8:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Requests_$40708_memory_ptr",
+ "typeString": "struct ZKDrop.Requests memory"
+ }
+ },
+ "functionReturnParameters": 40820,
+ "id": 40827,
+ "nodeType": "Return",
+ "src": "1694:15:54"
+ }
+ ]
+ },
+ "functionSelector": "8813ce12",
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+
+ ],
+ "name": "getRequests",
+ "nameLocation": "1592:11:54",
+ "parameters": {
+ "id": 40816,
+ "nodeType": "ParameterList",
+ "parameters": [
+
+ ],
+ "src": "1603:2:54"
+ },
+ "returnParameters": {
+ "id": 40820,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40819,
+ "mutability": "mutable",
+ "name": "",
+ "nameLocation": "-1:-1:-1",
+ "nodeType": "VariableDeclaration",
+ "scope": 40829,
+ "src": "1629:15:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Requests_$40708_memory_ptr",
+ "typeString": "struct ZKDrop.Requests"
+ },
+ "typeName": {
+ "id": 40818,
+ "nodeType": "UserDefinedTypeName",
+ "pathNode": {
+ "id": 40817,
+ "name": "Requests",
+ "nameLocations": [
+ "1629:8:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 40708,
+ "src": "1629:8:54"
+ },
+ "referencedDeclaration": 40708,
+ "src": "1629:8:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Requests_$40708_storage_ptr",
+ "typeString": "struct ZKDrop.Requests"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "1628:17:54"
+ },
+ "scope": 41014,
+ "stateMutability": "view",
+ "virtual": false,
+ "visibility": "external"
+ },
+ {
+ "id": 40841,
+ "nodeType": "FunctionDefinition",
+ "src": "1718:103:54",
+ "nodes": [
+
+ ],
+ "body": {
+ "id": 40840,
+ "nodeType": "Block",
+ "src": "1785:36:54",
+ "nodes": [
+
+ ],
+ "statements": [
+ {
+ "expression": {
+ "arguments": [
+ {
+ "id": 40837,
+ "name": "baseUri",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40831,
+ "src": "1808:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ ],
+ "id": 40836,
+ "name": "_setBaseTokenUri",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40928,
+ "src": "1791:16:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (string memory)"
+ }
+ },
+ "id": 40838,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "1791:25:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 40839,
+ "nodeType": "ExpressionStatement",
+ "src": "1791:25:54"
+ }
+ ]
+ },
+ "functionSelector": "95652cfa",
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "id": 40834,
+ "kind": "modifierInvocation",
+ "modifierName": {
+ "id": 40833,
+ "name": "onlyOwner",
+ "nameLocations": [
+ "1775:9:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 29398,
+ "src": "1775:9:54"
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "1775:9:54"
+ }
+ ],
+ "name": "setBaseTokenUri",
+ "nameLocation": "1727:15:54",
+ "parameters": {
+ "id": 40832,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40831,
+ "mutability": "mutable",
+ "name": "baseUri",
+ "nameLocation": "1757:7:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40841,
+ "src": "1743:21:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 40830,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1743:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "1742:23:54"
+ },
+ "returnParameters": {
+ "id": 40835,
+ "nodeType": "ParameterList",
+ "parameters": [
+
+ ],
+ "src": "1785:0:54"
+ },
+ "scope": 41014,
+ "stateMutability": "nonpayable",
+ "virtual": false,
+ "visibility": "external"
+ },
+ {
+ "id": 40852,
+ "nodeType": "FunctionDefinition",
+ "src": "1825:103:54",
+ "nodes": [
+
+ ],
+ "body": {
+ "id": 40851,
+ "nodeType": "Block",
+ "src": "1897:31:54",
+ "nodes": [
+
+ ],
+ "statements": [
+ {
+ "expression": {
+ "id": 40849,
+ "name": "_baseTokenURI",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40710,
+ "src": "1910:13:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "functionReturnParameters": 40848,
+ "id": 40850,
+ "nodeType": "Return",
+ "src": "1903:20:54"
+ }
+ ]
+ },
+ "baseFunctions": [
+ 30441
+ ],
+ "functionSelector": "c87b56dd",
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+
+ ],
+ "name": "tokenURI",
+ "nameLocation": "1834:8:54",
+ "overrides": {
+ "id": 40845,
+ "nodeType": "OverrideSpecifier",
+ "overrides": [
+
+ ],
+ "src": "1864:8:54"
+ },
+ "parameters": {
+ "id": 40844,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40843,
+ "mutability": "mutable",
+ "name": "",
+ "nameLocation": "-1:-1:-1",
+ "nodeType": "VariableDeclaration",
+ "scope": 40852,
+ "src": "1843:7:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 40842,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1843:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "1842:9:54"
+ },
+ "returnParameters": {
+ "id": 40848,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40847,
+ "mutability": "mutable",
+ "name": "",
+ "nameLocation": "-1:-1:-1",
+ "nodeType": "VariableDeclaration",
+ "scope": 40852,
+ "src": "1882:13:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 40846,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1882:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "1881:15:54"
+ },
+ "scope": 41014,
+ "stateMutability": "view",
+ "virtual": false,
+ "visibility": "public"
+ },
+ {
+ "id": 40883,
+ "nodeType": "FunctionDefinition",
+ "src": "1932:156:54",
+ "nodes": [
+
+ ],
+ "body": {
+ "id": 40882,
+ "nodeType": "Block",
+ "src": "1988:100:54",
+ "nodes": [
+
+ ],
+ "statements": [
+ {
+ "body": {
+ "id": 40880,
+ "nodeType": "Block",
+ "src": "2038:46:54",
+ "statements": [
+ {
+ "expression": {
+ "arguments": [
+ {
+ "baseExpression": {
+ "id": 40875,
+ "name": "auths_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40856,
+ "src": "2067:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr",
+ "typeString": "struct AuthRequest memory[] memory"
+ }
+ },
+ "id": 40877,
+ "indexExpression": {
+ "id": 40876,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40860,
+ "src": "2074:1:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2067:9:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_AuthRequest_$39231_memory_ptr",
+ "typeString": "struct AuthRequest memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_AuthRequest_$39231_memory_ptr",
+ "typeString": "struct AuthRequest memory"
+ }
+ ],
+ "expression": {
+ "expression": {
+ "id": 40870,
+ "name": "_requests",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40713,
+ "src": "2046:9:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Requests_$40708_storage",
+ "typeString": "struct ZKDrop.Requests storage ref"
+ }
+ },
+ "id": 40873,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberLocation": "2056:5:54",
+ "memberName": "auths",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 40703,
+ "src": "2046:15:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage",
+ "typeString": "struct AuthRequest storage ref[] storage ref"
+ }
+ },
+ "id": 40874,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberLocation": "2062:4:54",
+ "memberName": "push",
+ "nodeType": "MemberAccess",
+ "src": "2046:20:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage_ptr_$_t_struct$_AuthRequest_$39231_storage_$returns$__$attached_to$_t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage_ptr_$",
+ "typeString": "function (struct AuthRequest storage ref[] storage pointer,struct AuthRequest storage ref)"
+ }
+ },
+ "id": 40878,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "2046:31:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 40879,
+ "nodeType": "ExpressionStatement",
+ "src": "2046:31:54"
+ }
+ ]
+ },
+ "condition": {
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 40866,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "id": 40863,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40860,
+ "src": "2014:1:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "expression": {
+ "id": 40864,
+ "name": "auths_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40856,
+ "src": "2018:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr",
+ "typeString": "struct AuthRequest memory[] memory"
+ }
+ },
+ "id": 40865,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberLocation": "2025:6:54",
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "src": "2018:13:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2014:17:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 40881,
+ "initializationExpression": {
+ "assignments": [
+ 40860
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 40860,
+ "mutability": "mutable",
+ "name": "i",
+ "nameLocation": "2007:1:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40881,
+ "src": "1999:9:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 40859,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1999:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "id": 40862,
+ "initialValue": {
+ "hexValue": "30",
+ "id": 40861,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2011:1:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1999:13:54"
+ },
+ "loopExpression": {
+ "expression": {
+ "id": 40868,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "++",
+ "prefix": false,
+ "src": "2033:3:54",
+ "subExpression": {
+ "id": 40867,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40860,
+ "src": "2033:1:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 40869,
+ "nodeType": "ExpressionStatement",
+ "src": "2033:3:54"
+ },
+ "nodeType": "ForStatement",
+ "src": "1994:90:54"
+ }
+ ]
+ },
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+
+ ],
+ "name": "_setAuths",
+ "nameLocation": "1941:9:54",
+ "parameters": {
+ "id": 40857,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40856,
+ "mutability": "mutable",
+ "name": "auths_",
+ "nameLocation": "1972:6:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40883,
+ "src": "1951:27:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_memory_ptr_$dyn_memory_ptr",
+ "typeString": "struct AuthRequest[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 40854,
+ "nodeType": "UserDefinedTypeName",
+ "pathNode": {
+ "id": 40853,
+ "name": "AuthRequest",
+ "nameLocations": [
+ "1951:11:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 39231,
+ "src": "1951:11:54"
+ },
+ "referencedDeclaration": 39231,
+ "src": "1951:11:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_AuthRequest_$39231_storage_ptr",
+ "typeString": "struct AuthRequest"
+ }
+ },
+ "id": 40855,
+ "nodeType": "ArrayTypeName",
+ "src": "1951:13:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_AuthRequest_$39231_storage_$dyn_storage_ptr",
+ "typeString": "struct AuthRequest[]"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "1950:29:54"
+ },
+ "returnParameters": {
+ "id": 40858,
+ "nodeType": "ParameterList",
+ "parameters": [
+
+ ],
+ "src": "1988:0:54"
+ },
+ "scope": 41014,
+ "stateMutability": "nonpayable",
+ "virtual": false,
+ "visibility": "private"
+ },
+ {
+ "id": 40914,
+ "nodeType": "FunctionDefinition",
+ "src": "2092:162:54",
+ "nodes": [
+
+ ],
+ "body": {
+ "id": 40913,
+ "nodeType": "Block",
+ "src": "2151:103:54",
+ "nodes": [
+
+ ],
+ "statements": [
+ {
+ "body": {
+ "id": 40911,
+ "nodeType": "Block",
+ "src": "2202:48:54",
+ "statements": [
+ {
+ "expression": {
+ "arguments": [
+ {
+ "baseExpression": {
+ "id": 40906,
+ "name": "claims_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40887,
+ "src": "2232:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr",
+ "typeString": "struct ClaimRequest memory[] memory"
+ }
+ },
+ "id": 40908,
+ "indexExpression": {
+ "id": 40907,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40891,
+ "src": "2240:1:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2232:10:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_ClaimRequest_$39247_memory_ptr",
+ "typeString": "struct ClaimRequest memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_ClaimRequest_$39247_memory_ptr",
+ "typeString": "struct ClaimRequest memory"
+ }
+ ],
+ "expression": {
+ "expression": {
+ "id": 40901,
+ "name": "_requests",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40713,
+ "src": "2210:9:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Requests_$40708_storage",
+ "typeString": "struct ZKDrop.Requests storage ref"
+ }
+ },
+ "id": 40904,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberLocation": "2220:6:54",
+ "memberName": "claims",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 40707,
+ "src": "2210:16:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage",
+ "typeString": "struct ClaimRequest storage ref[] storage ref"
+ }
+ },
+ "id": 40905,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberLocation": "2227:4:54",
+ "memberName": "push",
+ "nodeType": "MemberAccess",
+ "src": "2210:21:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage_ptr_$_t_struct$_ClaimRequest_$39247_storage_$returns$__$attached_to$_t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage_ptr_$",
+ "typeString": "function (struct ClaimRequest storage ref[] storage pointer,struct ClaimRequest storage ref)"
+ }
+ },
+ "id": 40909,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "2210:33:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 40910,
+ "nodeType": "ExpressionStatement",
+ "src": "2210:33:54"
+ }
+ ]
+ },
+ "condition": {
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 40897,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "id": 40894,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40891,
+ "src": "2177:1:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "expression": {
+ "id": 40895,
+ "name": "claims_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40887,
+ "src": "2181:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr",
+ "typeString": "struct ClaimRequest memory[] memory"
+ }
+ },
+ "id": 40896,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberLocation": "2189:6:54",
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "src": "2181:14:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2177:18:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 40912,
+ "initializationExpression": {
+ "assignments": [
+ 40891
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 40891,
+ "mutability": "mutable",
+ "name": "i",
+ "nameLocation": "2170:1:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40912,
+ "src": "2162:9:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 40890,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2162:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "id": 40893,
+ "initialValue": {
+ "hexValue": "30",
+ "id": 40892,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2174:1:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2162:13:54"
+ },
+ "loopExpression": {
+ "expression": {
+ "id": 40899,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "++",
+ "prefix": false,
+ "src": "2197:3:54",
+ "subExpression": {
+ "id": 40898,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40891,
+ "src": "2197:1:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 40900,
+ "nodeType": "ExpressionStatement",
+ "src": "2197:3:54"
+ },
+ "nodeType": "ForStatement",
+ "src": "2157:93:54"
+ }
+ ]
+ },
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+
+ ],
+ "name": "_setClaims",
+ "nameLocation": "2101:10:54",
+ "parameters": {
+ "id": 40888,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40887,
+ "mutability": "mutable",
+ "name": "claims_",
+ "nameLocation": "2134:7:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40914,
+ "src": "2112:29:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_memory_ptr_$dyn_memory_ptr",
+ "typeString": "struct ClaimRequest[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 40885,
+ "nodeType": "UserDefinedTypeName",
+ "pathNode": {
+ "id": 40884,
+ "name": "ClaimRequest",
+ "nameLocations": [
+ "2112:12:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 39247,
+ "src": "2112:12:54"
+ },
+ "referencedDeclaration": 39247,
+ "src": "2112:12:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_ClaimRequest_$39247_storage_ptr",
+ "typeString": "struct ClaimRequest"
+ }
+ },
+ "id": 40886,
+ "nodeType": "ArrayTypeName",
+ "src": "2112:14:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_ClaimRequest_$39247_storage_$dyn_storage_ptr",
+ "typeString": "struct ClaimRequest[]"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "2111:31:54"
+ },
+ "returnParameters": {
+ "id": 40889,
+ "nodeType": "ParameterList",
+ "parameters": [
+
+ ],
+ "src": "2151:0:54"
+ },
+ "scope": 41014,
+ "stateMutability": "nonpayable",
+ "virtual": false,
+ "visibility": "private"
+ },
+ {
+ "id": 40928,
+ "nodeType": "FunctionDefinition",
+ "src": "2258:126:54",
+ "nodes": [
+
+ ],
+ "body": {
+ "id": 40927,
+ "nodeType": "Block",
+ "src": "2315:69:54",
+ "nodes": [
+
+ ],
+ "statements": [
+ {
+ "expression": {
+ "id": 40921,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "id": 40919,
+ "name": "_baseTokenURI",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40710,
+ "src": "2321:13:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "id": 40920,
+ "name": "baseUri",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40916,
+ "src": "2337:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ "src": "2321:23:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "id": 40922,
+ "nodeType": "ExpressionStatement",
+ "src": "2321:23:54"
+ },
+ {
+ "eventCall": {
+ "arguments": [
+ {
+ "id": 40924,
+ "name": "baseUri",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40916,
+ "src": "2371:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ ],
+ "id": 40923,
+ "name": "BaseTokenURISet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40721,
+ "src": "2355:15:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (string memory)"
+ }
+ },
+ "id": 40925,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "2355:24:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 40926,
+ "nodeType": "EmitStatement",
+ "src": "2350:29:54"
+ }
+ ]
+ },
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+
+ ],
+ "name": "_setBaseTokenUri",
+ "nameLocation": "2267:16:54",
+ "parameters": {
+ "id": 40917,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40916,
+ "mutability": "mutable",
+ "name": "baseUri",
+ "nameLocation": "2298:7:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40928,
+ "src": "2284:21:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 40915,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2284:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "2283:23:54"
+ },
+ "returnParameters": {
+ "id": 40918,
+ "nodeType": "ParameterList",
+ "parameters": [
+
+ ],
+ "src": "2315:0:54"
+ },
+ "scope": 41014,
+ "stateMutability": "nonpayable",
+ "virtual": false,
+ "visibility": "private"
+ },
+ {
+ "id": 40937,
+ "nodeType": "FunctionDefinition",
+ "src": "2388:98:54",
+ "nodes": [
+
+ ],
+ "body": {
+ "id": 40936,
+ "nodeType": "Block",
+ "src": "2455:31:54",
+ "nodes": [
+
+ ],
+ "statements": [
+ {
+ "expression": {
+ "id": 40934,
+ "name": "_baseTokenURI",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40710,
+ "src": "2468:13:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "functionReturnParameters": 40933,
+ "id": 40935,
+ "nodeType": "Return",
+ "src": "2461:20:54"
+ }
+ ]
+ },
+ "baseFunctions": [
+ 30450
+ ],
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+
+ ],
+ "name": "_baseURI",
+ "nameLocation": "2397:8:54",
+ "overrides": {
+ "id": 40930,
+ "nodeType": "OverrideSpecifier",
+ "overrides": [
+
+ ],
+ "src": "2422:8:54"
+ },
+ "parameters": {
+ "id": 40929,
+ "nodeType": "ParameterList",
+ "parameters": [
+
+ ],
+ "src": "2405:2:54"
+ },
+ "returnParameters": {
+ "id": 40933,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40932,
+ "mutability": "mutable",
+ "name": "",
+ "nameLocation": "-1:-1:-1",
+ "nodeType": "VariableDeclaration",
+ "scope": 40937,
+ "src": "2440:13:54",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 40931,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2440:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "2439:15:54"
+ },
+ "scope": 41014,
+ "stateMutability": "view",
+ "virtual": false,
+ "visibility": "internal"
+ },
+ {
+ "id": 40960,
+ "nodeType": "FunctionDefinition",
+ "src": "2569:214:54",
+ "nodes": [
+
+ ],
+ "body": {
+ "id": 40959,
+ "nodeType": "Block",
+ "src": "2653:130:54",
+ "nodes": [
+
+ ],
+ "statements": [
+ {
+ "condition": {
+ "id": 40946,
+ "name": "IS_NON_TRANSFERABLE",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40715,
+ "src": "2663:19:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 40951,
+ "nodeType": "IfStatement",
+ "src": "2659:70:54",
+ "trueBody": {
+ "id": 40950,
+ "nodeType": "Block",
+ "src": "2684:45:54",
+ "statements": [
+ {
+ "errorCall": {
+ "arguments": [
+
+ ],
+ "expression": {
+ "argumentTypes": [
+
+ ],
+ "id": 40947,
+ "name": "ERC721NonTransferable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40717,
+ "src": "2699:21:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_error_pure$__$returns$__$",
+ "typeString": "function () pure"
+ }
+ },
+ "id": 40948,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "2699:23:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 40949,
+ "nodeType": "RevertStatement",
+ "src": "2692:30:54"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "arguments": [
+ {
+ "id": 40955,
+ "name": "operator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40940,
+ "src": "2759:8:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "id": 40956,
+ "name": "approved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40942,
+ "src": "2769:8:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "expression": {
+ "id": 40952,
+ "name": "ERC721",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 31163,
+ "src": "2734:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_ERC721_$31163_$",
+ "typeString": "type(contract ERC721)"
+ }
+ },
+ "id": 40954,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberLocation": "2741:17:54",
+ "memberName": "setApprovalForAll",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 30528,
+ "src": "2734:24:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$",
+ "typeString": "function (address,bool)"
+ }
+ },
+ "id": 40957,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "2734:44:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 40958,
+ "nodeType": "ExpressionStatement",
+ "src": "2734:44:54"
+ }
+ ]
+ },
+ "baseFunctions": [
+ 30528
+ ],
+ "documentation": {
+ "id": 40938,
+ "nodeType": "StructuredDocumentation",
+ "src": "2490:76:54",
+ "text": " @dev ERC721 can be set to non transferable in the constructor"
+ },
+ "functionSelector": "a22cb465",
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+
+ ],
+ "name": "setApprovalForAll",
+ "nameLocation": "2578:17:54",
+ "overrides": {
+ "id": 40944,
+ "nodeType": "OverrideSpecifier",
+ "overrides": [
+
+ ],
+ "src": "2644:8:54"
+ },
+ "parameters": {
+ "id": 40943,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40940,
+ "mutability": "mutable",
+ "name": "operator",
+ "nameLocation": "2604:8:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40960,
+ "src": "2596:16:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 40939,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2596:7:54",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40942,
+ "mutability": "mutable",
+ "name": "approved",
+ "nameLocation": "2619:8:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40960,
+ "src": "2614:13:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 40941,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "2614:4:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "2595:33:54"
+ },
+ "returnParameters": {
+ "id": 40945,
+ "nodeType": "ParameterList",
+ "parameters": [
+
+ ],
+ "src": "2653:0:54"
+ },
+ "scope": 41014,
+ "stateMutability": "nonpayable",
+ "virtual": true,
+ "visibility": "public"
+ },
+ {
+ "id": 40984,
+ "nodeType": "FunctionDefinition",
+ "src": "2861:248:54",
+ "nodes": [
+
+ ],
+ "body": {
+ "id": 40983,
+ "nodeType": "Block",
+ "src": "2976:133:54",
+ "nodes": [
+
+ ],
+ "statements": [
+ {
+ "condition": {
+ "id": 40971,
+ "name": "IS_NON_TRANSFERABLE",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40715,
+ "src": "2986:19:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 40976,
+ "nodeType": "IfStatement",
+ "src": "2982:70:54",
+ "trueBody": {
+ "id": 40975,
+ "nodeType": "Block",
+ "src": "3007:45:54",
+ "statements": [
+ {
+ "errorCall": {
+ "arguments": [
+
+ ],
+ "expression": {
+ "argumentTypes": [
+
+ ],
+ "id": 40972,
+ "name": "ERC721NonTransferable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40717,
+ "src": "3022:21:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_error_pure$__$returns$__$",
+ "typeString": "function () pure"
+ }
+ },
+ "id": 40973,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "3022:23:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 40974,
+ "nodeType": "RevertStatement",
+ "src": "3015:30:54"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "arguments": [
+ {
+ "id": 40979,
+ "name": "owner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40963,
+ "src": "3088:5:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "id": 40980,
+ "name": "operator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40965,
+ "src": "3095:8:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "expression": {
+ "id": 40977,
+ "name": "ERC721",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 31163,
+ "src": "3064:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_ERC721_$31163_$",
+ "typeString": "type(contract ERC721)"
+ }
+ },
+ "id": 40978,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberLocation": "3071:16:54",
+ "memberName": "isApprovedForAll",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 30546,
+ "src": "3064:23:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address,address) view returns (bool)"
+ }
+ },
+ "id": 40981,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "3064:40:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 40970,
+ "id": 40982,
+ "nodeType": "Return",
+ "src": "3057:47:54"
+ }
+ ]
+ },
+ "baseFunctions": [
+ 30546
+ ],
+ "documentation": {
+ "id": 40961,
+ "nodeType": "StructuredDocumentation",
+ "src": "2787:71:54",
+ "text": " @dev Reverts, this is a non transferable ERC115 contract"
+ },
+ "functionSelector": "e985e9c5",
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+
+ ],
+ "name": "isApprovedForAll",
+ "nameLocation": "2870:16:54",
+ "overrides": {
+ "id": 40967,
+ "nodeType": "OverrideSpecifier",
+ "overrides": [
+
+ ],
+ "src": "2952:8:54"
+ },
+ "parameters": {
+ "id": 40966,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40963,
+ "mutability": "mutable",
+ "name": "owner",
+ "nameLocation": "2900:5:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40984,
+ "src": "2892:13:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 40962,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2892:7:54",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40965,
+ "mutability": "mutable",
+ "name": "operator",
+ "nameLocation": "2919:8:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 40984,
+ "src": "2911:16:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 40964,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2911:7:54",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "2886:45:54"
+ },
+ "returnParameters": {
+ "id": 40970,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40969,
+ "mutability": "mutable",
+ "name": "",
+ "nameLocation": "-1:-1:-1",
+ "nodeType": "VariableDeclaration",
+ "scope": 40984,
+ "src": "2970:4:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 40968,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "2970:4:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "2969:6:54"
+ },
+ "scope": 41014,
+ "stateMutability": "view",
+ "virtual": true,
+ "visibility": "public"
+ },
+ {
+ "id": 41013,
+ "nodeType": "FunctionDefinition",
+ "src": "3192:291:54",
+ "nodes": [
+
+ ],
+ "body": {
+ "id": 41012,
+ "nodeType": "Block",
+ "src": "3335:148:54",
+ "nodes": [
+
+ ],
+ "statements": [
+ {
+ "condition": {
+ "id": 40997,
+ "name": "IS_NON_TRANSFERABLE",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40715,
+ "src": "3345:19:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 41002,
+ "nodeType": "IfStatement",
+ "src": "3341:70:54",
+ "trueBody": {
+ "id": 41001,
+ "nodeType": "Block",
+ "src": "3366:45:54",
+ "statements": [
+ {
+ "errorCall": {
+ "arguments": [
+
+ ],
+ "expression": {
+ "argumentTypes": [
+
+ ],
+ "id": 40998,
+ "name": "ERC721NonTransferable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40717,
+ "src": "3381:21:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_error_pure$__$returns$__$",
+ "typeString": "function () pure"
+ }
+ },
+ "id": 40999,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "3381:23:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 41000,
+ "nodeType": "RevertStatement",
+ "src": "3374:30:54"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "arguments": [
+ {
+ "id": 41006,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40987,
+ "src": "3444:4:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "id": 41007,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40989,
+ "src": "3450:2:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "id": 41008,
+ "name": "firstTokenId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40991,
+ "src": "3454:12:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "id": 41009,
+ "name": "batchSize",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 40993,
+ "src": "3468:9:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "id": 41003,
+ "name": "ERC721",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+
+ ],
+ "referencedDeclaration": 31163,
+ "src": "3416:6:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_ERC721_$31163_$",
+ "typeString": "type(contract ERC721)"
+ }
+ },
+ "id": 41005,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberLocation": "3423:20:54",
+ "memberName": "_beforeTokenTransfer",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 31134,
+ "src": "3416:27:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256,uint256)"
+ }
+ },
+ "id": 41010,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "nameLocations": [
+
+ ],
+ "names": [
+
+ ],
+ "nodeType": "FunctionCall",
+ "src": "3416:62:54",
+ "tryCall": false,
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 41011,
+ "nodeType": "ExpressionStatement",
+ "src": "3416:62:54"
+ }
+ ]
+ },
+ "baseFunctions": [
+ 31134
+ ],
+ "documentation": {
+ "id": 40985,
+ "nodeType": "StructuredDocumentation",
+ "src": "3113:76:54",
+ "text": " @dev ERC721 can be set to non transferable in the constructor"
+ },
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+
+ ],
+ "name": "_beforeTokenTransfer",
+ "nameLocation": "3201:20:54",
+ "overrides": {
+ "id": 40995,
+ "nodeType": "OverrideSpecifier",
+ "overrides": [
+
+ ],
+ "src": "3326:8:54"
+ },
+ "parameters": {
+ "id": 40994,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 40987,
+ "mutability": "mutable",
+ "name": "from",
+ "nameLocation": "3235:4:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 41013,
+ "src": "3227:12:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 40986,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3227:7:54",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40989,
+ "mutability": "mutable",
+ "name": "to",
+ "nameLocation": "3253:2:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 41013,
+ "src": "3245:10:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 40988,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3245:7:54",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40991,
+ "mutability": "mutable",
+ "name": "firstTokenId",
+ "nameLocation": "3269:12:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 41013,
+ "src": "3261:20:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 40990,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3261:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 40993,
+ "mutability": "mutable",
+ "name": "batchSize",
+ "nameLocation": "3295:9:54",
+ "nodeType": "VariableDeclaration",
+ "scope": 41013,
+ "src": "3287:17:54",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 40992,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3287:7:54",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "visibility": "internal"
+ }
+ ],
+ "src": "3221:87:54"
+ },
+ "returnParameters": {
+ "id": 40996,
+ "nodeType": "ParameterList",
+ "parameters": [
+
+ ],
+ "src": "3335:0:54"
+ },
+ "scope": 41014,
+ "stateMutability": "nonpayable",
+ "virtual": true,
+ "visibility": "internal"
+ }
+ ],
+ "abstract": false,
+ "baseContracts": [
+ {
+ "baseName": {
+ "id": 40687,
+ "name": "ERC721",
+ "nameLocations": [
+ "242:6:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 31163,
+ "src": "242:6:54"
+ },
+ "id": 40688,
+ "nodeType": "InheritanceSpecifier",
+ "src": "242:6:54"
+ },
+ {
+ "baseName": {
+ "id": 40689,
+ "name": "SismoConnect",
+ "nameLocations": [
+ "250:12:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 36800,
+ "src": "250:12:54"
+ },
+ "id": 40690,
+ "nodeType": "InheritanceSpecifier",
+ "src": "250:12:54"
+ },
+ {
+ "baseName": {
+ "id": 40691,
+ "name": "Ownable",
+ "nameLocations": [
+ "264:7:54"
+ ],
+ "nodeType": "IdentifierPath",
+ "referencedDeclaration": 29479,
+ "src": "264:7:54"
+ },
+ "id": 40692,
+ "nodeType": "InheritanceSpecifier",
+ "src": "264:7:54"
+ }
+ ],
+ "canonicalName": "ZKDrop",
+ "contractDependencies": [
+
+ ],
+ "contractKind": "contract",
+ "fullyImplemented": true,
+ "linearizedBaseContracts": [
+ 41014,
+ 29479,
+ 36800,
+ 31163,
+ 31324,
+ 31279,
+ 32039,
+ 32051,
+ 31676
+ ],
+ "name": "ZKDrop",
+ "nameLocation": "232:6:54",
+ "scope": 41015,
+ "usedErrors": [
+ 39073,
+ 40717
+ ],
+ "usedEvents": [
+ 29380,
+ 31178,
+ 31187,
+ 31196,
+ 40721
+ ]
+ }
+ ],
+ "license": "MIT"
+ },
+ "id": 54
+ }
\ No newline at end of file
diff --git a/src/libs/contracts/zk-drop/constants.ts b/src/libs/contracts/zk-drop/constants.ts
new file mode 100644
index 00000000..0f37c318
--- /dev/null
+++ b/src/libs/contracts/zk-drop/constants.ts
@@ -0,0 +1,7 @@
+import env from "@/src/environments";
+import { Network } from "../networks";
+import zkBadge from "./abi.json";
+
+export const ZK_DROP_ADDRESSES: { [network in Network]?: `0x${string}` } = env.zkBadgeAddresses;
+
+export const ZK_DROP_ABI = zkBadge.abi;
\ No newline at end of file
diff --git a/src/libs/contracts/zk-drop/index.ts b/src/libs/contracts/zk-drop/index.ts
new file mode 100644
index 00000000..cbcaf46a
--- /dev/null
+++ b/src/libs/contracts/zk-drop/index.ts
@@ -0,0 +1,2 @@
+export * from "./zk-drop";
+export * from "./constants";
\ No newline at end of file
diff --git a/src/libs/contracts/zk-drop/zk-drop.ts b/src/libs/contracts/zk-drop/zk-drop.ts
new file mode 100644
index 00000000..e6082e06
--- /dev/null
+++ b/src/libs/contracts/zk-drop/zk-drop.ts
@@ -0,0 +1,30 @@
+import { Contract, ethers, Signer, Transaction } from 'ethers';
+import { ZK_DROP_ABI } from "./constants";
+
+export class ZkDropContract {
+ private _address: `0x${string}`;
+ private _contractInstance;
+ private _signer: Signer;
+
+ constructor({ contractAddress, signer }: { signer: Signer, contractAddress: `0x${string}` }) {
+ this._signer = signer;
+ this._address = contractAddress;
+ }
+
+ private _getContractInstance(): Contract {
+ if (!this._contractInstance) {
+ const zkDropInstance = new ethers.Contract(
+ this._address,
+ ZK_DROP_ABI,
+ this._signer
+ );
+ this._contractInstance = zkDropInstance;
+ }
+ return this._contractInstance;
+ }
+
+ public async mint({ responseBytes, address }: { responseBytes: string, address: string }): Promise {
+ const instance = this._getContractInstance();
+ return await instance.claimWithSismoConnect(responseBytes, address)
+ }
+}
\ No newline at end of file
diff --git a/src/scripts/upload-metadata/index.ts b/src/scripts/upload-metadata/index.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/src/scripts/upload-metadata/upload-metadata.script.ts b/src/scripts/upload-metadata/upload-metadata.script.ts
new file mode 100644
index 00000000..d661e799
--- /dev/null
+++ b/src/scripts/upload-metadata/upload-metadata.script.ts
@@ -0,0 +1,18 @@
+import { Command } from "commander";
+import { uploadMetadata } from "./upload-metadata";
+
+const program = new Command();
+
+program
+ .description("Upload zk drop template metadata to ipfs")
+ .argument("", "string to split")
+ .action(async (spaces) => {
+ let formattedSpaces = [];
+ for (const space of spaces) {
+ formattedSpaces.push(...space.split(" "));
+ }
+ const res = await uploadMetadata(formattedSpaces);
+ console.log(res);
+ });
+
+program.parse();
diff --git a/src/scripts/upload-metadata/upload-metadata.test.ts b/src/scripts/upload-metadata/upload-metadata.test.ts
new file mode 100644
index 00000000..a394486c
--- /dev/null
+++ b/src/scripts/upload-metadata/upload-metadata.test.ts
@@ -0,0 +1,23 @@
+/**
+ * @jest-environment node
+ */
+
+import ServiceFactory from "@/src/services/service-factory/service-factory";
+import { SpacesService } from "@/src/services/spaces-service";
+import { spaceMock1 } from "@/src/services/spaces-service/tests/spaces-mock";
+import { uploadMetadata } from "./upload-metadata";
+
+describe("SCRIPT upload-metadata", () => {
+ let spaceService: SpacesService;
+
+ beforeEach(async () => {
+ spaceService = await ServiceFactory.getSpacesService();
+ spaceService.updateConfigs([spaceMock1])
+ });
+
+ it("should upload ", async () => {
+ const spaces = ["space"];
+ // const res = await uploadMetadata(spaces, "main");
+ // console.log("res", res);
+ });
+});
diff --git a/src/scripts/upload-metadata/upload-metadata.ts b/src/scripts/upload-metadata/upload-metadata.ts
new file mode 100644
index 00000000..fa3741d1
--- /dev/null
+++ b/src/scripts/upload-metadata/upload-metadata.ts
@@ -0,0 +1,40 @@
+import { ZkAppType } from "@/src/services/spaces-service";
+import ServiceFactory from "@/src/services/service-factory/service-factory";
+import { pinFileToIPFS, pinJSONToIPFS } from "./utils/pin-ipfs";
+import { StdoutLogger } from "@/src/services/logger-service/stdout-logger-service";
+
+export const uploadMetadata = async (spacesSlugs: string[]) => {
+ const loggerService = new StdoutLogger();
+ const spacesService = ServiceFactory.getSpacesService();
+
+ let uploadedHash: {
+ [spaceSlug: string]: {
+ [appSlug: string]: string;
+ };
+ } = {};
+
+ for (const space of await spacesService.getSpaces()) {
+ if (!spacesSlugs.includes(space.slug)) continue;
+ const apps: ZkAppType[] = space.apps;
+ for (const app of apps) {
+ if (app.type !== "zkDrop") continue;
+ // Upload image on IPFS
+ const imagePath = `${__dirname}/../../../space-configs/images/${app.nftMetadata.image}`;
+ loggerService.info(`Pinning ${imagePath}...`);
+ const { ipfsHash: imageIpfsHash } = await pinFileToIPFS(imagePath);
+
+ // Upload Metadata on IPFS
+ const metadata = {
+ name: app.nftMetadata.name,
+ description: app.nftMetadata.description,
+ image: `ipfs://${imageIpfsHash}`,
+ };
+ loggerService.info(`Pinning ${JSON.stringify(metadata, null, 2)}...`);
+ const { ipfsHash: metadataIpfsHash } = await pinJSONToIPFS(metadata);
+ uploadedHash[space.slug] = uploadedHash[space.slug] || {};
+ uploadedHash[space.slug][app.slug] = metadataIpfsHash;
+ }
+ }
+
+ return uploadedHash;
+};
diff --git a/src/scripts/upload-metadata/utils/pin-ipfs.ts b/src/scripts/upload-metadata/utils/pin-ipfs.ts
new file mode 100644
index 00000000..e2c4d870
--- /dev/null
+++ b/src/scripts/upload-metadata/utils/pin-ipfs.ts
@@ -0,0 +1,61 @@
+import env from "@/src/environments";
+
+const FormDataTS = require("form-data");
+const fs = require("fs");
+const path = require("path");
+const axios = require("axios");
+
+export const pinFileToIPFS = async (filePath: string): Promise<{ ipfsHash: string }> => {
+ if (!fs.existsSync(path.resolve(__dirname, filePath))) {
+ throw new Error(`No file found in the specified folder: "${filePath}`);
+ }
+ const formData = new FormDataTS();
+ const src = path.resolve(__dirname, filePath);
+
+ const file = fs.createReadStream(src);
+ formData.append("file", file);
+
+ const metadata = JSON.stringify({
+ name: "Test",
+ });
+ formData.append("pinataMetadata", metadata);
+
+ const options = JSON.stringify({
+ cidVersion: 1,
+ });
+ formData.append("pinataOptions", options);
+
+ try {
+ const res = await axios.post("https://api.pinata.cloud/pinning/pinFileToIPFS", formData, {
+ maxBodyLength: "Infinity",
+ headers: {
+ "Content-Type": `multipart/form-data; boundary=${formData._boundary}`,
+ Authorization: `Bearer ${env.pinata.jwtToken}`,
+ },
+ });
+ return { ipfsHash: res.data.IpfsHash };
+ } catch (error: any) {
+ throw new Error("Error pinning file to IPFS");
+ }
+};
+
+export const pinJSONToIPFS = async (json: any): Promise<{ ipfsHash: string }> => {
+ let data;
+ if (typeof json === "string") {
+ data = json;
+ } else {
+ data = JSON.stringify(json);
+ }
+
+ try {
+ const res = await axios.post("https://api.pinata.cloud/pinning/pinJSONToIPFS", data, {
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${env.pinata.jwtToken}`,
+ },
+ });
+ return { ipfsHash: res.data.IpfsHash };
+ } catch (error: any) {
+ throw new Error("Error pinning file to IPFS");
+ }
+};
diff --git a/src/services/spaces-service/spaces-service.test.ts b/src/services/spaces-service/spaces-service.test.ts
index 37e73a5e..cc7d7298 100644
--- a/src/services/spaces-service/spaces-service.test.ts
+++ b/src/services/spaces-service/spaces-service.test.ts
@@ -41,7 +41,7 @@ describe('SpacesService', () => {
describe('getApps', () => {
it('should return all apps when no options provided', async () => {
const result = await service.getApps();
- expect(result.length).toBe(8);
+ expect(result.length).toBe(9);
});
it('should return filtered apps when spaceSlug is provide', async () => {
@@ -51,7 +51,7 @@ describe('SpacesService', () => {
}
};
const result = await service.getApps(options);
- expect(result.length).toBe(4);
+ expect(result.length).toBe(5);
});
it('should return apps sorted by createdAt when sortedBy option is provided', async () => {
diff --git a/src/services/spaces-service/spaces-service.ts b/src/services/spaces-service/spaces-service.ts
index a775a001..5dc51ba8 100644
--- a/src/services/spaces-service/spaces-service.ts
+++ b/src/services/spaces-service/spaces-service.ts
@@ -6,6 +6,7 @@ import {
ZkFormAppType,
ZkTelegramBotAppType,
ZkBadgeAppType,
+ ZkDropAppType,
} from "./types";
import { AuthType } from "@sismo-core/sismo-connect-server";
import getImgSrcFromConfig from "@/src/utils/getImgSrcFromConfig";
@@ -165,6 +166,17 @@ export class SpacesService {
chains,
} as ZkBadgeAppType);
break;
+ case "zkDrop":
+ apps.push({
+ type: appConfig.type,
+ ...appCommon,
+ nftMetadata: appConfig.templateConfig.nftMetadata,
+ chains: appConfig.templateConfig.chains,
+ step1CtaText: appConfig.templateConfig.step1CtaText ?? "Sign in with Sismo",
+ step2CtaText: appConfig.templateConfig.step2CtaText,
+ appDescription: appConfig.templateConfig.appDescription,
+ } as ZkDropAppType);
+ break;
}
}
const space: SpaceType = {
diff --git a/src/services/spaces-service/tests/spaces-mock.ts b/src/services/spaces-service/tests/spaces-mock.ts
index 324017d1..9e8783f4 100644
--- a/src/services/spaces-service/tests/spaces-mock.ts
+++ b/src/services/spaces-service/tests/spaces-mock.ts
@@ -146,6 +146,38 @@ export const spaceMock1: SpaceConfig = {
name: Network.Gnosis
}]
}
+ },
+ {
+ type: "zkDrop",
+ metadata: {
+ name: "ZK Drop name",
+ slug: "zk-drop-slug",
+ description: "Zk drop test description",
+ tags: ["Drop"],
+ image: "image.png",
+ createdAt: new Date("2023-07-03T18:00"),
+ },
+ sismoConnectRequest: {
+ appId: "0x4",
+ authRequests: [{ authType: AuthType.VAULT }],
+ claimRequests: [{ groupId: "0x04" }],
+ },
+ templateConfig: {
+ nftMetadata: {
+ name: "NFT Test",
+ description: "This is a test description",
+ image: "sismo-zkdrop.png"
+ },
+ chains: [{
+ contractAddress: "{{ auto-fill }}",
+ name: Network.Sepolia,
+ relayerEnabled: true,
+ isTransferable: true
+ }],
+ step1CtaText: "step 1",
+ step2CtaText: "step 2",
+ appDescription: "App description"
+ }
}
],
};
diff --git a/src/services/spaces-service/types.ts b/src/services/spaces-service/types.ts
index 568f1590..7f42f8f3 100644
--- a/src/services/spaces-service/types.ts
+++ b/src/services/spaces-service/types.ts
@@ -1,4 +1,4 @@
-import { ZkBadgeChainName } from "@/space-configs/types";
+import { ZkBadgeChainName, ZkDropChainName } from "@/space-configs/types";
import { ImportedNextImage } from "@/src/utils/getImgSrcFromConfig";
import { AuthRequest, ClaimRequest } from "@sismo-core/sismo-connect-react";
@@ -80,16 +80,25 @@ export type ExternalAppType = AppCommonType & {
link: string;
};
+
export type ZkDropAppType = AppCommonType & {
- type: "zkdrop";
- chainId: number;
- userSelection?: UserSelection; // default none
- contractAddress: string;
- step1CtaText: string;
+ type: "zkDrop";
+ nftMetadata: {
+ name: string;
+ description: string;
+ image: string;
+ };
+ chains: {
+ contractAddress: `0x${string}`;
+ name: ZkDropChainName;
+ relayerEnabled?: boolean;
+ }[];
+ step1CtaText?: string;
step2CtaText: string;
appDescription?: string;
};
+
export type ZkBadgeAppType = AppCommonType & {
type: "zkBadge";
step1CtaText?: string;
diff --git a/yarn.lock b/yarn.lock
index 2df27093..20f7c3e1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4511,6 +4511,11 @@ combined-stream@^1.0.8:
dependencies:
delayed-stream "~1.0.0"
+commander@^11.0.0:
+ version "11.0.0"
+ resolved "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz#43e19c25dbedc8256203538e8d7e9346877a6f67"
+ integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==
+
commander@^2.20.3:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"