From 6735e9bf6b4e91b8cbb7d3a0ca1396ba1c1bf389 Mon Sep 17 00:00:00 2001 From: Corantin Date: Tue, 16 Jul 2024 17:02:12 -0400 Subject: [PATCH 01/23] notification like figma --- apps/web/assets/TxError.svg | 4 + apps/web/assets/TxSuccess.svg | 4 + apps/web/assets/WaitingForSig.svg | 4 + apps/web/assets/index.ts | 3 + apps/web/components/ActivatePoints.tsx | 23 +---- apps/web/components/Forms/CommunityForm.tsx | 13 ++- apps/web/components/Forms/PoolForm.tsx | 1 + apps/web/components/Forms/ProposalForm.tsx | 1 + apps/web/components/IncreasePower.tsx | 42 ++------ apps/web/components/PoolMetrics.tsx | 2 + apps/web/components/ProposalCard.tsx | 18 +--- apps/web/components/Proposals.tsx | 9 +- apps/web/components/RegisterMember.tsx | 27 ++---- apps/web/configs/chainServer.tsx | 2 +- .../useContractWriteWithConfirmations.ts | 19 +++- apps/web/hooks/useTransactionNotification.ts | 85 ---------------- apps/web/hooks/useTransactionNotification.tsx | 96 +++++++++++++++++++ apps/web/styles/globals.css | 4 + gardens-v2.code-workspace | 6 ++ 19 files changed, 172 insertions(+), 191 deletions(-) create mode 100644 apps/web/assets/TxError.svg create mode 100644 apps/web/assets/TxSuccess.svg create mode 100644 apps/web/assets/WaitingForSig.svg delete mode 100644 apps/web/hooks/useTransactionNotification.ts create mode 100644 apps/web/hooks/useTransactionNotification.tsx diff --git a/apps/web/assets/TxError.svg b/apps/web/assets/TxError.svg new file mode 100644 index 000000000..b2e2f5272 --- /dev/null +++ b/apps/web/assets/TxError.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/web/assets/TxSuccess.svg b/apps/web/assets/TxSuccess.svg new file mode 100644 index 000000000..886f54bbb --- /dev/null +++ b/apps/web/assets/TxSuccess.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/web/assets/WaitingForSig.svg b/apps/web/assets/WaitingForSig.svg new file mode 100644 index 000000000..ea7ffd9df --- /dev/null +++ b/apps/web/assets/WaitingForSig.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/web/assets/index.ts b/apps/web/assets/index.ts index 15f9065ec..5271889bc 100644 --- a/apps/web/assets/index.ts +++ b/apps/web/assets/index.ts @@ -20,3 +20,6 @@ export { default as tree2 } from "./TreeTwo.svg"; export { default as walletIcon } from "./WalletIcon.svg"; export { default as flowers } from "./yellow-blue-flowers.svg"; export { default as GardensLogo } from "./GardensLogo"; +export { default as WaitingForSig } from "./WaitingForSig.svg"; +export { default as TxSuccess } from "./TxSuccess.svg"; +export { default as TxError } from "./TxError.svg"; diff --git a/apps/web/components/ActivatePoints.tsx b/apps/web/components/ActivatePoints.tsx index 136d5540b..db85feb93 100644 --- a/apps/web/components/ActivatePoints.tsx +++ b/apps/web/components/ActivatePoints.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useEffect } from "react"; +import React from "react"; import { useConnectModal } from "@rainbow-me/rainbowkit"; import { Address, useAccount } from "wagmi"; import { Button } from "./Button"; @@ -8,7 +8,6 @@ import { usePubSubContext } from "@/contexts/pubsub.context"; import { useChainIdFromPath } from "@/hooks/useChainIdFromPath"; import { useContractWriteWithConfirmations } from "@/hooks/useContractWriteWithConfirmations"; import { ConditionObject, useDisableButtons } from "@/hooks/useDisableButtons"; -import { useTransactionNotification } from "@/hooks/useTransactionNotification"; import { cvStrategyABI } from "@/src/generated"; import { abiWithErrors } from "@/utils/abiWithErrors"; import { useErrorDetails } from "@/utils/getErrorName"; @@ -32,13 +31,12 @@ export function ActivatePoints({ const { publish } = usePubSubContext(); const { - transactionData: activatePointsTxData, write: writeActivatePoints, error: errorActivatePoints, - status: activatePointsStatus, } = useContractWriteWithConfirmations({ chainId, address: strategyAddress, + contractName: "CVStrategy", abi: abiWithErrors(cvStrategyABI), functionName: "activatePoints", onConfirmations: () => { @@ -54,13 +52,12 @@ export function ActivatePoints({ }); const { - transactionData: deactivatePointsTxData, write: writeDeactivatePoints, error: errorDeactivatePoints, - status: deactivatePointsStatus, } = useContractWriteWithConfirmations({ address: strategyAddress, abi: abiWithErrors(cvStrategyABI), + contractName: "CVStrategy", functionName: "deactivatePoints", onConfirmations: () => { publish({ @@ -89,20 +86,6 @@ export function ActivatePoints({ } } - const { updateTransactionStatus: updateActivePointsStatus } = - useTransactionNotification(activatePointsTxData); - - const { updateTransactionStatus: updateDeactivePointsStatus } = - useTransactionNotification(deactivatePointsTxData); - - useEffect(() => { - updateActivePointsStatus(activatePointsStatus); - }, [activatePointsStatus]); - - useEffect(() => { - updateDeactivePointsStatus(deactivatePointsStatus); - }, [deactivatePointsStatus]); - // Activate Disable Button condition => message mapping const disableActiveBtnCondition: ConditionObject[] = [ { diff --git a/apps/web/components/Forms/CommunityForm.tsx b/apps/web/components/Forms/CommunityForm.tsx index 1977ffb0c..c1558d7f9 100644 --- a/apps/web/components/Forms/CommunityForm.tsx +++ b/apps/web/components/Forms/CommunityForm.tsx @@ -4,7 +4,13 @@ import React, { useState } from "react"; import { usePathname, useRouter } from "next/navigation"; import { useForm } from "react-hook-form"; import { toast } from "react-toastify"; -import { Address, Chain, createPublicClient, http, parseUnits } from "viem"; +import { + Address, + Chain, + createPublicClient, + http, + parseUnits, +} from "viem"; import { TokenGarden } from "#/subgraph/.graphclient"; import { FormCheckBox } from "./FormCheckBox"; import { FormInput } from "./FormInput"; @@ -155,6 +161,7 @@ export const CommunityForm = ({ address: registryFactoryAddr, abi: abiWithErrors(registryFactoryABI), functionName: "createRegistry", + contractName: "RegistryFactory", onConfirmations: async (receipt) => { const newCommunityAddr = receipt.logs[0].address; if (pathname) { @@ -174,8 +181,8 @@ export const CommunityForm = ({ }); }, onError: (err) => { - console.warn(err); - toast.error("Something went wrong creating Community"); + console.error(err); + toast.error("Error creating Community"); }, onSettled: () => setLoading(false), }); diff --git a/apps/web/components/Forms/PoolForm.tsx b/apps/web/components/Forms/PoolForm.tsx index 5b1a8a600..bf59fa0e1 100644 --- a/apps/web/components/Forms/PoolForm.tsx +++ b/apps/web/components/Forms/PoolForm.tsx @@ -251,6 +251,7 @@ export function PoolForm({ token, communityAddr, chainId }: Props) { const { write } = useContractWriteWithConfirmations({ address: communityAddr, abi: abiWithErrors(registryCommunityABI), + contractName: "RegistryCommunity", functionName: "createPool", onConfirmations: () => { publish({ diff --git a/apps/web/components/Forms/ProposalForm.tsx b/apps/web/components/Forms/ProposalForm.tsx index 42e6f636b..f990cf0f4 100644 --- a/apps/web/components/Forms/ProposalForm.tsx +++ b/apps/web/components/Forms/ProposalForm.tsx @@ -156,6 +156,7 @@ export const ProposalForm = ({ const { write } = useContractWriteWithConfirmations({ address: alloInfo.id as Address, abi: abiWithErrors(alloABI), + contractName: "Allo", functionName: "registerRecipient", onConfirmations: () => { publish({ diff --git a/apps/web/components/IncreasePower.tsx b/apps/web/components/IncreasePower.tsx index 702c8ba56..d829507a9 100644 --- a/apps/web/components/IncreasePower.tsx +++ b/apps/web/components/IncreasePower.tsx @@ -13,7 +13,6 @@ import { usePubSubContext } from "@/contexts/pubsub.context"; import { useChainIdFromPath } from "@/hooks/useChainIdFromPath"; import { useContractWriteWithConfirmations } from "@/hooks/useContractWriteWithConfirmations"; import { ConditionObject, useDisableButtons } from "@/hooks/useDisableButtons"; -import { useTransactionNotification } from "@/hooks/useTransactionNotification"; import { useUrqlClient } from "@/hooks/useUqrlClient"; import { queryByChain } from "@/providers/urql"; import { erc20ABI, registryCommunityABI } from "@/src/generated"; @@ -68,11 +67,6 @@ export const IncreasePower = ({ const { address: connectedAccount } = useAccount(); //handeling states - type States = "idle" | "loading" | "success" | "error"; - const [allowanceTransactionStatus, setAllowanceTransactionStatus] = - useState("idle"); - const [resetTransactionStatus, setResetTransactionStatus] = - useState("idle"); const { address: accountAddress } = useAccount(); const [memberStakedTokens, setMemberStakedTokens] = useState(0n); @@ -121,6 +115,7 @@ export const IncreasePower = ({ const registryContractCallConfig = { address: communityAddress, abi: abiWithErrors2(registryCommunityABI), + contractName: "RegistryCommunity", }; const { data: isMember } = useContractRead({ @@ -131,15 +126,15 @@ export const IncreasePower = ({ }); const { - transactionData: allowTokenTxData, isSuccess: isWaitSuccess, write: writeAllowToken, - status: allowTokenStatus, + status: allowanceTokenStatus, } = useContractWriteWithConfirmations({ address: registerToken, abi: abiWithErrors(erc20ABI), args: [communityAddress, requestedAmount], // [allowed spender address, amount ] functionName: "approve", + contractName: "ERC20", }); const { write: writeResetAllowance, status: resetAllowanceStatus } = @@ -148,6 +143,7 @@ export const IncreasePower = ({ abi: abiWithErrors(erc20ABI), args: [communityAddress, 0n], // [allowed spender address, amount ] functionName: "approve", + contractName: "ERC20", }); const { data: allowance } = useContractRead({ @@ -159,7 +155,6 @@ export const IncreasePower = ({ }); const { - transactionData: increasePowerTxData, write: writeIncreasePower, status: increaseStakeStatus, } = useContractWriteWithConfirmations({ @@ -179,7 +174,6 @@ export const IncreasePower = ({ }); const { - transactionData: decreasePowerTxData, write: writeDecreasePower, error: errorDecreasePower, status: decreasePowerStatus, @@ -202,11 +196,7 @@ export const IncreasePower = ({ useErrorDetails(errorDecreasePower, "errorDecrease"); - const { updateTransactionStatus: updateDecreasePowerTransactionStatus } = - useTransactionNotification(decreasePowerTxData); - useEffect(() => { - updateDecreasePowerTransactionStatus(decreasePowerStatus); if (decreasePowerStatus === "success") { setIncreaseInput(""); } @@ -223,8 +213,6 @@ export const IncreasePower = ({ (allowance ?? 0n) > 0n && requestedAmount > (allowance ?? 0n); async function handleChange() { - setAllowanceTransactionStatus("idle"); - setResetTransactionStatus("idle"); if (requestesMoreThanAllowance) { writeResetAllowance?.(); return; @@ -244,24 +232,17 @@ export const IncreasePower = ({ setIncreaseInput(e.target.value); }; - const { updateTransactionStatus: updateAllowTokenTransactionStatus } = - useTransactionNotification(allowTokenTxData); - useEffect(() => { - updateAllowTokenTransactionStatus(allowTokenStatus); - setAllowanceTransactionStatus(allowTokenStatus); - setResetTransactionStatus(resetAllowanceStatus); if ( - resetTransactionStatus === "success" && - allowanceTransactionStatus === "idle" + resetAllowanceStatus === "success" && + allowanceTokenStatus === "idle" ) { writeAllowToken?.(); - setResetTransactionStatus("idle"); } if (isWaitSuccess) { writeIncreasePower?.(); } - }, [resetAllowanceStatus, isWaitSuccess, allowTokenStatus]); + }, [resetAllowanceStatus, isWaitSuccess, allowanceTokenStatus]); useEffect(() => { if (increaseStakeStatus === "success") { @@ -271,13 +252,6 @@ export const IncreasePower = ({ } }, [increaseStakeStatus]); - const { updateTransactionStatus: updateIncreaseStakeTransactionStatus } = - useTransactionNotification(increasePowerTxData); - - useEffect(() => { - updateIncreaseStakeTransactionStatus(increaseStakeStatus); - }, [increaseStakeStatus]); - const isInputIncreaseGreaterThanBalance = Number(increaseInput as unknown as number) > Number(accountTokenBalance?.formatted); @@ -339,7 +313,7 @@ export const IncreasePower = ({ ref={modalRef} label={`Stake ${tokenSymbol} in community`} initialTransactionSteps={InitialTransactionSteps} - allowTokenStatus={allowTokenStatus} + allowTokenStatus={allowanceTokenStatus} stepTwoStatus={increaseStakeStatus} token={tokenSymbol} pendingAllowance={pendingAllowance} diff --git a/apps/web/components/PoolMetrics.tsx b/apps/web/components/PoolMetrics.tsx index 2c1663009..bce6b3526 100644 --- a/apps/web/components/PoolMetrics.tsx +++ b/apps/web/components/PoolMetrics.tsx @@ -94,6 +94,7 @@ export const PoolMetrics: FC = ({ address: tokenGarden.address as Address, abi: abiWithErrors(erc20ABI), functionName: "approve", + contractName: "ERC20", }); useEffect(() => { @@ -109,6 +110,7 @@ export const PoolMetrics: FC = ({ address: alloInfo?.id as Address, abi: abiWithErrors(alloABI), functionName: "fundPool", + contractName: "Allo", onConfirmations: () => { publish({ topic: "pool", diff --git a/apps/web/components/ProposalCard.tsx b/apps/web/components/ProposalCard.tsx index b88e72784..c3e62e896 100644 --- a/apps/web/components/ProposalCard.tsx +++ b/apps/web/components/ProposalCard.tsx @@ -14,7 +14,6 @@ import { getProposals } from "@/actions/getProposals"; import { usePubSubContext } from "@/contexts/pubsub.context"; import { useChainIdFromPath } from "@/hooks/useChainIdFromPath"; import { useContractWriteWithConfirmations } from "@/hooks/useContractWriteWithConfirmations"; -import { useTransactionNotification } from "@/hooks/useTransactionNotification"; import { alloABI } from "@/src/generated"; import { LightCVStrategy, poolTypes } from "@/types"; import { abiWithErrors } from "@/utils/abiWithErrors"; @@ -77,15 +76,14 @@ export function ProposalCard({ //executing proposal distribute function / alert error if not executable / notification if success const { - transactionData: distributeTxData, write: writeDistribute, error: errorDistribute, isError: isErrorDistribute, - status: distributeStatus, } = useContractWriteWithConfirmations({ address: alloInfo.id as Address, abi: abiWithErrors(alloABI), functionName: "distribute", + contractName: "Allo", onConfirmations: () => { publish({ topic: "proposal", @@ -95,6 +93,7 @@ export function ProposalCard({ containerId: strategy.poolId, chainId, }); + triggerRenderProposals(); }, }); @@ -105,19 +104,6 @@ export function ProposalCard({ } }, [isErrorDistribute]); - const { - updateTransactionStatus: updateDistributeTransactionStatus, - txConfirmationHash: distributeTxConfirmationHash, - } = useTransactionNotification(distributeTxData); - - useEffect(() => { - updateDistributeTransactionStatus(distributeStatus); - }, [distributeStatus]); - - useEffect(() => { - triggerRenderProposals(); - }, [distributeTxConfirmationHash]); - return (
{ publish({ topic: "proposal", @@ -229,12 +228,6 @@ export function Proposals({ }); useErrorDetails(errorAllocate, "errorAllocate"); - const { updateTransactionStatus } = - useTransactionNotification(allocateTxData); - - useEffect(() => { - updateTransactionStatus(allocateStatus); - }, [allocateStatus]); const submit = async () => { const proposalsDifferencesArr = getProposalsInputsDifferences( diff --git a/apps/web/components/RegisterMember.tsx b/apps/web/components/RegisterMember.tsx index 690b33f02..42fd1e56c 100644 --- a/apps/web/components/RegisterMember.tsx +++ b/apps/web/components/RegisterMember.tsx @@ -8,7 +8,6 @@ import { usePubSubContext } from "@/contexts/pubsub.context"; import { useChainIdFromPath } from "@/hooks/useChainIdFromPath"; import { useContractWriteWithConfirmations } from "@/hooks/useContractWriteWithConfirmations"; import { ConditionObject, useDisableButtons } from "@/hooks/useDisableButtons"; -import { useTransactionNotification } from "@/hooks/useTransactionNotification"; import { erc20ABI, registryCommunityABI } from "@/src/generated"; import { abiWithErrors, abiWithErrors2 } from "@/utils/abiWithErrors"; import { useErrorDetails } from "@/utils/getErrorName"; @@ -48,6 +47,7 @@ export function RegisterMember({ const registryContractCallConfig = { address: communityAddress, abi: abiWithErrors2(registryCommunityABI), + contractName: "RegistryCommunity", }; const { data: isMember } = useContractRead({ @@ -78,7 +78,6 @@ export function RegisterMember({ ); const { - transactionData: registerMemberTxData, write: writeRegisterMember, error: registerMemberError, status: registerMemberStatus, @@ -98,10 +97,8 @@ export function RegisterMember({ }); const { - transactionData: unregisterMemberTxData, write: writeUnregisterMember, error: unregisterMemberError, - status: unregisterMemberStatus, } = useContractWriteWithConfirmations({ ...registryContractCallConfig, functionName: "unregisterMember", @@ -118,7 +115,6 @@ export function RegisterMember({ }); const { - transactionData: allowTokenTxData, write: writeAllowToken, error: allowTokenError, confirmed: allowTokenConfirmed, @@ -128,6 +124,10 @@ export function RegisterMember({ abi: abiWithErrors(erc20ABI), args: [communityAddress, registerStakeAmount as bigint], // [allowed spender address, amount ] functionName: "approve", + contractName: "ERC20", + onConfirmations: () => { + writeRegisterMember(); + }, }); const { data: dataAllowance } = useContractRead({ @@ -160,34 +160,19 @@ export function RegisterMember({ } } - const { updateTransactionStatus: updateAllowTokenTransactionStatus } = - useTransactionNotification(allowTokenTxData); - - const { updateTransactionStatus: updateRegisterMemberTransactionStatus } = - useTransactionNotification(registerMemberTxData); - - const { updateTransactionStatus: updateUnregisterMemberTransactionStatus } = - useTransactionNotification(unregisterMemberTxData); - useEffect(() => { - updateAllowTokenTransactionStatus(allowTokenStatus); if (allowTokenConfirmed) { - writeRegisterMember(); + } }, [allowTokenConfirmed]); useEffect(() => { - updateRegisterMemberTransactionStatus(registerMemberStatus); if (registerMemberStatus === "success") { closeModal(); setPendingAllowance(false); } }, [registerMemberStatus]); - useEffect(() => { - updateUnregisterMemberTransactionStatus(unregisterMemberStatus); - }, [unregisterMemberStatus]); - //RegisterMember Disable Button condition => message mapping const disableRegMemberBtnCondition: ConditionObject[] = [ { diff --git a/apps/web/configs/chainServer.tsx b/apps/web/configs/chainServer.tsx index 1e576ea4c..b409d5129 100644 --- a/apps/web/configs/chainServer.tsx +++ b/apps/web/configs/chainServer.tsx @@ -54,7 +54,7 @@ export const chainDataMap: { icon: Arbitrum, explorer: "https://sepolia.arbiscan.io/address/", blockTime: 0.23, - confirmations: 1, // 7 + confirmations: 5, // 7 }, 42161: { name: arbitrum.name, diff --git a/apps/web/hooks/useContractWriteWithConfirmations.ts b/apps/web/hooks/useContractWriteWithConfirmations.ts index c3274d792..c118cf851 100644 --- a/apps/web/hooks/useContractWriteWithConfirmations.ts +++ b/apps/web/hooks/useContractWriteWithConfirmations.ts @@ -1,16 +1,22 @@ import { useEffect } from "react"; + import { TransactionReceipt } from "viem"; import { useChainId, useContractWrite, useWaitForTransaction } from "wagmi"; +import { useTransactionNotification } from "./useTransactionNotification"; import { chainDataMap } from "@/configs/chainServer"; export function useContractWriteWithConfirmations( props: Parameters[0] & { onConfirmations?: (receipt: TransactionReceipt) => void; confirmations?: number; + contractName: string; }, ) { const chainId = useChainId(); - let propsWithChainId = { ...props, chainId: props.chainId ?? chainId }; + let propsWithChainId = { + ...props, + chainId: props.chainId ?? chainId, + }; const txResult = useContractWrite(propsWithChainId as any); @@ -19,8 +25,15 @@ export function useContractWriteWithConfirmations( hash: txResult.data?.hash, chainId: +propsWithChainId.chainId, confirmations: - propsWithChainId.confirmations ?? - chainDataMap[+propsWithChainId.chainId].confirmations, + propsWithChainId.confirmations ?? + chainDataMap[+propsWithChainId.chainId].confirmations, + }); + + useTransactionNotification({ + transactionData: txResult.data, + transactionStatus: txResult.status, + transactionError: txResult.error, + contractName: props.contractName, }); useEffect(() => { diff --git a/apps/web/hooks/useTransactionNotification.ts b/apps/web/hooks/useTransactionNotification.ts deleted file mode 100644 index c470c54d8..000000000 --- a/apps/web/hooks/useTransactionNotification.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { useEffect, useState } from "react"; -import { toast } from "react-toastify"; -import { Address } from "viem"; -import { WriteContractResult } from "wagmi/actions"; - -type TransactionStatus = "error" | "success" | "loading" | "idle"; -type TransactionData = WriteContractResult | undefined; -type TransactionPayload = { - status: TransactionStatus; - data?: TransactionData; - error?: string; - transactionData?: TransactionData; -}; -type TransactionFunction = ( - value: TransactionPayload | PromiseLike, -) => void; - -export const useTransactionNotification = ( - transactionData: TransactionData, -) => { - const [transactionStatus, updateTransactionStatus] = - useState("idle"); - const [txConfirmationHash, setTxConfirmationHash] = useState
(undefined); - const [promiseResolve, setPromiseResolve] = useState(undefined); - const [promiseReject, setPromiseReject] = useState(undefined); - - const transactionPromise = () => { - return new Promise((resolve, reject) => { - setPromiseResolve(() => resolve); - setPromiseReject(() => reject); - }); - }; - - useEffect(() => { - if (transactionStatus === "error") { - promiseReject?.({ status: "error" }); - } - if (transactionStatus === "success") { - promiseResolve?.({ status: "success", transactionData: transactionData }); - } - if (transactionStatus === "loading") { - const promise = transactionPromise(); - - setTimeout(() => { - promiseReject?.({ status: "error" }); - }, 1000); - - // Wallet interaction notification toasts - toast - .promise(promise, { - pending: "Please sign the transaction", - success: "Transaction sent!", - error: "Something went wrong", - }) - .then((data) => { - console.info("Tx hash: " + data.transactionData?.hash); - // const receipt = async () => - // await viemClient.waitForTransactionReceipt({ - // confirmations: [chainId].confirmations, - // hash: data.transactionData?.hash || "0x", - // }); - - // // transaction notification toasts - // toast - // .promise(receipt, { - // pending: "Waiting for block confirmations...", - // success: `Transaction sent with ${[chainId].confirmations} confirmations`, - // error: "Something went wrong", - // }) - // .then((data) => { - // console.log(data); - setTxConfirmationHash(data.transactionData?.hash); - // }) - // .catch((error: any) => { - // console.error(`Tx failure: ${error}`); - // }); - }) - .catch((error: any) => { - console.error(error); - }); - } - }, [transactionStatus]); - - return { updateTransactionStatus, txConfirmationHash }; -}; diff --git a/apps/web/hooks/useTransactionNotification.tsx b/apps/web/hooks/useTransactionNotification.tsx new file mode 100644 index 000000000..e52296338 --- /dev/null +++ b/apps/web/hooks/useTransactionNotification.tsx @@ -0,0 +1,96 @@ +import { useEffect, useState } from "react"; +import Image from "next/image"; +import { Id, toast } from "react-toastify"; +import { UserRejectedRequestError } from "viem"; +import { WriteContractResult } from "wagmi/actions"; +import { useContractWriteWithConfirmations } from "./useContractWriteWithConfirmations"; +import { WaitingForSig, TxError, TxSuccess } from "@/assets"; + +type TransactionData = WriteContractResult | undefined; + +export const useTransactionNotification = ( + { transactionData, transactionError, transactionStatus, contractName }: { + transactionData: TransactionData | null | undefined, + transactionError: Error | null | undefined, + transactionStatus: ReturnType["status"], + contractName: string, + }, +) => { + const [toastId, setToastId] = useState(); + + useEffect(() => { + if (transactionData?.hash) { + console.info("Tx hash: ", transactionData.hash); + } + }, [transactionData?.hash]); + + useEffect(() => { + if (!transactionStatus || transactionStatus === "idle") { + return; + } + + const txNotifProps = { + transactionStatus, + contractName, + }; + + if (!toastId) { + setToastId(toast(TransactionStatusNotification({ + ...txNotifProps, message: "Waiting for signature", + }), { + autoClose: false, + closeButton: false, + closeOnClick: false, + icon: <>, + type: "warning", + className: "no-icon", + })); + } else { + if (transactionStatus === "success") { + toast.update(toastId!, { + render: TransactionStatusNotification({ ...txNotifProps, message:"Transaction sent successfully" }), + autoClose: undefined, + closeButton: undefined, + closeOnClick: true, + type: "success", + }); + setToastId(undefined); + } else if (transactionStatus === "error") { + toast.update(toastId!, { + render: TransactionStatusNotification({ ...txNotifProps, message:parseErrorMessage(transactionError as Error) }), + autoClose: undefined, + closeButton: undefined, + closeOnClick: true, + type: "error", + }); + setToastId(undefined); + } + } + }, [transactionStatus]); + + function parseErrorMessage(error: Error) { + if (error?.cause instanceof UserRejectedRequestError) { + return "User rejected the request"; + } else { + return "Transaction failed. Please try again"; + } + } +}; + +const TransactionStatusNotification = ({ + message, + transactionStatus, + contractName, +}: { + message: string, + transactionStatus: ReturnType["status"], + contractName: string, +}) => { + return (
+ icon +
+
{contractName}
+
{message}
+
+
); +}; \ No newline at end of file diff --git a/apps/web/styles/globals.css b/apps/web/styles/globals.css index a195639ec..f44fc3002 100644 --- a/apps/web/styles/globals.css +++ b/apps/web/styles/globals.css @@ -196,3 +196,7 @@ caption { .hide-input-arrows { -moz-appearance: textfield; /* Firefox */ } + +.no-icon .Toastify__toast-icon { + display: none; +} diff --git a/gardens-v2.code-workspace b/gardens-v2.code-workspace index e88a87278..e9c1cb2c7 100644 --- a/gardens-v2.code-workspace +++ b/gardens-v2.code-workspace @@ -39,6 +39,12 @@ "forge-std/=lib/forge-std/src/", "allo-v2/=lib/allo-v2/contracts/", ], + "[typescriptreact]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "[typescript]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, }, "extensions": { "recommendations": [ From 70747040f25220038d9248c4a0fa8001e751013b Mon Sep 17 00:00:00 2001 From: Corantin Date: Tue, 16 Jul 2024 17:12:15 -0400 Subject: [PATCH 02/23] Update contract name to user readable --- apps/web/components/ActivatePoints.tsx | 4 ++-- apps/web/components/Forms/CommunityForm.tsx | 2 +- apps/web/components/Forms/PoolForm.tsx | 2 +- apps/web/components/IncreasePower.tsx | 2 +- apps/web/components/RegisterMember.tsx | 2 +- apps/web/hooks/useContractWriteWithConfirmations.ts | 2 ++ apps/web/hooks/useTransactionNotification.tsx | 5 +++-- 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/apps/web/components/ActivatePoints.tsx b/apps/web/components/ActivatePoints.tsx index db85feb93..5d60d5fc9 100644 --- a/apps/web/components/ActivatePoints.tsx +++ b/apps/web/components/ActivatePoints.tsx @@ -36,7 +36,7 @@ export function ActivatePoints({ } = useContractWriteWithConfirmations({ chainId, address: strategyAddress, - contractName: "CVStrategy", + contractName: "CV Strategy", abi: abiWithErrors(cvStrategyABI), functionName: "activatePoints", onConfirmations: () => { @@ -57,7 +57,7 @@ export function ActivatePoints({ } = useContractWriteWithConfirmations({ address: strategyAddress, abi: abiWithErrors(cvStrategyABI), - contractName: "CVStrategy", + contractName: "CV Strategy", functionName: "deactivatePoints", onConfirmations: () => { publish({ diff --git a/apps/web/components/Forms/CommunityForm.tsx b/apps/web/components/Forms/CommunityForm.tsx index c1558d7f9..973b3e736 100644 --- a/apps/web/components/Forms/CommunityForm.tsx +++ b/apps/web/components/Forms/CommunityForm.tsx @@ -161,7 +161,7 @@ export const CommunityForm = ({ address: registryFactoryAddr, abi: abiWithErrors(registryFactoryABI), functionName: "createRegistry", - contractName: "RegistryFactory", + contractName: "Registry Factory", onConfirmations: async (receipt) => { const newCommunityAddr = receipt.logs[0].address; if (pathname) { diff --git a/apps/web/components/Forms/PoolForm.tsx b/apps/web/components/Forms/PoolForm.tsx index bf59fa0e1..f8ddf2e6a 100644 --- a/apps/web/components/Forms/PoolForm.tsx +++ b/apps/web/components/Forms/PoolForm.tsx @@ -251,7 +251,7 @@ export function PoolForm({ token, communityAddr, chainId }: Props) { const { write } = useContractWriteWithConfirmations({ address: communityAddr, abi: abiWithErrors(registryCommunityABI), - contractName: "RegistryCommunity", + contractName: "Registry Community", functionName: "createPool", onConfirmations: () => { publish({ diff --git a/apps/web/components/IncreasePower.tsx b/apps/web/components/IncreasePower.tsx index d829507a9..651bf0a22 100644 --- a/apps/web/components/IncreasePower.tsx +++ b/apps/web/components/IncreasePower.tsx @@ -115,7 +115,7 @@ export const IncreasePower = ({ const registryContractCallConfig = { address: communityAddress, abi: abiWithErrors2(registryCommunityABI), - contractName: "RegistryCommunity", + contractName: "Registry Community", }; const { data: isMember } = useContractRead({ diff --git a/apps/web/components/RegisterMember.tsx b/apps/web/components/RegisterMember.tsx index 42fd1e56c..0f05ecbe1 100644 --- a/apps/web/components/RegisterMember.tsx +++ b/apps/web/components/RegisterMember.tsx @@ -47,7 +47,7 @@ export function RegisterMember({ const registryContractCallConfig = { address: communityAddress, abi: abiWithErrors2(registryCommunityABI), - contractName: "RegistryCommunity", + contractName: "Registry Community", }; const { data: isMember } = useContractRead({ diff --git a/apps/web/hooks/useContractWriteWithConfirmations.ts b/apps/web/hooks/useContractWriteWithConfirmations.ts index c118cf851..1e5defe5a 100644 --- a/apps/web/hooks/useContractWriteWithConfirmations.ts +++ b/apps/web/hooks/useContractWriteWithConfirmations.ts @@ -10,6 +10,7 @@ export function useContractWriteWithConfirmations( onConfirmations?: (receipt: TransactionReceipt) => void; confirmations?: number; contractName: string; + showNotification?: boolean; }, ) { const chainId = useChainId(); @@ -34,6 +35,7 @@ export function useContractWriteWithConfirmations( transactionStatus: txResult.status, transactionError: txResult.error, contractName: props.contractName, + enabled: props.showNotification ?? true, // default to true }); useEffect(() => { diff --git a/apps/web/hooks/useTransactionNotification.tsx b/apps/web/hooks/useTransactionNotification.tsx index e52296338..9b81a1ac4 100644 --- a/apps/web/hooks/useTransactionNotification.tsx +++ b/apps/web/hooks/useTransactionNotification.tsx @@ -9,11 +9,12 @@ import { WaitingForSig, TxError, TxSuccess } from "@/assets"; type TransactionData = WriteContractResult | undefined; export const useTransactionNotification = ( - { transactionData, transactionError, transactionStatus, contractName }: { + { transactionData, transactionError, transactionStatus, contractName, enabled}: { transactionData: TransactionData | null | undefined, transactionError: Error | null | undefined, transactionStatus: ReturnType["status"], contractName: string, + enabled?: boolean, }, ) => { const [toastId, setToastId] = useState(); @@ -25,7 +26,7 @@ export const useTransactionNotification = ( }, [transactionData?.hash]); useEffect(() => { - if (!transactionStatus || transactionStatus === "idle") { + if (!enabled || !transactionStatus || transactionStatus === "idle") { return; } From 8914889c39bfa4b2f570d9f6cea6c8e94f3c695f Mon Sep 17 00:00:00 2001 From: Corantin Date: Tue, 16 Jul 2024 17:14:29 -0400 Subject: [PATCH 03/23] lint --- apps/web/hooks/useTransactionNotification.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/hooks/useTransactionNotification.tsx b/apps/web/hooks/useTransactionNotification.tsx index 9b81a1ac4..7ad6cf7f1 100644 --- a/apps/web/hooks/useTransactionNotification.tsx +++ b/apps/web/hooks/useTransactionNotification.tsx @@ -9,7 +9,7 @@ import { WaitingForSig, TxError, TxSuccess } from "@/assets"; type TransactionData = WriteContractResult | undefined; export const useTransactionNotification = ( - { transactionData, transactionError, transactionStatus, contractName, enabled}: { + { transactionData, transactionError, transactionStatus, contractName, enabled }: { transactionData: TransactionData | null | undefined, transactionError: Error | null | undefined, transactionStatus: ReturnType["status"], From f1efdc375cbd0d5ec05061deafefc5ce4442f11a Mon Sep 17 00:00:00 2001 From: Corantin Date: Tue, 16 Jul 2024 21:09:00 -0400 Subject: [PATCH 04/23] Restore 1 confitm block --- apps/web/configs/chainServer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/configs/chainServer.tsx b/apps/web/configs/chainServer.tsx index b409d5129..1e576ea4c 100644 --- a/apps/web/configs/chainServer.tsx +++ b/apps/web/configs/chainServer.tsx @@ -54,7 +54,7 @@ export const chainDataMap: { icon: Arbitrum, explorer: "https://sepolia.arbiscan.io/address/", blockTime: 0.23, - confirmations: 5, // 7 + confirmations: 1, // 7 }, 42161: { name: arbitrum.name, From 981ec4251a7fe92c74b8c166e64a71b7c802b95f Mon Sep 17 00:00:00 2001 From: Corantin Date: Thu, 18 Jul 2024 03:07:18 -0400 Subject: [PATCH 05/23] Disable notification when Transaction modal --- apps/web/.eslintrc.js | 4 +- apps/web/assets/TxMinting.svg | 4 ++ apps/web/assets/TxPreparing.svg | 3 ++ apps/web/assets/index.ts | 2 + apps/web/components/Forms/CommunityForm.tsx | 21 +++++++--- apps/web/components/Forms/PoolForm.tsx | 2 +- apps/web/components/Forms/ProposalForm.tsx | 2 +- apps/web/components/IncreasePower.tsx | 3 ++ apps/web/components/PoolMetrics.tsx | 2 + apps/web/components/RegisterMember.tsx | 6 ++- .../useContractWriteWithConfirmations.ts | 9 +++++ apps/web/hooks/useTransactionNotification.tsx | 39 +++++++++++++------ 12 files changed, 73 insertions(+), 24 deletions(-) create mode 100644 apps/web/assets/TxMinting.svg create mode 100644 apps/web/assets/TxPreparing.svg diff --git a/apps/web/.eslintrc.js b/apps/web/.eslintrc.js index 5aeabcb39..5ec5b9511 100644 --- a/apps/web/.eslintrc.js +++ b/apps/web/.eslintrc.js @@ -76,13 +76,12 @@ module.exports = { ], "prefer-const": "off", "@typescript-eslint/consistent-type-definitions": "off", - "curly": ["error", "multi-line"], + curly: ["error", "multi-line"], "no-unused-expressions": "error", "no-unsafe-optional-chaining": "error", "comma-dangle": ["error", "always-multiline"], semi: ["error", "always"], "brace-style": ["error"], - indent: ["error", 2], "@typescript-eslint/quotes": ["error", "double"], "import/extensions": "off", "no-multiple-empty-lines": ["error", { max: 1 }], @@ -92,5 +91,4 @@ module.exports = { "jsx-a11y/no-static-element-interactions": "off", "no-irregular-whitespace": "error", }, - }; diff --git a/apps/web/assets/TxMinting.svg b/apps/web/assets/TxMinting.svg new file mode 100644 index 000000000..04b08b256 --- /dev/null +++ b/apps/web/assets/TxMinting.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/web/assets/TxPreparing.svg b/apps/web/assets/TxPreparing.svg new file mode 100644 index 000000000..b602e52ed --- /dev/null +++ b/apps/web/assets/TxPreparing.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/web/assets/index.ts b/apps/web/assets/index.ts index 5271889bc..440321147 100644 --- a/apps/web/assets/index.ts +++ b/apps/web/assets/index.ts @@ -23,3 +23,5 @@ export { default as GardensLogo } from "./GardensLogo"; export { default as WaitingForSig } from "./WaitingForSig.svg"; export { default as TxSuccess } from "./TxSuccess.svg"; export { default as TxError } from "./TxError.svg"; +export { default as TxPreparing } from "./TxPreparing.svg"; +export { default as TxMinting } from "./TxMinting.svg"; diff --git a/apps/web/components/Forms/CommunityForm.tsx b/apps/web/components/Forms/CommunityForm.tsx index 973b3e736..1dcb1e4a3 100644 --- a/apps/web/components/Forms/CommunityForm.tsx +++ b/apps/web/components/Forms/CommunityForm.tsx @@ -135,13 +135,25 @@ export const CommunityForm = ({ covenant: getValues("covenant"), }; - const ipfsUpload = ipfsJsonUpload(json); + const ipfsUpload = ipfsJsonUpload(json).then(async (res) => { + await delayAsync(1001); + return res; + }); toast .promise(ipfsUpload, { - pending: "Preparing everything, wait a moment...", + pending: { + render: "Uploading data...", + type: "default", + toastId: "ipfsUpload", + closeOnClick: true, + style: { + width: "fit-content", + marginLeft: "auto", + }, + }, // success: "All ready!", - error: "Error uploading data to IPFS", + error: "Error uploading data", }) .then((ipfsHash) => { console.info("Uploaded to: https://ipfs.io/ipfs/" + ipfsHash); @@ -182,7 +194,6 @@ export const CommunityForm = ({ }, onError: (err) => { console.error(err); - toast.error("Error creating Community"); }, onSettled: () => setLoading(false), }); @@ -453,4 +464,4 @@ export const CommunityForm = ({
); -}; +}; \ No newline at end of file diff --git a/apps/web/components/Forms/PoolForm.tsx b/apps/web/components/Forms/PoolForm.tsx index f8ddf2e6a..515d37449 100644 --- a/apps/web/components/Forms/PoolForm.tsx +++ b/apps/web/components/Forms/PoolForm.tsx @@ -293,7 +293,7 @@ export function PoolForm({ token, communityAddr, chainId }: Props) { const ipfsUpload = ipfsJsonUpload(json); toast .promise(ipfsUpload, { - pending: "Preparing everything, wait a moment...", + pending: "Publishing data...", // success: "All ready!", error: "Error uploading data to IPFS", }) diff --git a/apps/web/components/Forms/ProposalForm.tsx b/apps/web/components/Forms/ProposalForm.tsx index f990cf0f4..0546264bd 100644 --- a/apps/web/components/Forms/ProposalForm.tsx +++ b/apps/web/components/Forms/ProposalForm.tsx @@ -130,7 +130,7 @@ export const ProposalForm = ({ toast .promise(ipfsUpload, { - pending: "Preparing everything, wait a moment...", + pending: "Publishing data...", // success: "All ready!", error: "Error uploading data to IPFS", }) diff --git a/apps/web/components/IncreasePower.tsx b/apps/web/components/IncreasePower.tsx index 651bf0a22..3f2deb9dc 100644 --- a/apps/web/components/IncreasePower.tsx +++ b/apps/web/components/IncreasePower.tsx @@ -135,6 +135,7 @@ export const IncreasePower = ({ args: [communityAddress, requestedAmount], // [allowed spender address, amount ] functionName: "approve", contractName: "ERC20", + showNotification: false, }); const { write: writeResetAllowance, status: resetAllowanceStatus } = @@ -144,6 +145,7 @@ export const IncreasePower = ({ args: [communityAddress, 0n], // [allowed spender address, amount ] functionName: "approve", contractName: "ERC20", + showNotification: false, }); const { data: allowance } = useContractRead({ @@ -161,6 +163,7 @@ export const IncreasePower = ({ ...registryContractCallConfig, functionName: "increasePower", args: [requestedAmount as bigint], + showNotification: false, onConfirmations: () => { publish({ topic: "member", diff --git a/apps/web/components/PoolMetrics.tsx b/apps/web/components/PoolMetrics.tsx index bce6b3526..b0f440c80 100644 --- a/apps/web/components/PoolMetrics.tsx +++ b/apps/web/components/PoolMetrics.tsx @@ -95,6 +95,7 @@ export const PoolMetrics: FC = ({ abi: abiWithErrors(erc20ABI), functionName: "approve", contractName: "ERC20", + showNotification: false, }); useEffect(() => { @@ -111,6 +112,7 @@ export const PoolMetrics: FC = ({ abi: abiWithErrors(alloABI), functionName: "fundPool", contractName: "Allo", + showNotification: false, onConfirmations: () => { publish({ topic: "pool", diff --git a/apps/web/components/RegisterMember.tsx b/apps/web/components/RegisterMember.tsx index 0f05ecbe1..ccea677f9 100644 --- a/apps/web/components/RegisterMember.tsx +++ b/apps/web/components/RegisterMember.tsx @@ -84,6 +84,7 @@ export function RegisterMember({ } = useContractWriteWithConfirmations({ ...registryContractCallConfig, functionName: "stakeAndRegisterMember", + showNotification: false, onConfirmations: () => { publish({ topic: "member", @@ -125,6 +126,7 @@ export function RegisterMember({ args: [communityAddress, registerStakeAmount as bigint], // [allowed spender address, amount ] functionName: "approve", contractName: "ERC20", + showNotification: false, onConfirmations: () => { writeRegisterMember(); }, @@ -145,7 +147,7 @@ export function RegisterMember({ useErrorDetails(allowTokenError, "approve"); // useErrorDetails(errorGardenToken, "gardenToken"); - async function handleChange() { + async function handleClick() { if (isMember) { writeUnregisterMember(); } else { @@ -222,7 +224,7 @@ export function RegisterMember({
); -}; \ No newline at end of file +}; From 3a2261cb5063f61f0ecd63136ee7580e7f845227 Mon Sep 17 00:00:00 2001 From: Corantin Date: Tue, 23 Jul 2024 20:47:42 -0400 Subject: [PATCH 16/23] Push review --- apps/web/hooks/useContractWriteWithConfirmations.ts | 1 - apps/web/hooks/useTransactionNotification.tsx | 10 +++++----- apps/web/styles/globals.css | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/apps/web/hooks/useContractWriteWithConfirmations.ts b/apps/web/hooks/useContractWriteWithConfirmations.ts index 7402a2c7d..2d3b220f7 100644 --- a/apps/web/hooks/useContractWriteWithConfirmations.ts +++ b/apps/web/hooks/useContractWriteWithConfirmations.ts @@ -63,7 +63,6 @@ export function useContractWriteWithConfirmations["status"], - contractName: string, enabled?: boolean, fallbackErrorMessage?: string, }, @@ -38,7 +37,6 @@ export const useTransactionNotification = ( const txNotifProps = { status: transactionStatus, - contractName, }; let notifProps: Parameters[0]; @@ -98,10 +96,11 @@ export const TransactionStatusNotification = ({ }: { message: string, status: ReturnType["status"], - contractName: string, + contractName?: string, }) => { let icon: any; let textColor: string; + const chain = useChainFromPath(); switch (status) { case "idle": @@ -126,8 +125,9 @@ export const TransactionStatusNotification = ({
{icon && icon}
-
{contractName}
+ {contractName &&
{contractName}
}
{message}
+ {chain?.blockExplorers?.default.url &&
Click to see in {chain.blockExplorers.default.name}
}
); diff --git a/apps/web/styles/globals.css b/apps/web/styles/globals.css index 951fb8405..0aafafe3c 100644 --- a/apps/web/styles/globals.css +++ b/apps/web/styles/globals.css @@ -212,4 +212,4 @@ caption { to { transform: rotate(360deg); } -} +} \ No newline at end of file From 4daa1c419a248b322553be6e126b4e2062755e0d Mon Sep 17 00:00:00 2001 From: Corantin Date: Tue, 23 Jul 2024 22:57:46 -0400 Subject: [PATCH 17/23] Pimpup --- apps/web/hooks/useTransactionNotification.tsx | 111 ++++++++++++++---- 1 file changed, 85 insertions(+), 26 deletions(-) diff --git a/apps/web/hooks/useTransactionNotification.tsx b/apps/web/hooks/useTransactionNotification.tsx index 41604d16f..a1a29d834 100644 --- a/apps/web/hooks/useTransactionNotification.tsx +++ b/apps/web/hooks/useTransactionNotification.tsx @@ -11,16 +11,23 @@ import { NOTIFICATION_AUTO_CLOSE_DELAY } from "@/globals"; type TransactionData = WriteContractResult | undefined; -export const useTransactionNotification = ( - { toastId: toastIdProp, transactionData, transactionError, transactionStatus, enabled, fallbackErrorMessage }: { - toastId?: string, - transactionData: TransactionData | null | undefined, - transactionError: Error | null | undefined, - transactionStatus?: ReturnType["status"], - enabled?: boolean, - fallbackErrorMessage?: string, - }, -) => { +export const useTransactionNotification = ({ + toastId: toastIdProp, + transactionData, + transactionError, + transactionStatus, + enabled, + fallbackErrorMessage, +}: { + toastId?: string; + transactionData: TransactionData | null | undefined; + transactionError: Error | null | undefined; + transactionStatus?: ReturnType< + typeof useContractWriteWithConfirmations + >["status"]; + enabled?: boolean; + fallbackErrorMessage?: string; +}) => { const toastId = toastIdProp ?? uniqueId(); const chain = useChainFromPath(); @@ -31,7 +38,12 @@ export const useTransactionNotification = ( }, [transactionData?.hash]); useEffect(() => { - if ((!enabled && transactionStatus !== "error" && transactionStatus !== "success") || !transactionStatus) { + if ( + (!enabled && + transactionStatus !== "error" && + transactionStatus !== "success") || + !transactionStatus + ) { return; } @@ -42,7 +54,11 @@ export const useTransactionNotification = ( let notifProps: Parameters[0]; let toastOptions: Partial; - const clickToExplorer = () => window.open(`${chain?.blockExplorers?.default.url}/tx/${transactionData?.hash}`, "_blank"); + const clickToExplorer = () => + window.open( + `${chain?.blockExplorers?.default.url}/tx/${transactionData?.hash}`, + "_blank" + ); switch (transactionStatus) { case "idle": @@ -50,16 +66,41 @@ export const useTransactionNotification = ( toastOptions = { autoClose: false, type: "warning" }; break; case "loading": - notifProps = { ...txNotifProps, message: "Transaction in progress..." }; - toastOptions = { autoClose: false, type: "info", onClick: clickToExplorer }; + notifProps = { + ...txNotifProps, + message: "Transaction in progress...", + showClickToExplorer: true, + }; + toastOptions = { + autoClose: false, + type: "info", + onClick: clickToExplorer, + }; break; case "success": - notifProps = { ...txNotifProps, message: "Transaction successfull" }; - toastOptions = { type: "success", onClick: clickToExplorer }; + notifProps = { + ...txNotifProps, + message: "Transaction successfull", + showClickToExplorer: true, + }; + toastOptions = { + type: "success", + onClick: clickToExplorer, + }; break; case "error": - notifProps = { ...txNotifProps, message: parseErrorMessage(transactionError as Error) }; - toastOptions = { type: "error", onClick: clickToExplorer }; + notifProps = { + ...txNotifProps, + message: transactionError + ? parseErrorMessage(transactionError) + : "Error processing transaction", + showClickToExplorer: !!transactionData?.hash, + }; + console.log("transactionData?.hash", transactionData?.hash); + toastOptions = { + type: "error", + onClick: clickToExplorer, + }; break; } @@ -72,7 +113,10 @@ export const useTransactionNotification = ( } satisfies ToastOptions; if (toast.isActive(toastId)) { - toast.update(toastId, { ...toastOptions, render: }); + toast.update(toastId, { + ...toastOptions, + render: , + }); } else { toast(, toastOptions); } @@ -93,10 +137,12 @@ export const TransactionStatusNotification = ({ message, status, contractName, + showClickToExplorer, }: { - message: string, - status: ReturnType["status"], - contractName?: string, + message: string; + status: ReturnType["status"]; + contractName?: string; + showClickToExplorer?: boolean; }) => { let icon: any; let textColor: string; @@ -123,11 +169,24 @@ export const TransactionStatusNotification = ({ return (
- {icon && icon} + {icon && ( + icon + )}
- {contractName &&
{contractName}
} -
{message}
- {chain?.blockExplorers?.default.url &&
Click to see in {chain.blockExplorers.default.name}
} + {contractName && ( +
{contractName}
+ )} +
{message}
+ {chain?.blockExplorers?.default.url && showClickToExplorer && ( +
+ Click to see in {chain.blockExplorers.default.name} +
+ )}
); From e8334f61ca251b71e8860e4e224416f6b9af16eb Mon Sep 17 00:00:00 2001 From: rperez89 Date: Wed, 24 Jul 2024 14:27:21 -0300 Subject: [PATCH 18/23] new factory address --- apps/web/package.json | 2 +- pkg/subgraph/config/localhost.json | 2 +- pkg/subgraph/subgraph.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/web/package.json b/apps/web/package.json index fdddef420..d5e120d30 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -12,7 +12,7 @@ "query-all-scorer": "curl -X GET http://localhost:3000/api/passport/scores", "get-sign-message": "curl -X GET http://localhost:3000/api/passport/signMessage", "add-user-score": "curl -X POST http://localhost:3000/api/passport-oracle/writeScore -H 'Content-Type: application/json' -d '{\"user\":\"0x584ddfb0bdd922ff1fbf3e85e7e781d5816b4f23\"}'", - "add-strategy": "curl -X POST http://localhost:3000/api/passport-oracle/addStrategy -H 'Content-Type: application/json' -d '{\"strategy\":\"0x4741b56dda17121054f6e286eefa2518f44f2b11\",\"threshold\":\"200000\"}'", + "add-strategy": "curl -X POST http://localhost:3000/api/passport-oracle/addStrategy -H 'Content-Type: application/json' -d '{\"strategy\":\"0xa35600e7592e00f23a8220b3d9add0e7de049158\",\"threshold\":\"200000\"}'", "daily-job": "curl -X GET http://localhost:3000/api/passport-oracle/dailyJob" }, "dependencies": { diff --git a/pkg/subgraph/config/localhost.json b/pkg/subgraph/config/localhost.json index 45d2d8d6e..75c7960d2 100644 --- a/pkg/subgraph/config/localhost.json +++ b/pkg/subgraph/config/localhost.json @@ -5,7 +5,7 @@ { "name": "RegistryFactory", "startBlock": 0, - "address": "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "address": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", "customTemplate": "registryFactory" }, { diff --git a/pkg/subgraph/subgraph.yaml b/pkg/subgraph/subgraph.yaml index fd3563531..8f0c2f2d9 100644 --- a/pkg/subgraph/subgraph.yaml +++ b/pkg/subgraph/subgraph.yaml @@ -12,7 +12,7 @@ dataSources: type: Int data: 1337 source: - address: "0x0165878A594ca255338adfa4d48449f69242Eb8F" + address: "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" abi: RegistryFactory startBlock: 0 mapping: From 50d6994b852623599aed315c85608bca89b1650a Mon Sep 17 00:00:00 2001 From: rperez89 Date: Wed, 24 Jul 2024 16:07:13 -0300 Subject: [PATCH 19/23] add strategy vulnerability --- pkg/contracts/out/PassportScorer.sol/PassportScorer.json | 2 +- .../out/PassportScorerTest.t.sol/PassportScorerTest.json | 2 +- pkg/contracts/src/PassportScorer.sol | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pkg/contracts/out/PassportScorer.sol/PassportScorer.json b/pkg/contracts/out/PassportScorer.sol/PassportScorer.json index c2797a07e..888173ee1 100644 --- a/pkg/contracts/out/PassportScorer.sol/PassportScorer.json +++ b/pkg/contracts/out/PassportScorer.sol/PassportScorer.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"activateStrategy","inputs":[{"name":"_strategy","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addStrategy","inputs":[{"name":"_strategy","type":"address","internalType":"address"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_councilSafe","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addUserScore","inputs":[{"name":"_user","type":"address","internalType":"address"},{"name":"_passportData","type":"tuple","internalType":"struct PassportData","components":[{"name":"score","type":"uint256","internalType":"uint256"},{"name":"lastUpdated","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canExecuteAction","inputs":[{"name":"_user","type":"address","internalType":"address"},{"name":"_strategy","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"changeListManager","inputs":[{"name":"_newManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getStrategy","inputs":[{"name":"_strategy","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Strategy","components":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"active","type":"bool","internalType":"bool"},{"name":"councilSafe","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"getUserScore","inputs":[{"name":"_user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PassportData","components":[{"name":"score","type":"uint256","internalType":"uint256"},{"name":"lastUpdated","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_listManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"listManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"modifyThreshold","inputs":[{"name":"_strategy","type":"address","internalType":"address"},{"name":"_newThreshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"removeStrategy","inputs":[{"name":"_strategy","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeUser","inputs":[{"name":"_user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"strategies","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"active","type":"bool","internalType":"bool"},{"name":"councilSafe","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"userScores","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"score","type":"uint256","internalType":"uint256"},{"name":"lastUpdated","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"ListManagerChanged","inputs":[{"name":"oldManager","type":"address","indexed":true,"internalType":"address"},{"name":"newManager","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyActivated","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyAdded","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"},{"name":"threshold","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"active","type":"bool","indexed":false,"internalType":"bool"},{"name":"councilSafe","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyRemoved","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ThresholdModified","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"},{"name":"newThreshold","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UserRemoved","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UserScoreAdded","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"score","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lastUpdated","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"OnlyAuthorized","inputs":[]},{"type":"error","name":"OnlyCouncil","inputs":[]},{"type":"error","name":"OnlyCouncilOrAuthorized","inputs":[]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60a06040523060805234801561001457600080fd5b50608051611a0961004c60003960008181610656015281816106e0015281816108ce015281816109530152610a390152611a096000f3fe60806040526004361061015f5760003560e01c80637814d568116100c0578063c4d66de811610074578063f2fde38b11610059578063f2fde38b14610469578063f8806a1314610489578063fc2ebdd11461052f57600080fd5b8063c4d66de814610429578063d80ea5a01461044957600080fd5b80638df8b2fe116100a55780638df8b2fe1461036c578063985751881461038c578063b34e0c47146103ac57600080fd5b80637814d5681461031a5780638da5cb5b1461033a57600080fd5b806342a987a01161011757806352d1902d116100fc57806352d1902d146102c2578063642ce76b146102e5578063715018a61461030557600080fd5b806342a987a01461027f5780634f1ef286146102af57600080fd5b80633659cfe6116101485780633659cfe6146101d457806339ebf823146101f45780633d4768301461025f57600080fd5b80631413d4c014610164578063175188e8146101b2575b600080fd5b34801561017057600080fd5b5061019861017f3660046116f3565b6066602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b3480156101be57600080fd5b506101d26101cd3660046116f3565b61054f565b005b3480156101e057600080fd5b506101d26101ef3660046116f3565b61064c565b34801561020057600080fd5b5061023b61020f3660046116f3565b6067602052600090815260409020805460019091015460ff81169061010090046001600160a01b031683565b6040805193845291151560208401526001600160a01b0316908201526060016101a9565b34801561026b57600080fd5b506101d261027a3660046116f3565b6107cc565b34801561028b57600080fd5b5061029f61029a36600461170e565b61083c565b60405190151581526020016101a9565b6101d26102bd3660046117a1565b6108c4565b3480156102ce57600080fd5b506102d7610a2c565b6040519081526020016101a9565b3480156102f157600080fd5b506101d2610300366004611847565b610af1565b34801561031157600080fd5b506101d2610bc6565b34801561032657600080fd5b506101d2610335366004611871565b610bda565b34801561034657600080fd5b506033546001600160a01b03165b6040516001600160a01b0390911681526020016101a9565b34801561037857600080fd5b50606554610354906001600160a01b031681565b34801561039857600080fd5b506101d26103a73660046116f3565b610ca2565b3480156103b857600080fd5b5061040e6103c73660046116f3565b6040805180820190915260008082526020820152506001600160a01b0316600090815260666020908152604091829020825180840190935280548352600101549082015290565b604080518251815260209283015192810192909252016101a9565b34801561043557600080fd5b506101d26104443660046116f3565b610d1d565b34801561045557600080fd5b506101d26104643660046116f3565b610e6e565b34801561047557600080fd5b506101d26104843660046116f3565b610f27565b34801561049557600080fd5b506105026104a43660046116f3565b6040805160608082018352600080835260208084018290529284018190526001600160a01b0394851681526067835283902083519182018452805482526001015460ff81161515928201929092526101009091049092169082015290565b6040805182518152602080840151151590820152918101516001600160a01b0316908201526060016101a9565b34801561053b57600080fd5b506101d261054a3660046118e4565b610fb4565b806105626033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061058b57506065546001600160a01b031633145b806105b757506001600160a01b0381811660009081526067602052604090206001015461010090041633145b15610616576105c5826110ca565b6001600160a01b03821660008181526067602052604080822060018101805460ff19169055829055517f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea49190a25050565b6040517fe3b6914b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106de5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107397f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107a45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b6107ad8161110a565b604080516000808252602082019092526107c991839190611112565b50565b6107d46112b2565b6107dd816110ca565b606580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f5117c6c457d7b27a4cb68df40b118f157ac1f1ba81f8a571d189f829d74fbc8690600090a35050565b6001600160a01b03808316600090815260666020908152604080832081518083018352815481526001918201548185015286861685526067845282852083516060810185528154815292015460ff81161515948301859052610100900490951691810191909152919291906108b6576001925050506108be565b519051101590505b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109515760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016106d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109ac7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610a175760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b610a208261110a565b61064882826001611112565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610acc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d5565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b81610b046033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610b2d57506065546001600160a01b031633145b80610b5957506001600160a01b0381811660009081526067602052604090206001015461010090041633145b1561061657610b67836110ca565b6001600160a01b03831660008181526067602052604090819020849055517f40ba4d5d9facd2fda74e22251d1638576e05a30482470363c7c87a7b5b298c0990610bb49085815260200190565b60405180910390a2505050565b505050565b610bce6112b2565b610bd8600061130c565b565b6033546001600160a01b0316331480610bfd57506065546001600160a01b031633145b15610c7057610c0b826110ca565b6001600160a01b03821660008181526066602090815260409182902084518082558583015160019092018290558351908152918201527f1e0ca12706807bceff25136f95fe6f69c1319c044f6073e6056a287e4f541b1d910160405180910390a25050565b6040517f7d7b71b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033546001600160a01b0316331480610cc557506065546001600160a01b031633145b15610c7057610cd3816110ca565b6001600160a01b038116600081815260666020526040808220828155600101829055517fe9dce8c992623ce791725b21e857e33248d1f190a25b5168313420eebdaae99d9190a250565b600054610100900460ff1615808015610d3d5750600054600160ff909116105b80610d575750303b158015610d57575060005460ff166001145b610dc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106d5565b6000805460ff191660011790558015610dec576000805461ff0019166101001790555b610df461136b565b610dfd826110ca565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790558015610648576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6001600160a01b038082166000908152606760205260409020600101548291610100909104163303610ef557610ea3826110ca565b6001600160a01b0382166000818152606760205260408082206001908101805460ff19169091179055517f652f053fc39779b70b29678135ade972fcb79966fc68fcb77c996b1aa4fd9afb9190a25050565b6040517f97ffbac900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2f6112b2565b6001600160a01b038116610fab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106d5565b6107c98161130c565b6033546001600160a01b0316331480610fd757506065546001600160a01b031633145b15610c7057610fe5836110ca565b610fee816110ca565b6040805160608082018352848252600060208084018281526001600160a01b038781168688018181528b831680875260678652898720985189559351600190980180549151909316610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff981515989098167fffffffffffffffffffffff000000000000000000000000000000000000000000909116179690961790558551888152918201929092529384019290925290917f9b1a157188de9a0bd2e7995d72aaba244d9bd012ddf3ae3d4f492135175070cb9101610bb4565b6001600160a01b0381166107c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c96112b2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561114557610bc1836113de565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561119f575060408051601f3d908101601f1916820190925261119c91810190611920565b60015b6112115760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146112a65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016106d5565b50610bc18383836114a9565b6033546001600160a01b03163314610bd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d5565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166113d65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd86114d4565b6001600160a01b0381163b61145b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6114b283611548565b6000825111806114bf5750805b15610bc1576114ce8383611588565b50505050565b600054610100900460ff1661153f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd83361130c565b611551816113de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606115ad83836040518060600160405280602781526020016119ad602791396115b4565b9392505050565b6060600080856001600160a01b0316856040516115d1919061195d565b600060405180830381855af49150503d806000811461160c576040519150601f19603f3d011682016040523d82523d6000602084013e611611565b606091505b50915091506116228683838761162c565b9695505050505050565b6060831561169b578251600003611694576001600160a01b0385163b6116945760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d5565b50816116a5565b6116a583836116ad565b949350505050565b8151156116bd5781518083602001fd5b8060405162461bcd60e51b81526004016106d59190611979565b80356001600160a01b03811681146116ee57600080fd5b919050565b60006020828403121561170557600080fd5b6115ad826116d7565b6000806040838503121561172157600080fd5b61172a836116d7565b9150611738602084016116d7565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561179957611799611741565b604052919050565b600080604083850312156117b457600080fd5b6117bd836116d7565b915060208084013567ffffffffffffffff808211156117db57600080fd5b818601915086601f8301126117ef57600080fd5b81358181111561180157611801611741565b611813601f8201601f19168501611770565b9150808252878482850101111561182957600080fd5b80848401858401376000848284010152508093505050509250929050565b6000806040838503121561185a57600080fd5b611863836116d7565b946020939093013593505050565b600080828403606081121561188557600080fd5b61188e846116d7565b92506040601f19820112156118a257600080fd5b506040516040810181811067ffffffffffffffff821117156118c6576118c6611741565b60409081526020858101358352940135938101939093525092909150565b6000806000606084860312156118f957600080fd5b611902846116d7565b925060208401359150611917604085016116d7565b90509250925092565b60006020828403121561193257600080fd5b5051919050565b60005b8381101561195457818101518382015260200161193c565b50506000910152565b6000825161196f818460208701611939565b9190910192915050565b6020815260008251806020840152611998816040850160208701611939565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a8f6eaeb366c5c8c5c3a1820871dc36dd3bc338983f0986a24053dc142f66b3564736f6c63430008130033","sourceMap":"452:5628:117:-:0;;;1088:4:66;1045:48;;452:5628:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061015f5760003560e01c80637814d568116100c0578063c4d66de811610074578063f2fde38b11610059578063f2fde38b14610469578063f8806a1314610489578063fc2ebdd11461052f57600080fd5b8063c4d66de814610429578063d80ea5a01461044957600080fd5b80638df8b2fe116100a55780638df8b2fe1461036c578063985751881461038c578063b34e0c47146103ac57600080fd5b80637814d5681461031a5780638da5cb5b1461033a57600080fd5b806342a987a01161011757806352d1902d116100fc57806352d1902d146102c2578063642ce76b146102e5578063715018a61461030557600080fd5b806342a987a01461027f5780634f1ef286146102af57600080fd5b80633659cfe6116101485780633659cfe6146101d457806339ebf823146101f45780633d4768301461025f57600080fd5b80631413d4c014610164578063175188e8146101b2575b600080fd5b34801561017057600080fd5b5061019861017f3660046116f3565b6066602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b3480156101be57600080fd5b506101d26101cd3660046116f3565b61054f565b005b3480156101e057600080fd5b506101d26101ef3660046116f3565b61064c565b34801561020057600080fd5b5061023b61020f3660046116f3565b6067602052600090815260409020805460019091015460ff81169061010090046001600160a01b031683565b6040805193845291151560208401526001600160a01b0316908201526060016101a9565b34801561026b57600080fd5b506101d261027a3660046116f3565b6107cc565b34801561028b57600080fd5b5061029f61029a36600461170e565b61083c565b60405190151581526020016101a9565b6101d26102bd3660046117a1565b6108c4565b3480156102ce57600080fd5b506102d7610a2c565b6040519081526020016101a9565b3480156102f157600080fd5b506101d2610300366004611847565b610af1565b34801561031157600080fd5b506101d2610bc6565b34801561032657600080fd5b506101d2610335366004611871565b610bda565b34801561034657600080fd5b506033546001600160a01b03165b6040516001600160a01b0390911681526020016101a9565b34801561037857600080fd5b50606554610354906001600160a01b031681565b34801561039857600080fd5b506101d26103a73660046116f3565b610ca2565b3480156103b857600080fd5b5061040e6103c73660046116f3565b6040805180820190915260008082526020820152506001600160a01b0316600090815260666020908152604091829020825180840190935280548352600101549082015290565b604080518251815260209283015192810192909252016101a9565b34801561043557600080fd5b506101d26104443660046116f3565b610d1d565b34801561045557600080fd5b506101d26104643660046116f3565b610e6e565b34801561047557600080fd5b506101d26104843660046116f3565b610f27565b34801561049557600080fd5b506105026104a43660046116f3565b6040805160608082018352600080835260208084018290529284018190526001600160a01b0394851681526067835283902083519182018452805482526001015460ff81161515928201929092526101009091049092169082015290565b6040805182518152602080840151151590820152918101516001600160a01b0316908201526060016101a9565b34801561053b57600080fd5b506101d261054a3660046118e4565b610fb4565b806105626033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061058b57506065546001600160a01b031633145b806105b757506001600160a01b0381811660009081526067602052604090206001015461010090041633145b15610616576105c5826110ca565b6001600160a01b03821660008181526067602052604080822060018101805460ff19169055829055517f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea49190a25050565b6040517fe3b6914b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106de5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107397f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107a45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b6107ad8161110a565b604080516000808252602082019092526107c991839190611112565b50565b6107d46112b2565b6107dd816110ca565b606580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f5117c6c457d7b27a4cb68df40b118f157ac1f1ba81f8a571d189f829d74fbc8690600090a35050565b6001600160a01b03808316600090815260666020908152604080832081518083018352815481526001918201548185015286861685526067845282852083516060810185528154815292015460ff81161515948301859052610100900490951691810191909152919291906108b6576001925050506108be565b519051101590505b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109515760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016106d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109ac7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610a175760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b610a208261110a565b61064882826001611112565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610acc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d5565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b81610b046033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610b2d57506065546001600160a01b031633145b80610b5957506001600160a01b0381811660009081526067602052604090206001015461010090041633145b1561061657610b67836110ca565b6001600160a01b03831660008181526067602052604090819020849055517f40ba4d5d9facd2fda74e22251d1638576e05a30482470363c7c87a7b5b298c0990610bb49085815260200190565b60405180910390a2505050565b505050565b610bce6112b2565b610bd8600061130c565b565b6033546001600160a01b0316331480610bfd57506065546001600160a01b031633145b15610c7057610c0b826110ca565b6001600160a01b03821660008181526066602090815260409182902084518082558583015160019092018290558351908152918201527f1e0ca12706807bceff25136f95fe6f69c1319c044f6073e6056a287e4f541b1d910160405180910390a25050565b6040517f7d7b71b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033546001600160a01b0316331480610cc557506065546001600160a01b031633145b15610c7057610cd3816110ca565b6001600160a01b038116600081815260666020526040808220828155600101829055517fe9dce8c992623ce791725b21e857e33248d1f190a25b5168313420eebdaae99d9190a250565b600054610100900460ff1615808015610d3d5750600054600160ff909116105b80610d575750303b158015610d57575060005460ff166001145b610dc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106d5565b6000805460ff191660011790558015610dec576000805461ff0019166101001790555b610df461136b565b610dfd826110ca565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790558015610648576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6001600160a01b038082166000908152606760205260409020600101548291610100909104163303610ef557610ea3826110ca565b6001600160a01b0382166000818152606760205260408082206001908101805460ff19169091179055517f652f053fc39779b70b29678135ade972fcb79966fc68fcb77c996b1aa4fd9afb9190a25050565b6040517f97ffbac900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2f6112b2565b6001600160a01b038116610fab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106d5565b6107c98161130c565b6033546001600160a01b0316331480610fd757506065546001600160a01b031633145b15610c7057610fe5836110ca565b610fee816110ca565b6040805160608082018352848252600060208084018281526001600160a01b038781168688018181528b831680875260678652898720985189559351600190980180549151909316610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff981515989098167fffffffffffffffffffffff000000000000000000000000000000000000000000909116179690961790558551888152918201929092529384019290925290917f9b1a157188de9a0bd2e7995d72aaba244d9bd012ddf3ae3d4f492135175070cb9101610bb4565b6001600160a01b0381166107c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c96112b2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561114557610bc1836113de565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561119f575060408051601f3d908101601f1916820190925261119c91810190611920565b60015b6112115760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146112a65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016106d5565b50610bc18383836114a9565b6033546001600160a01b03163314610bd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d5565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166113d65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd86114d4565b6001600160a01b0381163b61145b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6114b283611548565b6000825111806114bf5750805b15610bc1576114ce8383611588565b50505050565b600054610100900460ff1661153f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd83361130c565b611551816113de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606115ad83836040518060600160405280602781526020016119ad602791396115b4565b9392505050565b6060600080856001600160a01b0316856040516115d1919061195d565b600060405180830381855af49150503d806000811461160c576040519150601f19603f3d011682016040523d82523d6000602084013e611611565b606091505b50915091506116228683838761162c565b9695505050505050565b6060831561169b578251600003611694576001600160a01b0385163b6116945760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d5565b50816116a5565b6116a583836116ad565b949350505050565b8151156116bd5781518083602001fd5b8060405162461bcd60e51b81526004016106d59190611979565b80356001600160a01b03811681146116ee57600080fd5b919050565b60006020828403121561170557600080fd5b6115ad826116d7565b6000806040838503121561172157600080fd5b61172a836116d7565b9150611738602084016116d7565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561179957611799611741565b604052919050565b600080604083850312156117b457600080fd5b6117bd836116d7565b915060208084013567ffffffffffffffff808211156117db57600080fd5b818601915086601f8301126117ef57600080fd5b81358181111561180157611801611741565b611813601f8201601f19168501611770565b9150808252878482850101111561182957600080fd5b80848401858401376000848284010152508093505050509250929050565b6000806040838503121561185a57600080fd5b611863836116d7565b946020939093013593505050565b600080828403606081121561188557600080fd5b61188e846116d7565b92506040601f19820112156118a257600080fd5b506040516040810181811067ffffffffffffffff821117156118c6576118c6611741565b60409081526020858101358352940135938101939093525092909150565b6000806000606084860312156118f957600080fd5b611902846116d7565b925060208401359150611917604085016116d7565b90509250925092565b60006020828403121561193257600080fd5b5051919050565b60005b8381101561195457818101518382015260200161193c565b50506000910152565b6000825161196f818460208701611939565b9190910192915050565b6020815260008251806020840152611998816040850160208701611939565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a8f6eaeb366c5c8c5c3a1820871dc36dd3bc338983f0986a24053dc142f66b3564736f6c63430008130033","sourceMap":"452:5628:117:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;583:50;;;;;;;;;;-1:-1:-1;583:50:117;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;580:25:128;;;636:2;621:18;;614:34;;;;553:18;583:50:117;;;;;;;;3995:274;;;;;;;;;;-1:-1:-1;3995:274:117;;;;;:::i;:::-;;:::i;:::-;;3143:195:66;;;;;;;;;;-1:-1:-1;3143:195:66;;;;;:::i;:::-;;:::i;639:46:117:-;;;;;;;;;;-1:-1:-1;639:46:117;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;639:46:117;;;;;;;855:25:128;;;923:14;;916:22;911:2;896:18;;889:50;-1:-1:-1;;;;;975:55:128;955:18;;;948:83;843:2;828:18;639:46:117;659:378:128;3133:259:117;;;;;;;;;;-1:-1:-1;3133:259:117;;;;;:::i;:::-;;:::i;5216:345::-;;;;;;;;;;-1:-1:-1;5216:345:117;;;;;:::i;:::-;;:::i;:::-;;;1472:14:128;;1465:22;1447:41;;1435:2;1420:18;5216:345:117;1307:187:128;3657:220:66;;;;;;:::i;:::-;;:::i;2762:131::-;;;;;;;;;;;;;:::i;:::-;;;2956:25:128;;;2944:2;2929:18;2762:131:66;2810:177:128;4779:272:117;;;;;;;;;;-1:-1:-1;4779:272:117;;;;;:::i;:::-;;:::i;2064:101:14:-;;;;;;;;;;;;;:::i;2468:274:117:-;;;;;;;;;;-1:-1:-1;2468:274:117;;;;;:::i;:::-;;:::i;1441:85:14:-;;;;;;;;;;-1:-1:-1;1513:6:14;;-1:-1:-1;;;;;1513:6:14;1441:85;;;-1:-1:-1;;;;;4089:55:128;;;4071:74;;4059:2;4044:18;1441:85:14;3925:226:128;550:26:117;;;;;;;;;;-1:-1:-1;550:26:117;;;;-1:-1:-1;;;;;550:26:117;;;2843:177;;;;;;;;;;-1:-1:-1;2843:177:117;;;;;:::i;:::-;;:::i;5657:122::-;;;;;;;;;;-1:-1:-1;5657:122:117;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;5755:17:117;;;;;:10;:17;;;;;;;;;5748:24;;;;;;;;;;;;;;;;;;;;5657:122;;;;;4382:13:128;;4364:32;;4452:4;4440:17;;;4434:24;4412:20;;;4405:54;;;;4337:18;5657:122:117;4156:309:128;2113:172:117;;;;;;;;;;-1:-1:-1;2113:172:117;;;;;:::i;:::-;;:::i;4372:211::-;;;;;;;;;;-1:-1:-1;4372:211:117;;;;;:::i;:::-;;:::i;2314:198:14:-;;;;;;;;;;-1:-1:-1;2314:198:14;;;;;:::i;:::-;;:::i;5881:125:117:-;;;;;;;;;;-1:-1:-1;5881:125:117;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5978:21:117;;;;;:10;:21;;;;;5971:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5881:125;;;;;4688:13:128;;4670:32;;4772:4;4760:17;;;4754:24;4747:32;4740:40;4718:20;;;4711:70;4829:17;;;4823:24;-1:-1:-1;;;;;4819:73:128;4797:20;;;4790:103;4658:2;4643:18;5881:125:117;4470:429:128;3503:375:117;;;;;;;;;;-1:-1:-1;3503:375:117;;;;;:::i;:::-;;:::i;3995:274::-;4080:9;1577:7;1513:6:14;;-1:-1:-1;;;;;1513:6:14;;1441:85;1577:7:117;-1:-1:-1;;;;;1563:21:117;:10;-1:-1:-1;;;;;1563:21:117;;:50;;;-1:-1:-1;1602:11:117;;-1:-1:-1;;;;;1602:11:117;1588:10;:25;1563:50;:101;;;-1:-1:-1;;;;;;1631:21:117;;;;;;;:10;:21;;;;;:33;;;;;;;1617:10;:47;1563:101;1559:196;;;4101:29:::1;4120:9;4101:18;:29::i;:::-;-1:-1:-1::0;;;;;4140:21:117;::::1;4171:5;4140:21:::0;;;:10:::1;:21;::::0;;;;;:28:::1;::::0;::::1;:36:::0;;-1:-1:-1;;4140:36:117::1;::::0;;4186:35;;;4236:26;::::1;::::0;4171:5;4236:26:::1;3995:274:::0;;:::o;1559:196::-;1719:25;;;;;;;;;;;;;;1559:196;3995:274;;:::o;3143:195:66:-;-1:-1:-1;;;;;1654:6:66;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:66;;5439:2:128;1629:80:66;;;5421:21:128;5478:2;5458:18;;;5451:30;5517:34;5497:18;;;5490:62;-1:-1:-1;;;5568:18:128;;;5561:42;5620:19;;1629:80:66;;;;;;;;;1751:6;-1:-1:-1;;;;;1727:30:66;:20;1030:66:64;1254:54;-1:-1:-1;;;;;1254:54:64;;1175:140;1727:20:66;-1:-1:-1;;;;;1727:30:66;;1719:87;;;;-1:-1:-1;;;1719:87:66;;5852:2:128;1719:87:66;;;5834:21:128;5891:2;5871:18;;;5864:30;5930:34;5910:18;;;5903:62;-1:-1:-1;;;5981:18:128;;;5974:42;6033:19;;1719:87:66;5650:408:128;1719:87:66;3224:36:::1;3242:17;3224;:36::i;:::-;3311:12;::::0;;3321:1:::1;3311:12:::0;;;::::1;::::0;::::1;::::0;;;3270:61:::1;::::0;3292:17;;3311:12;3270:21:::1;:61::i;:::-;3143:195:::0;:::o;3133:259:117:-;1334:13:14;:11;:13::i;:::-;3219:31:117::1;3238:11;3219:18;:31::i;:::-;3281:11;::::0;;-1:-1:-1;;;;;3302:25:117;;::::1;-1:-1:-1::0;;3302:25:117;::::1;::::0;::::1;::::0;;;3342:43:::1;::::0;3281:11;::::1;::::0;3302:25;3281:11;;3342:43:::1;::::0;3260:18:::1;::::0;3342:43:::1;3209:183;3133:259:::0;:::o;5216:345::-;-1:-1:-1;;;;;5356:17:117;;;5308:4;5356:17;;;:10;:17;;;;;;;;5324:49;;;;;;;;;;;;;;;;;;;;5410:21;;;;;:10;:21;;;;;5383:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5308:4;;5324:49;5383:48;5442:58;;5485:4;5478:11;;;;;;5442:58;5536:18;5517:15;;:37;;;-1:-1:-1;5216:345:117;;;;;:::o;3657:220:66:-;-1:-1:-1;;;;;1654:6:66;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:66;;5439:2:128;1629:80:66;;;5421:21:128;5478:2;5458:18;;;5451:30;5517:34;5497:18;;;5490:62;-1:-1:-1;;;5568:18:128;;;5561:42;5620:19;;1629:80:66;5237:408:128;1629:80:66;1751:6;-1:-1:-1;;;;;1727:30:66;:20;1030:66:64;1254:54;-1:-1:-1;;;;;1254:54:64;;1175:140;1727:20:66;-1:-1:-1;;;;;1727:30:66;;1719:87;;;;-1:-1:-1;;;1719:87:66;;5852:2:128;1719:87:66;;;5834:21:128;5891:2;5871:18;;;5864:30;5930:34;5910:18;;;5903:62;-1:-1:-1;;;5981:18:128;;;5974:42;6033:19;;1719:87:66;5650:408:128;1719:87:66;3772:36:::1;3790:17;3772;:36::i;:::-;3818:52;3840:17;3859:4;3865;3818:21;:52::i;2762:131::-:0;2840:7;2080:4;-1:-1:-1;;;;;2089:6:66;2072:23;;2064:92;;;;-1:-1:-1;;;2064:92:66;;6265:2:128;2064:92:66;;;6247:21:128;6304:2;6284:18;;;6277:30;6343:34;6323:18;;;6316:62;6414:26;6394:18;;;6387:54;6458:19;;2064:92:66;6063:420:128;2064:92:66;-1:-1:-1;1030:66:64::1;2762:131:66::0;:::o;4779:272:117:-;4879:9;1577:7;1513:6:14;;-1:-1:-1;;;;;1513:6:14;;1441:85;1577:7:117;-1:-1:-1;;;;;1563:21:117;:10;-1:-1:-1;;;;;1563:21:117;;:50;;;-1:-1:-1;1602:11:117;;-1:-1:-1;;;;;1602:11:117;1588:10;:25;1563:50;:101;;;-1:-1:-1;;;;;;1631:21:117;;;;;;;:10;:21;;;;;:33;;;;;;;1617:10;:47;1563:101;1559:196;;;4900:29:::1;4919:9;4900:18;:29::i;:::-;-1:-1:-1::0;;;;;4939:21:117;::::1;;::::0;;;:10:::1;:21;::::0;;;;;;:47;;;5001:43;::::1;::::0;::::1;::::0;4973:13;2956:25:128;;2944:2;2929:18;;2810:177;5001:43:117::1;;;;;;;;4779:272:::0;;;:::o;1559:196::-;4779:272;;;:::o;2064:101:14:-;1334:13;:11;:13::i;:::-;2128:30:::1;2155:1;2128:18;:30::i;:::-;2064:101::o:0;2468:274:117:-;1513:6:14;;-1:-1:-1;;;;;1513:6:14;1353:10:117;:21;;:50;;-1:-1:-1;1392:11:117;;-1:-1:-1;;;;;1392:11:117;1378:10;:25;1353:50;1349:136;;;2583:25:::1;2602:5;2583:18;:25::i;:::-;-1:-1:-1::0;;;;;2618:17:117;::::1;;::::0;;;:10:::1;:17;::::0;;;;;;;;:33;;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;2666:69;;580:25:128;;;621:18;;;614:34;2666:69:117::1;::::0;553:18:128;2666:69:117::1;;;;;;;3995:274:::0;;:::o;1349:136::-;1458:16;;;;;;;;;;;;;;2843:177;1513:6:14;;-1:-1:-1;;;;;1513:6:14;1353:10:117;:21;;:50;;-1:-1:-1;1392:11:117;;-1:-1:-1;;;;;1392:11:117;1378:10;:25;1353:50;1349:136;;;2921:25:::1;2940:5;2921:18;:25::i;:::-;-1:-1:-1::0;;;;;2963:17:117;::::1;;::::0;;;:10:::1;:17;::::0;;;;;2956:24;;;::::1;;::::0;;;2995:18;::::1;::::0;2963:17;2995:18:::1;3143:195:66::0;:::o;2113:172:117:-;3279:19:16;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:16;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:16;1713:19:19;:23;;;3387:66:16;;-1:-1:-1;3436:12:16;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:16;;6872:2:128;3325:201:16;;;6854:21:128;6911:2;6891:18;;;6884:30;6950:34;6930:18;;;6923:62;7021:16;7001:18;;;6994:44;7055:19;;3325:201:16;6670:410:128;3325:201:16;3536:12;:16;;-1:-1:-1;;3536:16:16;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:16;;;;;3562:65;2184:16:117::1;:14;:16::i;:::-;2210:32;2229:12;2210:18;:32::i;:::-;2252:11;:26:::0;;-1:-1:-1;;2252:26:117::1;-1:-1:-1::0;;;;;2252:26:117;::::1;;::::0;;3647:99:16;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:16;;;3721:14;;-1:-1:-1;7237:36:128;;3721:14:16;;7225:2:128;7210:18;3721:14:16;;;;;;;3269:483;2113:172:117;:::o;4372:211::-;-1:-1:-1;;;;;1835:21:117;;;;;;;:10;:21;;;;;:33;;;4438:9;;1835:33;;;;;1821:10;:47;1817:130;;4459:29:::1;4478:9;4459:18;:29::i;:::-;-1:-1:-1::0;;;;;4498:21:117;::::1;;::::0;;;:10:::1;:21;::::0;;;;;4529:4:::1;4498:28:::0;;::::1;:35:::0;;-1:-1:-1;;4498:35:117::1;::::0;;::::1;::::0;;4548:28;::::1;::::0;4498:21;4548:28:::1;3995:274:::0;;:::o;1817:130::-;1923:13;;;;;;;;;;;;;;2314:198:14;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2402:22:14;::::1;2394:73;;;::::0;-1:-1:-1;;;2394:73:14;;7486:2:128;2394:73:14::1;::::0;::::1;7468:21:128::0;7525:2;7505:18;;;7498:30;7564:34;7544:18;;;7537:62;7635:8;7615:18;;;7608:36;7661:19;;2394:73:14::1;7284:402:128::0;2394:73:14::1;2477:28;2496:8;2477:18;:28::i;3503:375:117:-:0;1513:6:14;;-1:-1:-1;;;;;1513:6:14;1353:10:117;:21;;:50;;-1:-1:-1;1392:11:117;;-1:-1:-1;;;;;1392:11:117;1378:10;:25;1353:50;1349:136;;;3619:29:::1;3638:9;3619:18;:29::i;:::-;3658:32;3677:12;3658:18;:32::i;:::-;3724:75;::::0;;::::1;::::0;;::::1;::::0;;;;;-1:-1:-1;3724:75:117::1;::::0;;::::1;::::0;;;-1:-1:-1;;;;;3724:75:117;;::::1;::::0;;;;;;3700:21;;::::1;::::0;;;:10:::1;:21:::0;;;;;:99;;;;;;3724:75;3700:99;;::::1;::::0;;;;;;::::1;;;::::0;;::::1;;::::0;;;;;;;;;;;;::::1;::::0;;3814:57;;855:25:128;;;896:18;;;889:50;;;;955:18;;;948:83;;;;3700:21:117;;3814:57:::1;::::0;828:18:128;3814:57:117::1;659:378:128::0;1959:148:117;-1:-1:-1;;;;;2032:22:117;;2028:73;;2077:13;;;;;;;;;;;;;;6012:66;1334:13:14;:11;:13::i;2494:922:64:-;689:66;2910:48;;;2906:504;;;2974:37;2993:17;2974:18;:37::i;2906:504::-;3064:17;-1:-1:-1;;;;;3046:50:64;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3046:52:64;;;;;;;;-1:-1:-1;;3046:52:64;;;;;;;;;;;;:::i;:::-;;;3042:291;;3262:56;;-1:-1:-1;;;3262:56:64;;8082:2:128;3262:56:64;;;8064:21:128;8121:2;8101:18;;;8094:30;8160:34;8140:18;;;8133:62;8231:16;8211:18;;;8204:44;8265:19;;3262:56:64;7880:410:128;3042:291:64;1030:66;3148:28;;3140:82;;;;-1:-1:-1;;;3140:82:64;;8497:2:128;3140:82:64;;;8479:21:128;8536:2;8516:18;;;8509:30;8575:34;8555:18;;;8548:62;8646:11;8626:18;;;8619:39;8675:19;;3140:82:64;8295:405:128;3140:82:64;3099:138;3346:53;3364:17;3383:4;3389:9;3346:17;:53::i;1599:130:14:-;1513:6;;-1:-1:-1;;;;;1513:6:14;929:10:20;1662:23:14;1654:68;;;;-1:-1:-1;;;1654:68:14;;8907:2:128;1654:68:14;;;8889:21:128;;;8926:18;;;8919:30;8985:34;8965:18;;;8958:62;9037:18;;1654:68:14;8705:356:128;2666:187:14;2758:6;;;-1:-1:-1;;;;;2774:17:14;;;-1:-1:-1;;2774:17:14;;;;;;;2806:40;;2758:6;;;2774:17;2758:6;;2806:40;;2739:16;;2806:40;2729:124;2666:187;:::o;1003:95::-;5374:13:16;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:16;;9268:2:128;5366:69:16;;;9250:21:128;9307:2;9287:18;;;9280:30;9346:34;9326:18;;;9319:62;-1:-1:-1;;;9397:18:128;;;9390:41;9448:19;;5366:69:16;9066:407:128;5366:69:16;1065:26:14::1;:24;:26::i;1406:259:64:-:0;-1:-1:-1;;;;;1713:19:19;;;1479:95:64;;;;-1:-1:-1;;;1479:95:64;;9680:2:128;1479:95:64;;;9662:21:128;9719:2;9699:18;;;9692:30;9758:34;9738:18;;;9731:62;9829:15;9809:18;;;9802:43;9862:19;;1479:95:64;9478:409:128;1479:95:64;1030:66;1584:74;;-1:-1:-1;;1584:74:64;-1:-1:-1;;;;;1584:74:64;;;;;;;;;;1406:259::o;2057:265::-;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;:53::i;:::-;;2057:265;;;:::o;1104:111:14:-;5374:13:16;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:16;;9268:2:128;5366:69:16;;;9250:21:128;9307:2;9287:18;;;9280:30;9346:34;9326:18;;;9319:62;-1:-1:-1;;;9397:18:128;;;9390:41;9448:19;;5366:69:16;9066:407:128;5366:69:16;1176:32:14::1;929:10:20::0;1176:18:14::1;:32::i;1771:152:64:-:0;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:64;;;;;;;;1771:152;:::o;6674:198:78:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:78:o;7058:325::-;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:78;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:78:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1713:19:19;;;8113:60:78;;;;-1:-1:-1;;;8113:60:78;;10641:2:128;8113:60:78;;;10623:21:128;10680:2;10660:18;;;10653:30;10719:31;10699:18;;;10692:59;10768:18;;8113:60:78;10439:353:128;8113:60:78;-1:-1:-1;8208:10:78;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:78;;;;;;;;:::i;14:196:128:-;82:20;;-1:-1:-1;;;;;131:54:128;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;1042:260::-;1110:6;1118;1171:2;1159:9;1150:7;1146:23;1142:32;1139:52;;;1187:1;1184;1177:12;1139:52;1210:29;1229:9;1210:29;:::i;:::-;1200:39;;1258:38;1292:2;1281:9;1277:18;1258:38;:::i;:::-;1248:48;;1042:260;;;;;:::o;1499:184::-;1551:77;1548:1;1541:88;1648:4;1645:1;1638:15;1672:4;1669:1;1662:15;1688:275;1759:2;1753:9;1824:2;1805:13;;-1:-1:-1;;1801:27:128;1789:40;;1859:18;1844:34;;1880:22;;;1841:62;1838:88;;;1906:18;;:::i;:::-;1942:2;1935:22;1688:275;;-1:-1:-1;1688:275:128:o;1968:837::-;2045:6;2053;2106:2;2094:9;2085:7;2081:23;2077:32;2074:52;;;2122:1;2119;2112:12;2074:52;2145:29;2164:9;2145:29;:::i;:::-;2135:39;;2193:2;2246;2235:9;2231:18;2218:32;2269:18;2310:2;2302:6;2299:14;2296:34;;;2326:1;2323;2316:12;2296:34;2364:6;2353:9;2349:22;2339:32;;2409:7;2402:4;2398:2;2394:13;2390:27;2380:55;;2431:1;2428;2421:12;2380:55;2467:2;2454:16;2489:2;2485;2482:10;2479:36;;;2495:18;;:::i;:::-;2537:53;2580:2;2561:13;;-1:-1:-1;;2557:27:128;2553:36;;2537:53;:::i;:::-;2524:66;;2613:2;2606:5;2599:17;2653:7;2648:2;2643;2639;2635:11;2631:20;2628:33;2625:53;;;2674:1;2671;2664:12;2625:53;2729:2;2724;2720;2716:11;2711:2;2704:5;2700:14;2687:45;2773:1;2768:2;2763;2756:5;2752:14;2748:23;2741:34;;2794:5;2784:15;;;;;1968:837;;;;;:::o;2992:254::-;3060:6;3068;3121:2;3109:9;3100:7;3096:23;3092:32;3089:52;;;3137:1;3134;3127:12;3089:52;3160:29;3179:9;3160:29;:::i;:::-;3150:39;3236:2;3221:18;;;;3208:32;;-1:-1:-1;;;2992:254:128:o;3251:669::-;3350:6;3358;3402:9;3393:7;3389:23;3432:2;3428;3424:11;3421:31;;;3448:1;3445;3438:12;3421:31;3471:29;3490:9;3471:29;:::i;:::-;3461:39;-1:-1:-1;3534:4:128;-1:-1:-1;;3516:16:128;;3512:27;3509:47;;;3552:1;3549;3542:12;3509:47;;3585:4;3579:11;3629:4;3621:6;3617:17;3700:6;3688:10;3685:22;3664:18;3652:10;3649:34;3646:62;3643:88;;;3711:18;;:::i;:::-;3747:4;3740:24;;;3816:2;3801:18;;;3788:32;3773:48;;3867:20;;3854:34;3837:15;;;3830:59;;;;-1:-1:-1;3251:669:128;3780:6;;-1:-1:-1;3251:669:128:o;4904:328::-;4981:6;4989;4997;5050:2;5038:9;5029:7;5025:23;5021:32;5018:52;;;5066:1;5063;5056:12;5018:52;5089:29;5108:9;5089:29;:::i;:::-;5079:39;;5165:2;5154:9;5150:18;5137:32;5127:42;;5188:38;5222:2;5211:9;5207:18;5188:38;:::i;:::-;5178:48;;4904:328;;;;;:::o;7691:184::-;7761:6;7814:2;7802:9;7793:7;7789:23;7785:32;7782:52;;;7830:1;7827;7820:12;7782:52;-1:-1:-1;7853:16:128;;7691:184;-1:-1:-1;7691:184:128:o;9892:250::-;9977:1;9987:113;10001:6;9998:1;9995:13;9987:113;;;10077:11;;;10071:18;10058:11;;;10051:39;10023:2;10016:10;9987:113;;;-1:-1:-1;;10134:1:128;10116:16;;10109:27;9892:250::o;10147:287::-;10276:3;10314:6;10308:13;10330:66;10389:6;10384:3;10377:4;10369:6;10365:17;10330:66;:::i;:::-;10412:16;;;;;10147:287;-1:-1:-1;;10147:287:128:o;10797:396::-;10946:2;10935:9;10928:21;10909:4;10978:6;10972:13;11021:6;11016:2;11005:9;11001:18;10994:34;11037:79;11109:6;11104:2;11093:9;11089:18;11084:2;11076:6;11072:15;11037:79;:::i;:::-;11177:2;11156:15;-1:-1:-1;;11152:29:128;11137:45;;;;11184:2;11133:54;;10797:396;-1:-1:-1;;10797:396:128:o","linkReferences":{},"immutableReferences":{"56059":[{"start":1622,"length":32},{"start":1760,"length":32},{"start":2254,"length":32},{"start":2387,"length":32},{"start":2617,"length":32}]}},"methodIdentifiers":{"activateStrategy(address)":"d80ea5a0","addStrategy(address,uint256,address)":"fc2ebdd1","addUserScore(address,(uint256,uint256))":"7814d568","canExecuteAction(address,address)":"42a987a0","changeListManager(address)":"3d476830","getStrategy(address)":"f8806a13","getUserScore(address)":"b34e0c47","initialize(address)":"c4d66de8","listManager()":"8df8b2fe","modifyThreshold(address,uint256)":"642ce76b","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","removeStrategy(address)":"175188e8","removeUser(address)":"98575188","renounceOwnership()":"715018a6","strategies(address)":"39ebf823","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286","userScores(address)":"1413d4c0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"OnlyAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCouncil\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCouncilOrAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newManager\",\"type\":\"address\"}],\"name\":\"ListManagerChanged\",\"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\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"councilSafe\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"ThresholdModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"UserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"name\":\"UserScoreAdded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"}],\"name\":\"activateStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_councilSafe\",\"type\":\"address\"}],\"name\":\"addStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"internalType\":\"struct PassportData\",\"name\":\"_passportData\",\"type\":\"tuple\"}],\"name\":\"addUserScore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"}],\"name\":\"canExecuteAction\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newManager\",\"type\":\"address\"}],\"name\":\"changeListManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"}],\"name\":\"getStrategy\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"councilSafe\",\"type\":\"address\"}],\"internalType\":\"struct Strategy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getUserScore\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"internalType\":\"struct PassportData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_listManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"listManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_newThreshold\",\"type\":\"uint256\"}],\"name\":\"modifyThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"}],\"name\":\"removeStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"removeUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"strategies\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"councilSafe\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userScores\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"activateStrategy(address)\":{\"params\":{\"_strategy\":\"address of the strategy to activate\"}},\"addStrategy(address,uint256,address)\":{\"params\":{\"_threshold\":\"is expresed on a scale of 10**4\"}},\"addUserScore(address,(uint256,uint256))\":{\"params\":{\"_passportData\":\"PassportData struct with the user score and lastUpdated\",\"_user\":\"address of the user to add\"}},\"canExecuteAction(address,address)\":{\"params\":{\"_strategy\":\"address of the strategy to check\",\"_user\":\"address of the user to check\"}},\"changeListManager(address)\":{\"params\":{\"_newManager\":\"address of the new list manager\"}},\"getStrategy(address)\":{\"params\":{\"_strategy\":\"address of the strategy to check\"}},\"getUserScore(address)\":{\"params\":{\"_user\":\"address of the user to check\"}},\"modifyThreshold(address,uint256)\":{\"params\":{\"_newThreshold\":\"new threshold to set expressed on a scale of 10**4\",\"_strategy\":\"address of the strategy to modify\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"removeStrategy(address)\":{\"params\":{\"_strategy\":\"address of the strategy to remove\"}},\"removeUser(address)\":{\"params\":{\"_user\":\"address of the user to remove\"}},\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"activateStrategy(address)\":{\"notice\":\"Activate a strategy\"},\"addStrategy(address,uint256,address)\":{\"notice\":\"Add a strategy to the contract\"},\"addUserScore(address,(uint256,uint256))\":{\"notice\":\"Add a userScore to the list\"},\"canExecuteAction(address,address)\":{\"notice\":\"Check if an action can be executed\"},\"changeListManager(address)\":{\"notice\":\"Change the list manager address\"},\"getStrategy(address)\":{\"notice\":\"Get the strategy data\"},\"getUserScore(address)\":{\"notice\":\"Get the score of a user\"},\"modifyThreshold(address,uint256)\":{\"notice\":\"Modify the threshold of a strategy\"},\"removeStrategy(address)\":{\"notice\":\"Remove a strategy from the contract\"},\"removeUser(address)\":{\"notice\":\"Remove a user from the list\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"pkg/contracts/src/PassportScorer.sol\":\"PassportScorer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/foundry/=lib/openzeppelin-foundry-upgrades/src/\",\":@prb/math/=lib/allo-v2/lib/v2-core/lib/prb-math/\",\":@prb/test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/\",\":@sablier/v2-core/=lib/allo-v2/lib/v2-core/\",\":ERC1155/=lib/allo-v2/lib/hats-protocol/lib/ERC1155/\",\":allo-v2-contracts/=lib/allo-v2/contracts/\",\":allo-v2-test/=lib/allo-v2/test/\",\":allo-v2/=lib/allo-v2/\",\":ds-test/=lib/allo-v2/lib/forge-std/lib/ds-test/src/\",\":eas-contracts/=lib/allo-v2/lib/eas-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/allo-v2/lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hats-protocol/=lib/allo-v2/lib/hats-protocol/\",\":openzeppelin-contracts-upgradeable/=lib/allo-v2/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":permit2/=lib/allo-v2/lib/permit2/\",\":prb-math/=lib/allo-v2/lib/v2-core/lib/prb-math/src/\",\":prb-test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/\",\":solady/=lib/allo-v2/lib/solady/\",\":solarray/=lib/allo-v2/lib/v2-core/lib/solarray/src/\",\":solbase/=lib/allo-v2/lib/hats-protocol/lib/solbase/src/\",\":solmate/=lib/allo-v2/lib/permit2/lib/solmate/\",\":utils/=lib/allo-v2/lib/hats-protocol/lib/utils/\",\":v2-core/=lib/allo-v2/lib/v2-core/\"]},\"sources\":{\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1\",\"dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]},\"pkg/contracts/src/ISybilScorer.sol\":{\"keccak256\":\"0x0e25fbb8497ac3c969d80c9032362d45e56c0a45dc9ba3dff6a8a704571f38ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dff90ebae6e7131a5300fcaf525bc2ab0ae90fcd13f277d7b7b6939eeb8b7eb\",\"dweb:/ipfs/QmYGkYqpUVrBWoNY6f3CtwrrVQFWSvnJfpu68t95f6AkBY\"]},\"pkg/contracts/src/PassportScorer.sol\":{\"keccak256\":\"0x58c15350aefdf9379dcc3b0442bf775d66c8595b2fa46180130d6a910ff95ceb\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4d2a753fffe95c8c7ba708f671eee354e4208454b797e382ad16ca88c33d7e18\",\"dweb:/ipfs/QmSNxyehChShCXR7tuubfDmXXpHuvsJFuB5vw8xQzfcPSs\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"OnlyAuthorized"},{"inputs":[],"type":"error","name":"OnlyCouncil"},{"inputs":[],"type":"error","name":"OnlyCouncilOrAuthorized"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"oldManager","type":"address","indexed":true},{"internalType":"address","name":"newManager","type":"address","indexed":true}],"type":"event","name":"ListManagerChanged","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":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyActivated","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true},{"internalType":"uint256","name":"threshold","type":"uint256","indexed":false},{"internalType":"bool","name":"active","type":"bool","indexed":false},{"internalType":"address","name":"councilSafe","type":"address","indexed":false}],"type":"event","name":"StrategyAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true},{"internalType":"uint256","name":"newThreshold","type":"uint256","indexed":false}],"type":"event","name":"ThresholdModified","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"UserRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"uint256","name":"score","type":"uint256","indexed":false},{"internalType":"uint256","name":"lastUpdated","type":"uint256","indexed":false}],"type":"event","name":"UserScoreAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"activateStrategy"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"address","name":"_councilSafe","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addStrategy"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"struct PassportData","name":"_passportData","type":"tuple","components":[{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"uint256","name":"lastUpdated","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"addUserScore"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_strategy","type":"address"}],"stateMutability":"view","type":"function","name":"canExecuteAction","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_newManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"changeListManager"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"stateMutability":"view","type":"function","name":"getStrategy","outputs":[{"internalType":"struct Strategy","name":"","type":"tuple","components":[{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"address","name":"councilSafe","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"stateMutability":"view","type":"function","name":"getUserScore","outputs":[{"internalType":"struct PassportData","name":"","type":"tuple","components":[{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"uint256","name":"lastUpdated","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_listManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"listManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"modifyThreshold"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeStrategy"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeUser"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"strategies","outputs":[{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"address","name":"councilSafe","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"userScores","outputs":[{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"uint256","name":"lastUpdated","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"activateStrategy(address)":{"params":{"_strategy":"address of the strategy to activate"}},"addStrategy(address,uint256,address)":{"params":{"_threshold":"is expresed on a scale of 10**4"}},"addUserScore(address,(uint256,uint256))":{"params":{"_passportData":"PassportData struct with the user score and lastUpdated","_user":"address of the user to add"}},"canExecuteAction(address,address)":{"params":{"_strategy":"address of the strategy to check","_user":"address of the user to check"}},"changeListManager(address)":{"params":{"_newManager":"address of the new list manager"}},"getStrategy(address)":{"params":{"_strategy":"address of the strategy to check"}},"getUserScore(address)":{"params":{"_user":"address of the user to check"}},"modifyThreshold(address,uint256)":{"params":{"_newThreshold":"new threshold to set expressed on a scale of 10**4","_strategy":"address of the strategy to modify"}},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"removeStrategy(address)":{"params":{"_strategy":"address of the strategy to remove"}},"removeUser(address)":{"params":{"_user":"address of the user to remove"}},"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"activateStrategy(address)":{"notice":"Activate a strategy"},"addStrategy(address,uint256,address)":{"notice":"Add a strategy to the contract"},"addUserScore(address,(uint256,uint256))":{"notice":"Add a userScore to the list"},"canExecuteAction(address,address)":{"notice":"Check if an action can be executed"},"changeListManager(address)":{"notice":"Change the list manager address"},"getStrategy(address)":{"notice":"Get the strategy data"},"getUserScore(address)":{"notice":"Get the score of a user"},"modifyThreshold(address,uint256)":{"notice":"Modify the threshold of a strategy"},"removeStrategy(address)":{"notice":"Remove a strategy from the contract"},"removeUser(address)":{"notice":"Remove a user from the list"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/foundry/=lib/openzeppelin-foundry-upgrades/src/","@prb/math/=lib/allo-v2/lib/v2-core/lib/prb-math/","@prb/test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/","@sablier/v2-core/=lib/allo-v2/lib/v2-core/","ERC1155/=lib/allo-v2/lib/hats-protocol/lib/ERC1155/","allo-v2-contracts/=lib/allo-v2/contracts/","allo-v2-test/=lib/allo-v2/test/","allo-v2/=lib/allo-v2/","ds-test/=lib/allo-v2/lib/forge-std/lib/ds-test/src/","eas-contracts/=lib/allo-v2/lib/eas-contracts/contracts/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/allo-v2/lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hats-protocol/=lib/allo-v2/lib/hats-protocol/","openzeppelin-contracts-upgradeable/=lib/allo-v2/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","permit2/=lib/allo-v2/lib/permit2/","prb-math/=lib/allo-v2/lib/v2-core/lib/prb-math/src/","prb-test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/","solady/=lib/allo-v2/lib/solady/","solarray/=lib/allo-v2/lib/v2-core/lib/solarray/src/","solbase/=lib/allo-v2/lib/hats-protocol/lib/solbase/src/","solmate/=lib/allo-v2/lib/permit2/lib/solmate/","utils/=lib/allo-v2/lib/hats-protocol/lib/utils/","v2-core/=lib/allo-v2/lib/v2-core/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"pkg/contracts/src/PassportScorer.sol":"PassportScorer"},"evmVersion":"paris","libraries":{}},"sources":{"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90","urls":["bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263","dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2","urls":["bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2","dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf","urls":["bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1","dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM"],"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/StorageSlot.sol":{"keccak256":"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899","urls":["bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da","dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q"],"license":"MIT"},"pkg/contracts/src/ISybilScorer.sol":{"keccak256":"0x0e25fbb8497ac3c969d80c9032362d45e56c0a45dc9ba3dff6a8a704571f38ea","urls":["bzz-raw://0dff90ebae6e7131a5300fcaf525bc2ab0ae90fcd13f277d7b7b6939eeb8b7eb","dweb:/ipfs/QmYGkYqpUVrBWoNY6f3CtwrrVQFWSvnJfpu68t95f6AkBY"],"license":"MIT"},"pkg/contracts/src/PassportScorer.sol":{"keccak256":"0x58c15350aefdf9379dcc3b0442bf775d66c8595b2fa46180130d6a910ff95ceb","urls":["bzz-raw://4d2a753fffe95c8c7ba708f671eee354e4208454b797e382ad16ca88c33d7e18","dweb:/ipfs/QmSNxyehChShCXR7tuubfDmXXpHuvsJFuB5vw8xQzfcPSs"],"license":"AGPL-3.0-or-later"}},"version":1},"id":117} \ No newline at end of file +{"abi":[{"type":"function","name":"activateStrategy","inputs":[{"name":"_strategy","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addStrategy","inputs":[{"name":"_strategy","type":"address","internalType":"address"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_councilSafe","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addUserScore","inputs":[{"name":"_user","type":"address","internalType":"address"},{"name":"_passportData","type":"tuple","internalType":"struct PassportData","components":[{"name":"score","type":"uint256","internalType":"uint256"},{"name":"lastUpdated","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canExecuteAction","inputs":[{"name":"_user","type":"address","internalType":"address"},{"name":"_strategy","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"changeListManager","inputs":[{"name":"_newManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getStrategy","inputs":[{"name":"_strategy","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Strategy","components":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"active","type":"bool","internalType":"bool"},{"name":"councilSafe","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"getUserScore","inputs":[{"name":"_user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PassportData","components":[{"name":"score","type":"uint256","internalType":"uint256"},{"name":"lastUpdated","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_listManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"listManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"modifyThreshold","inputs":[{"name":"_strategy","type":"address","internalType":"address"},{"name":"_newThreshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"removeStrategy","inputs":[{"name":"_strategy","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeUser","inputs":[{"name":"_user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"strategies","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"active","type":"bool","internalType":"bool"},{"name":"councilSafe","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"userScores","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"score","type":"uint256","internalType":"uint256"},{"name":"lastUpdated","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"ListManagerChanged","inputs":[{"name":"oldManager","type":"address","indexed":true,"internalType":"address"},{"name":"newManager","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyActivated","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyAdded","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"},{"name":"threshold","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"active","type":"bool","indexed":false,"internalType":"bool"},{"name":"councilSafe","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyRemoved","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ThresholdModified","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"},{"name":"newThreshold","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UserRemoved","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UserScoreAdded","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"score","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lastUpdated","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"OnlyAuthorized","inputs":[]},{"type":"error","name":"OnlyCouncil","inputs":[]},{"type":"error","name":"OnlyCouncilOrAuthorized","inputs":[]},{"type":"error","name":"StrategyAlreadyExists","inputs":[]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60a06040523060805234801561001457600080fd5b50608051611a8761004c60003960008181610656015281816106e0015281816108ce015281816109530152610a390152611a876000f3fe60806040526004361061015f5760003560e01c80637814d568116100c0578063c4d66de811610074578063f2fde38b11610059578063f2fde38b14610469578063f8806a1314610489578063fc2ebdd11461052f57600080fd5b8063c4d66de814610429578063d80ea5a01461044957600080fd5b80638df8b2fe116100a55780638df8b2fe1461036c578063985751881461038c578063b34e0c47146103ac57600080fd5b80637814d5681461031a5780638da5cb5b1461033a57600080fd5b806342a987a01161011757806352d1902d116100fc57806352d1902d146102c2578063642ce76b146102e5578063715018a61461030557600080fd5b806342a987a01461027f5780634f1ef286146102af57600080fd5b80633659cfe6116101485780633659cfe6146101d457806339ebf823146101f45780633d4768301461025f57600080fd5b80631413d4c014610164578063175188e8146101b2575b600080fd5b34801561017057600080fd5b5061019861017f366004611771565b6066602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b3480156101be57600080fd5b506101d26101cd366004611771565b61054f565b005b3480156101e057600080fd5b506101d26101ef366004611771565b61064c565b34801561020057600080fd5b5061023b61020f366004611771565b6067602052600090815260409020805460019091015460ff81169061010090046001600160a01b031683565b6040805193845291151560208401526001600160a01b0316908201526060016101a9565b34801561026b57600080fd5b506101d261027a366004611771565b6107cc565b34801561028b57600080fd5b5061029f61029a36600461178c565b61083c565b60405190151581526020016101a9565b6101d26102bd36600461181f565b6108c4565b3480156102ce57600080fd5b506102d7610a2c565b6040519081526020016101a9565b3480156102f157600080fd5b506101d26103003660046118c5565b610af1565b34801561031157600080fd5b506101d2610bc6565b34801561032657600080fd5b506101d26103353660046118ef565b610bda565b34801561034657600080fd5b506033546001600160a01b03165b6040516001600160a01b0390911681526020016101a9565b34801561037857600080fd5b50606554610354906001600160a01b031681565b34801561039857600080fd5b506101d26103a7366004611771565b610ca2565b3480156103b857600080fd5b5061040e6103c7366004611771565b6040805180820190915260008082526020820152506001600160a01b0316600090815260666020908152604091829020825180840190935280548352600101549082015290565b604080518251815260209283015192810192909252016101a9565b34801561043557600080fd5b506101d2610444366004611771565b610d1d565b34801561045557600080fd5b506101d2610464366004611771565b610e6e565b34801561047557600080fd5b506101d2610484366004611771565b610f27565b34801561049557600080fd5b506105026104a4366004611771565b6040805160608082018352600080835260208084018290529284018190526001600160a01b0394851681526067835283902083519182018452805482526001015460ff81161515928201929092526101009091049092169082015290565b6040805182518152602080840151151590820152918101516001600160a01b0316908201526060016101a9565b34801561053b57600080fd5b506101d261054a366004611962565b610fb4565b806105626033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061058b57506065546001600160a01b031633145b806105b757506001600160a01b0381811660009081526067602052604090206001015461010090041633145b15610616576105c582611148565b6001600160a01b03821660008181526067602052604080822060018101805460ff19169055829055517f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea49190a25050565b6040517fe3b6914b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106de5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107397f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107a45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b6107ad81611188565b604080516000808252602082019092526107c991839190611190565b50565b6107d4611330565b6107dd81611148565b606580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f5117c6c457d7b27a4cb68df40b118f157ac1f1ba81f8a571d189f829d74fbc8690600090a35050565b6001600160a01b03808316600090815260666020908152604080832081518083018352815481526001918201548185015286861685526067845282852083516060810185528154815292015460ff81161515948301859052610100900490951691810191909152919291906108b6576001925050506108be565b519051101590505b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109515760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016106d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109ac7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610a175760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b610a2082611188565b61064882826001611190565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610acc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d5565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b81610b046033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610b2d57506065546001600160a01b031633145b80610b5957506001600160a01b0381811660009081526067602052604090206001015461010090041633145b1561061657610b6783611148565b6001600160a01b03831660008181526067602052604090819020849055517f40ba4d5d9facd2fda74e22251d1638576e05a30482470363c7c87a7b5b298c0990610bb49085815260200190565b60405180910390a2505050565b505050565b610bce611330565b610bd8600061138a565b565b6033546001600160a01b0316331480610bfd57506065546001600160a01b031633145b15610c7057610c0b82611148565b6001600160a01b03821660008181526066602090815260409182902084518082558583015160019092018290558351908152918201527f1e0ca12706807bceff25136f95fe6f69c1319c044f6073e6056a287e4f541b1d910160405180910390a25050565b6040517f7d7b71b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033546001600160a01b0316331480610cc557506065546001600160a01b031633145b15610c7057610cd381611148565b6001600160a01b038116600081815260666020526040808220828155600101829055517fe9dce8c992623ce791725b21e857e33248d1f190a25b5168313420eebdaae99d9190a250565b600054610100900460ff1615808015610d3d5750600054600160ff909116105b80610d575750303b158015610d57575060005460ff166001145b610dc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106d5565b6000805460ff191660011790558015610dec576000805461ff0019166101001790555b610df46113e9565b610dfd82611148565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790558015610648576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6001600160a01b038082166000908152606760205260409020600101548291610100909104163303610ef557610ea382611148565b6001600160a01b0382166000818152606760205260408082206001908101805460ff19169091179055517f652f053fc39779b70b29678135ade972fcb79966fc68fcb77c996b1aa4fd9afb9190a25050565b6040517f97ffbac900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2f611330565b6001600160a01b038116610fab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106d5565b6107c98161138a565b6033546001600160a01b0316331480610fd757506065546001600160a01b031633145b15610c7057610fe583611148565b610fee81611148565b6001600160a01b03831660009081526067602052604090205415158061103557506001600160a01b0383811660009081526067602052604090206001015461010090041615155b1561106c576040517fc45546f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160608082018352848252600060208084018281526001600160a01b038781168688018181528b831680875260678652898720985189559351600190980180549151909316610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff981515989098167fffffffffffffffffffffff000000000000000000000000000000000000000000909116179690961790558551888152918201929092529384019290925290917f9b1a157188de9a0bd2e7995d72aaba244d9bd012ddf3ae3d4f492135175070cb9101610bb4565b6001600160a01b0381166107c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c9611330565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156111c357610bc18361145c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561121d575060408051601f3d908101601f1916820190925261121a9181019061199e565b60015b61128f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146113245760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016106d5565b50610bc1838383611527565b6033546001600160a01b03163314610bd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d5565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166114545760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd8611552565b6001600160a01b0381163b6114d95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b611530836115c6565b60008251118061153d5750805b15610bc15761154c8383611606565b50505050565b600054610100900460ff166115bd5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd83361138a565b6115cf8161145c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061162b8383604051806060016040528060278152602001611a2b60279139611632565b9392505050565b6060600080856001600160a01b03168560405161164f91906119db565b600060405180830381855af49150503d806000811461168a576040519150601f19603f3d011682016040523d82523d6000602084013e61168f565b606091505b50915091506116a0868383876116aa565b9695505050505050565b60608315611719578251600003611712576001600160a01b0385163b6117125760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d5565b5081611723565b611723838361172b565b949350505050565b81511561173b5781518083602001fd5b8060405162461bcd60e51b81526004016106d591906119f7565b80356001600160a01b038116811461176c57600080fd5b919050565b60006020828403121561178357600080fd5b61162b82611755565b6000806040838503121561179f57600080fd5b6117a883611755565b91506117b660208401611755565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611817576118176117bf565b604052919050565b6000806040838503121561183257600080fd5b61183b83611755565b915060208084013567ffffffffffffffff8082111561185957600080fd5b818601915086601f83011261186d57600080fd5b81358181111561187f5761187f6117bf565b611891601f8201601f191685016117ee565b915080825287848285010111156118a757600080fd5b80848401858401376000848284010152508093505050509250929050565b600080604083850312156118d857600080fd5b6118e183611755565b946020939093013593505050565b600080828403606081121561190357600080fd5b61190c84611755565b92506040601f198201121561192057600080fd5b506040516040810181811067ffffffffffffffff82111715611944576119446117bf565b60409081526020858101358352940135938101939093525092909150565b60008060006060848603121561197757600080fd5b61198084611755565b92506020840135915061199560408501611755565b90509250925092565b6000602082840312156119b057600080fd5b5051919050565b60005b838110156119d25781810151838201526020016119ba565b50506000910152565b600082516119ed8184602087016119b7565b9190910192915050565b6020815260008251806020840152611a168160408501602087016119b7565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cd7c05347437b99cf35f2e0f8f6648973bab95fd9fd232d0c8bb87c48f7183c964736f6c63430008130033","sourceMap":"452:5877:117:-:0;;;1088:4:66;1045:48;;452:5877:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061015f5760003560e01c80637814d568116100c0578063c4d66de811610074578063f2fde38b11610059578063f2fde38b14610469578063f8806a1314610489578063fc2ebdd11461052f57600080fd5b8063c4d66de814610429578063d80ea5a01461044957600080fd5b80638df8b2fe116100a55780638df8b2fe1461036c578063985751881461038c578063b34e0c47146103ac57600080fd5b80637814d5681461031a5780638da5cb5b1461033a57600080fd5b806342a987a01161011757806352d1902d116100fc57806352d1902d146102c2578063642ce76b146102e5578063715018a61461030557600080fd5b806342a987a01461027f5780634f1ef286146102af57600080fd5b80633659cfe6116101485780633659cfe6146101d457806339ebf823146101f45780633d4768301461025f57600080fd5b80631413d4c014610164578063175188e8146101b2575b600080fd5b34801561017057600080fd5b5061019861017f366004611771565b6066602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b3480156101be57600080fd5b506101d26101cd366004611771565b61054f565b005b3480156101e057600080fd5b506101d26101ef366004611771565b61064c565b34801561020057600080fd5b5061023b61020f366004611771565b6067602052600090815260409020805460019091015460ff81169061010090046001600160a01b031683565b6040805193845291151560208401526001600160a01b0316908201526060016101a9565b34801561026b57600080fd5b506101d261027a366004611771565b6107cc565b34801561028b57600080fd5b5061029f61029a36600461178c565b61083c565b60405190151581526020016101a9565b6101d26102bd36600461181f565b6108c4565b3480156102ce57600080fd5b506102d7610a2c565b6040519081526020016101a9565b3480156102f157600080fd5b506101d26103003660046118c5565b610af1565b34801561031157600080fd5b506101d2610bc6565b34801561032657600080fd5b506101d26103353660046118ef565b610bda565b34801561034657600080fd5b506033546001600160a01b03165b6040516001600160a01b0390911681526020016101a9565b34801561037857600080fd5b50606554610354906001600160a01b031681565b34801561039857600080fd5b506101d26103a7366004611771565b610ca2565b3480156103b857600080fd5b5061040e6103c7366004611771565b6040805180820190915260008082526020820152506001600160a01b0316600090815260666020908152604091829020825180840190935280548352600101549082015290565b604080518251815260209283015192810192909252016101a9565b34801561043557600080fd5b506101d2610444366004611771565b610d1d565b34801561045557600080fd5b506101d2610464366004611771565b610e6e565b34801561047557600080fd5b506101d2610484366004611771565b610f27565b34801561049557600080fd5b506105026104a4366004611771565b6040805160608082018352600080835260208084018290529284018190526001600160a01b0394851681526067835283902083519182018452805482526001015460ff81161515928201929092526101009091049092169082015290565b6040805182518152602080840151151590820152918101516001600160a01b0316908201526060016101a9565b34801561053b57600080fd5b506101d261054a366004611962565b610fb4565b806105626033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061058b57506065546001600160a01b031633145b806105b757506001600160a01b0381811660009081526067602052604090206001015461010090041633145b15610616576105c582611148565b6001600160a01b03821660008181526067602052604080822060018101805460ff19169055829055517f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea49190a25050565b6040517fe3b6914b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106de5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107397f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107a45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b6107ad81611188565b604080516000808252602082019092526107c991839190611190565b50565b6107d4611330565b6107dd81611148565b606580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f5117c6c457d7b27a4cb68df40b118f157ac1f1ba81f8a571d189f829d74fbc8690600090a35050565b6001600160a01b03808316600090815260666020908152604080832081518083018352815481526001918201548185015286861685526067845282852083516060810185528154815292015460ff81161515948301859052610100900490951691810191909152919291906108b6576001925050506108be565b519051101590505b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109515760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016106d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109ac7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610a175760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b610a2082611188565b61064882826001611190565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610acc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d5565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b81610b046033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610b2d57506065546001600160a01b031633145b80610b5957506001600160a01b0381811660009081526067602052604090206001015461010090041633145b1561061657610b6783611148565b6001600160a01b03831660008181526067602052604090819020849055517f40ba4d5d9facd2fda74e22251d1638576e05a30482470363c7c87a7b5b298c0990610bb49085815260200190565b60405180910390a2505050565b505050565b610bce611330565b610bd8600061138a565b565b6033546001600160a01b0316331480610bfd57506065546001600160a01b031633145b15610c7057610c0b82611148565b6001600160a01b03821660008181526066602090815260409182902084518082558583015160019092018290558351908152918201527f1e0ca12706807bceff25136f95fe6f69c1319c044f6073e6056a287e4f541b1d910160405180910390a25050565b6040517f7d7b71b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033546001600160a01b0316331480610cc557506065546001600160a01b031633145b15610c7057610cd381611148565b6001600160a01b038116600081815260666020526040808220828155600101829055517fe9dce8c992623ce791725b21e857e33248d1f190a25b5168313420eebdaae99d9190a250565b600054610100900460ff1615808015610d3d5750600054600160ff909116105b80610d575750303b158015610d57575060005460ff166001145b610dc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106d5565b6000805460ff191660011790558015610dec576000805461ff0019166101001790555b610df46113e9565b610dfd82611148565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790558015610648576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6001600160a01b038082166000908152606760205260409020600101548291610100909104163303610ef557610ea382611148565b6001600160a01b0382166000818152606760205260408082206001908101805460ff19169091179055517f652f053fc39779b70b29678135ade972fcb79966fc68fcb77c996b1aa4fd9afb9190a25050565b6040517f97ffbac900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2f611330565b6001600160a01b038116610fab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106d5565b6107c98161138a565b6033546001600160a01b0316331480610fd757506065546001600160a01b031633145b15610c7057610fe583611148565b610fee81611148565b6001600160a01b03831660009081526067602052604090205415158061103557506001600160a01b0383811660009081526067602052604090206001015461010090041615155b1561106c576040517fc45546f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160608082018352848252600060208084018281526001600160a01b038781168688018181528b831680875260678652898720985189559351600190980180549151909316610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff981515989098167fffffffffffffffffffffff000000000000000000000000000000000000000000909116179690961790558551888152918201929092529384019290925290917f9b1a157188de9a0bd2e7995d72aaba244d9bd012ddf3ae3d4f492135175070cb9101610bb4565b6001600160a01b0381166107c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c9611330565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156111c357610bc18361145c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561121d575060408051601f3d908101601f1916820190925261121a9181019061199e565b60015b61128f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146113245760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016106d5565b50610bc1838383611527565b6033546001600160a01b03163314610bd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d5565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166114545760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd8611552565b6001600160a01b0381163b6114d95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b611530836115c6565b60008251118061153d5750805b15610bc15761154c8383611606565b50505050565b600054610100900460ff166115bd5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd83361138a565b6115cf8161145c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061162b8383604051806060016040528060278152602001611a2b60279139611632565b9392505050565b6060600080856001600160a01b03168560405161164f91906119db565b600060405180830381855af49150503d806000811461168a576040519150601f19603f3d011682016040523d82523d6000602084013e61168f565b606091505b50915091506116a0868383876116aa565b9695505050505050565b60608315611719578251600003611712576001600160a01b0385163b6117125760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d5565b5081611723565b611723838361172b565b949350505050565b81511561173b5781518083602001fd5b8060405162461bcd60e51b81526004016106d591906119f7565b80356001600160a01b038116811461176c57600080fd5b919050565b60006020828403121561178357600080fd5b61162b82611755565b6000806040838503121561179f57600080fd5b6117a883611755565b91506117b660208401611755565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611817576118176117bf565b604052919050565b6000806040838503121561183257600080fd5b61183b83611755565b915060208084013567ffffffffffffffff8082111561185957600080fd5b818601915086601f83011261186d57600080fd5b81358181111561187f5761187f6117bf565b611891601f8201601f191685016117ee565b915080825287848285010111156118a757600080fd5b80848401858401376000848284010152508093505050509250929050565b600080604083850312156118d857600080fd5b6118e183611755565b946020939093013593505050565b600080828403606081121561190357600080fd5b61190c84611755565b92506040601f198201121561192057600080fd5b506040516040810181811067ffffffffffffffff82111715611944576119446117bf565b60409081526020858101358352940135938101939093525092909150565b60008060006060848603121561197757600080fd5b61198084611755565b92506020840135915061199560408501611755565b90509250925092565b6000602082840312156119b057600080fd5b5051919050565b60005b838110156119d25781810151838201526020016119ba565b50506000910152565b600082516119ed8184602087016119b7565b9190910192915050565b6020815260008251806020840152611a168160408501602087016119b7565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cd7c05347437b99cf35f2e0f8f6648973bab95fd9fd232d0c8bb87c48f7183c964736f6c63430008130033","sourceMap":"452:5877:117:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;583:50;;;;;;;;;;-1:-1:-1;583:50:117;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;580:25:128;;;636:2;621:18;;614:34;;;;553:18;583:50:117;;;;;;;;4244:274;;;;;;;;;;-1:-1:-1;4244:274:117;;;;;:::i;:::-;;:::i;:::-;;3143:195:66;;;;;;;;;;-1:-1:-1;3143:195:66;;;;;:::i;:::-;;:::i;639:46:117:-;;;;;;;;;;-1:-1:-1;639:46:117;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;639:46:117;;;;;;;855:25:128;;;923:14;;916:22;911:2;896:18;;889:50;-1:-1:-1;;;;;975:55:128;955:18;;;948:83;843:2;828:18;639:46:117;659:378:128;3168:259:117;;;;;;;;;;-1:-1:-1;3168:259:117;;;;;:::i;:::-;;:::i;5465:345::-;;;;;;;;;;-1:-1:-1;5465:345:117;;;;;:::i;:::-;;:::i;:::-;;;1472:14:128;;1465:22;1447:41;;1435:2;1420:18;5465:345:117;1307:187:128;3657:220:66;;;;;;:::i;:::-;;:::i;2762:131::-;;;;;;;;;;;;;:::i;:::-;;;2956:25:128;;;2944:2;2929:18;2762:131:66;2810:177:128;5028:272:117;;;;;;;;;;-1:-1:-1;5028:272:117;;;;;:::i;:::-;;:::i;2064:101:14:-;;;;;;;;;;;;;:::i;2503:274:117:-;;;;;;;;;;-1:-1:-1;2503:274:117;;;;;:::i;:::-;;:::i;1441:85:14:-;;;;;;;;;;-1:-1:-1;1513:6:14;;-1:-1:-1;;;;;1513:6:14;1441:85;;;-1:-1:-1;;;;;4089:55:128;;;4071:74;;4059:2;4044:18;1441:85:14;3925:226:128;550:26:117;;;;;;;;;;-1:-1:-1;550:26:117;;;;-1:-1:-1;;;;;550:26:117;;;2878:177;;;;;;;;;;-1:-1:-1;2878:177:117;;;;;:::i;:::-;;:::i;5906:122::-;;;;;;;;;;-1:-1:-1;5906:122:117;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;6004:17:117;;;;;:10;:17;;;;;;;;;5997:24;;;;;;;;;;;;;;;;;;;;5906:122;;;;;4382:13:128;;4364:32;;4452:4;4440:17;;;4434:24;4412:20;;;4405:54;;;;4337:18;5906:122:117;4156:309:128;2148:172:117;;;;;;;;;;-1:-1:-1;2148:172:117;;;;;:::i;:::-;;:::i;4621:211::-;;;;;;;;;;-1:-1:-1;4621:211:117;;;;;:::i;:::-;;:::i;2314:198:14:-;;;;;;;;;;-1:-1:-1;2314:198:14;;;;;:::i;:::-;;:::i;6130:125:117:-;;;;;;;;;;-1:-1:-1;6130:125:117;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6227:21:117;;;;;:10;:21;;;;;6220:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6130:125;;;;;4688:13:128;;4670:32;;4772:4;4760:17;;;4754:24;4747:32;4740:40;4718:20;;;4711:70;4829:17;;;4823:24;-1:-1:-1;;;;;4819:73:128;4797:20;;;4790:103;4658:2;4643:18;6130:125:117;4470:429:128;3595:532:117;;;;;;;;;;-1:-1:-1;3595:532:117;;;;;:::i;:::-;;:::i;4244:274::-;4329:9;1612:7;1513:6:14;;-1:-1:-1;;;;;1513:6:14;;1441:85;1612:7:117;-1:-1:-1;;;;;1598:21:117;:10;-1:-1:-1;;;;;1598:21:117;;:50;;;-1:-1:-1;1637:11:117;;-1:-1:-1;;;;;1637:11:117;1623:10;:25;1598:50;:101;;;-1:-1:-1;;;;;;1666:21:117;;;;;;;:10;:21;;;;;:33;;;;;;;1652:10;:47;1598:101;1594:196;;;4350:29:::1;4369:9;4350:18;:29::i;:::-;-1:-1:-1::0;;;;;4389:21:117;::::1;4420:5;4389:21:::0;;;:10:::1;:21;::::0;;;;;:28:::1;::::0;::::1;:36:::0;;-1:-1:-1;;4389:36:117::1;::::0;;4435:35;;;4485:26;::::1;::::0;4420:5;4485:26:::1;4244:274:::0;;:::o;1594:196::-;1754:25;;;;;;;;;;;;;;1594:196;4244:274;;:::o;3143:195:66:-;-1:-1:-1;;;;;1654:6:66;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:66;;5439:2:128;1629:80:66;;;5421:21:128;5478:2;5458:18;;;5451:30;5517:34;5497:18;;;5490:62;-1:-1:-1;;;5568:18:128;;;5561:42;5620:19;;1629:80:66;;;;;;;;;1751:6;-1:-1:-1;;;;;1727:30:66;:20;1030:66:64;1254:54;-1:-1:-1;;;;;1254:54:64;;1175:140;1727:20:66;-1:-1:-1;;;;;1727:30:66;;1719:87;;;;-1:-1:-1;;;1719:87:66;;5852:2:128;1719:87:66;;;5834:21:128;5891:2;5871:18;;;5864:30;5930:34;5910:18;;;5903:62;-1:-1:-1;;;5981:18:128;;;5974:42;6033:19;;1719:87:66;5650:408:128;1719:87:66;3224:36:::1;3242:17;3224;:36::i;:::-;3311:12;::::0;;3321:1:::1;3311:12:::0;;;::::1;::::0;::::1;::::0;;;3270:61:::1;::::0;3292:17;;3311:12;3270:21:::1;:61::i;:::-;3143:195:::0;:::o;3168:259:117:-;1334:13:14;:11;:13::i;:::-;3254:31:117::1;3273:11;3254:18;:31::i;:::-;3316:11;::::0;;-1:-1:-1;;;;;3337:25:117;;::::1;-1:-1:-1::0;;3337:25:117;::::1;::::0;::::1;::::0;;;3377:43:::1;::::0;3316:11;::::1;::::0;3337:25;3316:11;;3377:43:::1;::::0;3295:18:::1;::::0;3377:43:::1;3244:183;3168:259:::0;:::o;5465:345::-;-1:-1:-1;;;;;5605:17:117;;;5557:4;5605:17;;;:10;:17;;;;;;;;5573:49;;;;;;;;;;;;;;;;;;;;5659:21;;;;;:10;:21;;;;;5632:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5557:4;;5573:49;5632:48;5691:58;;5734:4;5727:11;;;;;;5691:58;5785:18;5766:15;;:37;;;-1:-1:-1;5465:345:117;;;;;:::o;3657:220:66:-;-1:-1:-1;;;;;1654:6:66;1637:23;1645:4;1637:23;1629:80;;;;-1:-1:-1;;;1629:80:66;;5439:2:128;1629:80:66;;;5421:21:128;5478:2;5458:18;;;5451:30;5517:34;5497:18;;;5490:62;-1:-1:-1;;;5568:18:128;;;5561:42;5620:19;;1629:80:66;5237:408:128;1629:80:66;1751:6;-1:-1:-1;;;;;1727:30:66;:20;1030:66:64;1254:54;-1:-1:-1;;;;;1254:54:64;;1175:140;1727:20:66;-1:-1:-1;;;;;1727:30:66;;1719:87;;;;-1:-1:-1;;;1719:87:66;;5852:2:128;1719:87:66;;;5834:21:128;5891:2;5871:18;;;5864:30;5930:34;5910:18;;;5903:62;-1:-1:-1;;;5981:18:128;;;5974:42;6033:19;;1719:87:66;5650:408:128;1719:87:66;3772:36:::1;3790:17;3772;:36::i;:::-;3818:52;3840:17;3859:4;3865;3818:21;:52::i;2762:131::-:0;2840:7;2080:4;-1:-1:-1;;;;;2089:6:66;2072:23;;2064:92;;;;-1:-1:-1;;;2064:92:66;;6265:2:128;2064:92:66;;;6247:21:128;6304:2;6284:18;;;6277:30;6343:34;6323:18;;;6316:62;6414:26;6394:18;;;6387:54;6458:19;;2064:92:66;6063:420:128;2064:92:66;-1:-1:-1;1030:66:64::1;2762:131:66::0;:::o;5028:272:117:-;5128:9;1612:7;1513:6:14;;-1:-1:-1;;;;;1513:6:14;;1441:85;1612:7:117;-1:-1:-1;;;;;1598:21:117;:10;-1:-1:-1;;;;;1598:21:117;;:50;;;-1:-1:-1;1637:11:117;;-1:-1:-1;;;;;1637:11:117;1623:10;:25;1598:50;:101;;;-1:-1:-1;;;;;;1666:21:117;;;;;;;:10;:21;;;;;:33;;;;;;;1652:10;:47;1598:101;1594:196;;;5149:29:::1;5168:9;5149:18;:29::i;:::-;-1:-1:-1::0;;;;;5188:21:117;::::1;;::::0;;;:10:::1;:21;::::0;;;;;;:47;;;5250:43;::::1;::::0;::::1;::::0;5222:13;2956:25:128;;2944:2;2929:18;;2810:177;5250:43:117::1;;;;;;;;5028:272:::0;;;:::o;1594:196::-;5028:272;;;:::o;2064:101:14:-;1334:13;:11;:13::i;:::-;2128:30:::1;2155:1;2128:18;:30::i;:::-;2064:101::o:0;2503:274:117:-;1513:6:14;;-1:-1:-1;;;;;1513:6:14;1388:10:117;:21;;:50;;-1:-1:-1;1427:11:117;;-1:-1:-1;;;;;1427:11:117;1413:10;:25;1388:50;1384:136;;;2618:25:::1;2637:5;2618:18;:25::i;:::-;-1:-1:-1::0;;;;;2653:17:117;::::1;;::::0;;;:10:::1;:17;::::0;;;;;;;;:33;;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;2701:69;;580:25:128;;;621:18;;;614:34;2701:69:117::1;::::0;553:18:128;2701:69:117::1;;;;;;;4244:274:::0;;:::o;1384:136::-;1493:16;;;;;;;;;;;;;;2878:177;1513:6:14;;-1:-1:-1;;;;;1513:6:14;1388:10:117;:21;;:50;;-1:-1:-1;1427:11:117;;-1:-1:-1;;;;;1427:11:117;1413:10;:25;1388:50;1384:136;;;2956:25:::1;2975:5;2956:18;:25::i;:::-;-1:-1:-1::0;;;;;2998:17:117;::::1;;::::0;;;:10:::1;:17;::::0;;;;;2991:24;;;::::1;;::::0;;;3030:18;::::1;::::0;2998:17;3030:18:::1;3143:195:66::0;:::o;2148:172:117:-;3279:19:16;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:16;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:16;1713:19:19;:23;;;3387:66:16;;-1:-1:-1;3436:12:16;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:16;;6872:2:128;3325:201:16;;;6854:21:128;6911:2;6891:18;;;6884:30;6950:34;6930:18;;;6923:62;7021:16;7001:18;;;6994:44;7055:19;;3325:201:16;6670:410:128;3325:201:16;3536:12;:16;;-1:-1:-1;;3536:16:16;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:16;;;;;3562:65;2219:16:117::1;:14;:16::i;:::-;2245:32;2264:12;2245:18;:32::i;:::-;2287:11;:26:::0;;-1:-1:-1;;2287:26:117::1;-1:-1:-1::0;;;;;2287:26:117;::::1;;::::0;;3647:99:16;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:16;;;3721:14;;-1:-1:-1;7237:36:128;;3721:14:16;;7225:2:128;7210:18;3721:14:16;;;;;;;3269:483;2148:172:117;:::o;4621:211::-;-1:-1:-1;;;;;1870:21:117;;;;;;;:10;:21;;;;;:33;;;4687:9;;1870:33;;;;;1856:10;:47;1852:130;;4708:29:::1;4727:9;4708:18;:29::i;:::-;-1:-1:-1::0;;;;;4747:21:117;::::1;;::::0;;;:10:::1;:21;::::0;;;;;4778:4:::1;4747:28:::0;;::::1;:35:::0;;-1:-1:-1;;4747:35:117::1;::::0;;::::1;::::0;;4797:28;::::1;::::0;4747:21;4797:28:::1;4244:274:::0;;:::o;1852:130::-;1958:13;;;;;;;;;;;;;;2314:198:14;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2402:22:14;::::1;2394:73;;;::::0;-1:-1:-1;;;2394:73:14;;7486:2:128;2394:73:14::1;::::0;::::1;7468:21:128::0;7525:2;7505:18;;;7498:30;7564:34;7544:18;;;7537:62;7635:8;7615:18;;;7608:36;7661:19;;2394:73:14::1;7284:402:128::0;2394:73:14::1;2477:28;2496:8;2477:18;:28::i;3595:532:117:-:0;1513:6:14;;-1:-1:-1;;;;;1513:6:14;1388:10:117;:21;;:50;;-1:-1:-1;1427:11:117;;-1:-1:-1;;;;;1427:11:117;1413:10;:25;1388:50;1384:136;;;3711:29:::1;3730:9;3711:18;:29::i;:::-;3750:32;3769:12;3750:18;:32::i;:::-;-1:-1:-1::0;;;;;3796:21:117;::::1;;::::0;;;:10:::1;:21;::::0;;;;:31;:36;::::1;::::0;:87:::1;;-1:-1:-1::0;;;;;;3836:21:117;;::::1;3881:1;3836:21:::0;;;:10:::1;:21;::::0;;;;:33:::1;;::::0;::::1;::::0;::::1;;:47:::0;::::1;3796:87;3792:148;;;3906:23;;;;;;;;;;;;;;3792:148;3973:75;::::0;;::::1;::::0;;::::1;::::0;;;;;-1:-1:-1;3973:75:117::1;::::0;;::::1;::::0;;;-1:-1:-1;;;;;3973:75:117;;::::1;::::0;;;;;;3949:21;;::::1;::::0;;;:10:::1;:21:::0;;;;;:99;;;;;;3973:75;3949:99;;::::1;::::0;;;;;;::::1;;;::::0;;::::1;;::::0;;;;;;;;;;;;::::1;::::0;;4063:57;;855:25:128;;;896:18;;;889:50;;;;955:18;;;948:83;;;;3949:21:117;;4063:57:::1;::::0;828:18:128;4063:57:117::1;659:378:128::0;1994:148:117;-1:-1:-1;;;;;2067:22:117;;2063:73;;2112:13;;;;;;;;;;;;;;6261:66;1334:13:14;:11;:13::i;2494:922:64:-;689:66;2910:48;;;2906:504;;;2974:37;2993:17;2974:18;:37::i;2906:504::-;3064:17;-1:-1:-1;;;;;3046:50:64;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3046:52:64;;;;;;;;-1:-1:-1;;3046:52:64;;;;;;;;;;;;:::i;:::-;;;3042:291;;3262:56;;-1:-1:-1;;;3262:56:64;;8082:2:128;3262:56:64;;;8064:21:128;8121:2;8101:18;;;8094:30;8160:34;8140:18;;;8133:62;8231:16;8211:18;;;8204:44;8265:19;;3262:56:64;7880:410:128;3042:291:64;1030:66;3148:28;;3140:82;;;;-1:-1:-1;;;3140:82:64;;8497:2:128;3140:82:64;;;8479:21:128;8536:2;8516:18;;;8509:30;8575:34;8555:18;;;8548:62;8646:11;8626:18;;;8619:39;8675:19;;3140:82:64;8295:405:128;3140:82:64;3099:138;3346:53;3364:17;3383:4;3389:9;3346:17;:53::i;1599:130:14:-;1513:6;;-1:-1:-1;;;;;1513:6:14;929:10:20;1662:23:14;1654:68;;;;-1:-1:-1;;;1654:68:14;;8907:2:128;1654:68:14;;;8889:21:128;;;8926:18;;;8919:30;8985:34;8965:18;;;8958:62;9037:18;;1654:68:14;8705:356:128;2666:187:14;2758:6;;;-1:-1:-1;;;;;2774:17:14;;;-1:-1:-1;;2774:17:14;;;;;;;2806:40;;2758:6;;;2774:17;2758:6;;2806:40;;2739:16;;2806:40;2729:124;2666:187;:::o;1003:95::-;5374:13:16;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:16;;9268:2:128;5366:69:16;;;9250:21:128;9307:2;9287:18;;;9280:30;9346:34;9326:18;;;9319:62;-1:-1:-1;;;9397:18:128;;;9390:41;9448:19;;5366:69:16;9066:407:128;5366:69:16;1065:26:14::1;:24;:26::i;1406:259:64:-:0;-1:-1:-1;;;;;1713:19:19;;;1479:95:64;;;;-1:-1:-1;;;1479:95:64;;9680:2:128;1479:95:64;;;9662:21:128;9719:2;9699:18;;;9692:30;9758:34;9738:18;;;9731:62;9829:15;9809:18;;;9802:43;9862:19;;1479:95:64;9478:409:128;1479:95:64;1030:66;1584:74;;-1:-1:-1;;1584:74:64;-1:-1:-1;;;;;1584:74:64;;;;;;;;;;1406:259::o;2057:265::-;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;:53::i;:::-;;2057:265;;;:::o;1104:111:14:-;5374:13:16;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:16;;9268:2:128;5366:69:16;;;9250:21:128;9307:2;9287:18;;;9280:30;9346:34;9326:18;;;9319:62;-1:-1:-1;;;9397:18:128;;;9390:41;9448:19;;5366:69:16;9066:407:128;5366:69:16;1176:32:14::1;929:10:20::0;1176:18:14::1;:32::i;1771:152:64:-:0;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:64;;;;;;;;1771:152;:::o;6674:198:78:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:78:o;7058:325::-;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:78;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:78:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;-1:-1:-1;;;;;1713:19:19;;;8113:60:78;;;;-1:-1:-1;;;8113:60:78;;10641:2:128;8113:60:78;;;10623:21:128;10680:2;10660:18;;;10653:30;10719:31;10699:18;;;10692:59;10768:18;;8113:60:78;10439:353:128;8113:60:78;-1:-1:-1;8208:10:78;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:78;;;;;;;;:::i;14:196:128:-;82:20;;-1:-1:-1;;;;;131:54:128;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;1042:260::-;1110:6;1118;1171:2;1159:9;1150:7;1146:23;1142:32;1139:52;;;1187:1;1184;1177:12;1139:52;1210:29;1229:9;1210:29;:::i;:::-;1200:39;;1258:38;1292:2;1281:9;1277:18;1258:38;:::i;:::-;1248:48;;1042:260;;;;;:::o;1499:184::-;1551:77;1548:1;1541:88;1648:4;1645:1;1638:15;1672:4;1669:1;1662:15;1688:275;1759:2;1753:9;1824:2;1805:13;;-1:-1:-1;;1801:27:128;1789:40;;1859:18;1844:34;;1880:22;;;1841:62;1838:88;;;1906:18;;:::i;:::-;1942:2;1935:22;1688:275;;-1:-1:-1;1688:275:128:o;1968:837::-;2045:6;2053;2106:2;2094:9;2085:7;2081:23;2077:32;2074:52;;;2122:1;2119;2112:12;2074:52;2145:29;2164:9;2145:29;:::i;:::-;2135:39;;2193:2;2246;2235:9;2231:18;2218:32;2269:18;2310:2;2302:6;2299:14;2296:34;;;2326:1;2323;2316:12;2296:34;2364:6;2353:9;2349:22;2339:32;;2409:7;2402:4;2398:2;2394:13;2390:27;2380:55;;2431:1;2428;2421:12;2380:55;2467:2;2454:16;2489:2;2485;2482:10;2479:36;;;2495:18;;:::i;:::-;2537:53;2580:2;2561:13;;-1:-1:-1;;2557:27:128;2553:36;;2537:53;:::i;:::-;2524:66;;2613:2;2606:5;2599:17;2653:7;2648:2;2643;2639;2635:11;2631:20;2628:33;2625:53;;;2674:1;2671;2664:12;2625:53;2729:2;2724;2720;2716:11;2711:2;2704:5;2700:14;2687:45;2773:1;2768:2;2763;2756:5;2752:14;2748:23;2741:34;;2794:5;2784:15;;;;;1968:837;;;;;:::o;2992:254::-;3060:6;3068;3121:2;3109:9;3100:7;3096:23;3092:32;3089:52;;;3137:1;3134;3127:12;3089:52;3160:29;3179:9;3160:29;:::i;:::-;3150:39;3236:2;3221:18;;;;3208:32;;-1:-1:-1;;;2992:254:128:o;3251:669::-;3350:6;3358;3402:9;3393:7;3389:23;3432:2;3428;3424:11;3421:31;;;3448:1;3445;3438:12;3421:31;3471:29;3490:9;3471:29;:::i;:::-;3461:39;-1:-1:-1;3534:4:128;-1:-1:-1;;3516:16:128;;3512:27;3509:47;;;3552:1;3549;3542:12;3509:47;;3585:4;3579:11;3629:4;3621:6;3617:17;3700:6;3688:10;3685:22;3664:18;3652:10;3649:34;3646:62;3643:88;;;3711:18;;:::i;:::-;3747:4;3740:24;;;3816:2;3801:18;;;3788:32;3773:48;;3867:20;;3854:34;3837:15;;;3830:59;;;;-1:-1:-1;3251:669:128;3780:6;;-1:-1:-1;3251:669:128:o;4904:328::-;4981:6;4989;4997;5050:2;5038:9;5029:7;5025:23;5021:32;5018:52;;;5066:1;5063;5056:12;5018:52;5089:29;5108:9;5089:29;:::i;:::-;5079:39;;5165:2;5154:9;5150:18;5137:32;5127:42;;5188:38;5222:2;5211:9;5207:18;5188:38;:::i;:::-;5178:48;;4904:328;;;;;:::o;7691:184::-;7761:6;7814:2;7802:9;7793:7;7789:23;7785:32;7782:52;;;7830:1;7827;7820:12;7782:52;-1:-1:-1;7853:16:128;;7691:184;-1:-1:-1;7691:184:128:o;9892:250::-;9977:1;9987:113;10001:6;9998:1;9995:13;9987:113;;;10077:11;;;10071:18;10058:11;;;10051:39;10023:2;10016:10;9987:113;;;-1:-1:-1;;10134:1:128;10116:16;;10109:27;9892:250::o;10147:287::-;10276:3;10314:6;10308:13;10330:66;10389:6;10384:3;10377:4;10369:6;10365:17;10330:66;:::i;:::-;10412:16;;;;;10147:287;-1:-1:-1;;10147:287:128:o;10797:396::-;10946:2;10935:9;10928:21;10909:4;10978:6;10972:13;11021:6;11016:2;11005:9;11001:18;10994:34;11037:79;11109:6;11104:2;11093:9;11089:18;11084:2;11076:6;11072:15;11037:79;:::i;:::-;11177:2;11156:15;-1:-1:-1;;11152:29:128;11137:45;;;;11184:2;11133:54;;10797:396;-1:-1:-1;;10797:396:128:o","linkReferences":{},"immutableReferences":{"56059":[{"start":1622,"length":32},{"start":1760,"length":32},{"start":2254,"length":32},{"start":2387,"length":32},{"start":2617,"length":32}]}},"methodIdentifiers":{"activateStrategy(address)":"d80ea5a0","addStrategy(address,uint256,address)":"fc2ebdd1","addUserScore(address,(uint256,uint256))":"7814d568","canExecuteAction(address,address)":"42a987a0","changeListManager(address)":"3d476830","getStrategy(address)":"f8806a13","getUserScore(address)":"b34e0c47","initialize(address)":"c4d66de8","listManager()":"8df8b2fe","modifyThreshold(address,uint256)":"642ce76b","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","removeStrategy(address)":"175188e8","removeUser(address)":"98575188","renounceOwnership()":"715018a6","strategies(address)":"39ebf823","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286","userScores(address)":"1413d4c0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"OnlyAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCouncil\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCouncilOrAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StrategyAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newManager\",\"type\":\"address\"}],\"name\":\"ListManagerChanged\",\"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\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"councilSafe\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"ThresholdModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"UserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"name\":\"UserScoreAdded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"}],\"name\":\"activateStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_councilSafe\",\"type\":\"address\"}],\"name\":\"addStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"internalType\":\"struct PassportData\",\"name\":\"_passportData\",\"type\":\"tuple\"}],\"name\":\"addUserScore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"}],\"name\":\"canExecuteAction\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newManager\",\"type\":\"address\"}],\"name\":\"changeListManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"}],\"name\":\"getStrategy\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"councilSafe\",\"type\":\"address\"}],\"internalType\":\"struct Strategy\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getUserScore\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"internalType\":\"struct PassportData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_listManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"listManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_newThreshold\",\"type\":\"uint256\"}],\"name\":\"modifyThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"}],\"name\":\"removeStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"removeUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"strategies\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"councilSafe\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userScores\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"activateStrategy(address)\":{\"params\":{\"_strategy\":\"address of the strategy to activate\"}},\"addStrategy(address,uint256,address)\":{\"params\":{\"_councilSafe\":\"address of the council safe\",\"_threshold\":\"is expressed on a scale of 10**4\"}},\"addUserScore(address,(uint256,uint256))\":{\"params\":{\"_passportData\":\"PassportData struct with the user score and lastUpdated\",\"_user\":\"address of the user to add\"}},\"canExecuteAction(address,address)\":{\"params\":{\"_strategy\":\"address of the strategy to check\",\"_user\":\"address of the user to check\"}},\"changeListManager(address)\":{\"params\":{\"_newManager\":\"address of the new list manager\"}},\"getStrategy(address)\":{\"params\":{\"_strategy\":\"address of the strategy to check\"}},\"getUserScore(address)\":{\"params\":{\"_user\":\"address of the user to check\"}},\"modifyThreshold(address,uint256)\":{\"params\":{\"_newThreshold\":\"new threshold to set expressed on a scale of 10**4\",\"_strategy\":\"address of the strategy to modify\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"removeStrategy(address)\":{\"params\":{\"_strategy\":\"address of the strategy to remove\"}},\"removeUser(address)\":{\"params\":{\"_user\":\"address of the user to remove\"}},\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"activateStrategy(address)\":{\"notice\":\"Activate a strategy\"},\"addStrategy(address,uint256,address)\":{\"notice\":\"Add a strategy to the contract\"},\"addUserScore(address,(uint256,uint256))\":{\"notice\":\"Add a userScore to the list\"},\"canExecuteAction(address,address)\":{\"notice\":\"Check if an action can be executed\"},\"changeListManager(address)\":{\"notice\":\"Change the list manager address\"},\"getStrategy(address)\":{\"notice\":\"Get the strategy data\"},\"getUserScore(address)\":{\"notice\":\"Get the score of a user\"},\"modifyThreshold(address,uint256)\":{\"notice\":\"Modify the threshold of a strategy\"},\"removeStrategy(address)\":{\"notice\":\"Remove a strategy from the contract\"},\"removeUser(address)\":{\"notice\":\"Remove a user from the list\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"pkg/contracts/src/PassportScorer.sol\":\"PassportScorer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/foundry/=lib/openzeppelin-foundry-upgrades/src/\",\":@prb/math/=lib/allo-v2/lib/v2-core/lib/prb-math/\",\":@prb/test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/\",\":@sablier/v2-core/=lib/allo-v2/lib/v2-core/\",\":ERC1155/=lib/allo-v2/lib/hats-protocol/lib/ERC1155/\",\":allo-v2-contracts/=lib/allo-v2/contracts/\",\":allo-v2-test/=lib/allo-v2/test/\",\":allo-v2/=lib/allo-v2/\",\":ds-test/=lib/allo-v2/lib/forge-std/lib/ds-test/src/\",\":eas-contracts/=lib/allo-v2/lib/eas-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/allo-v2/lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hats-protocol/=lib/allo-v2/lib/hats-protocol/\",\":openzeppelin-contracts-upgradeable/=lib/allo-v2/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":permit2/=lib/allo-v2/lib/permit2/\",\":prb-math/=lib/allo-v2/lib/v2-core/lib/prb-math/src/\",\":prb-test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/\",\":solady/=lib/allo-v2/lib/solady/\",\":solarray/=lib/allo-v2/lib/v2-core/lib/solarray/src/\",\":solbase/=lib/allo-v2/lib/hats-protocol/lib/solbase/src/\",\":solmate/=lib/allo-v2/lib/permit2/lib/solmate/\",\":utils/=lib/allo-v2/lib/hats-protocol/lib/utils/\",\":v2-core/=lib/allo-v2/lib/v2-core/\"]},\"sources\":{\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1\",\"dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]},\"pkg/contracts/src/ISybilScorer.sol\":{\"keccak256\":\"0x0e25fbb8497ac3c969d80c9032362d45e56c0a45dc9ba3dff6a8a704571f38ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dff90ebae6e7131a5300fcaf525bc2ab0ae90fcd13f277d7b7b6939eeb8b7eb\",\"dweb:/ipfs/QmYGkYqpUVrBWoNY6f3CtwrrVQFWSvnJfpu68t95f6AkBY\"]},\"pkg/contracts/src/PassportScorer.sol\":{\"keccak256\":\"0x1244948644eb13bbdbf2b62e465427229a9e227e0c214c92eeaf6021401a6513\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://02dc7d6dcc3c0fe5bdd401f58c2b767030a31878734b133e09ea0aa282566d23\",\"dweb:/ipfs/QmVY9NQLx4kKyV7Cxbj9yA4soZ7DuNUEHHPoNfcdmauM3M\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"OnlyAuthorized"},{"inputs":[],"type":"error","name":"OnlyCouncil"},{"inputs":[],"type":"error","name":"OnlyCouncilOrAuthorized"},{"inputs":[],"type":"error","name":"StrategyAlreadyExists"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"oldManager","type":"address","indexed":true},{"internalType":"address","name":"newManager","type":"address","indexed":true}],"type":"event","name":"ListManagerChanged","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":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyActivated","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true},{"internalType":"uint256","name":"threshold","type":"uint256","indexed":false},{"internalType":"bool","name":"active","type":"bool","indexed":false},{"internalType":"address","name":"councilSafe","type":"address","indexed":false}],"type":"event","name":"StrategyAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true},{"internalType":"uint256","name":"newThreshold","type":"uint256","indexed":false}],"type":"event","name":"ThresholdModified","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"UserRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"uint256","name":"score","type":"uint256","indexed":false},{"internalType":"uint256","name":"lastUpdated","type":"uint256","indexed":false}],"type":"event","name":"UserScoreAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"activateStrategy"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"address","name":"_councilSafe","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addStrategy"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"struct PassportData","name":"_passportData","type":"tuple","components":[{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"uint256","name":"lastUpdated","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"addUserScore"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_strategy","type":"address"}],"stateMutability":"view","type":"function","name":"canExecuteAction","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_newManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"changeListManager"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"stateMutability":"view","type":"function","name":"getStrategy","outputs":[{"internalType":"struct Strategy","name":"","type":"tuple","components":[{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"address","name":"councilSafe","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"stateMutability":"view","type":"function","name":"getUserScore","outputs":[{"internalType":"struct PassportData","name":"","type":"tuple","components":[{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"uint256","name":"lastUpdated","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_listManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"listManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"modifyThreshold"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeStrategy"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeUser"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"strategies","outputs":[{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"address","name":"councilSafe","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"userScores","outputs":[{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"uint256","name":"lastUpdated","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"activateStrategy(address)":{"params":{"_strategy":"address of the strategy to activate"}},"addStrategy(address,uint256,address)":{"params":{"_councilSafe":"address of the council safe","_threshold":"is expressed on a scale of 10**4"}},"addUserScore(address,(uint256,uint256))":{"params":{"_passportData":"PassportData struct with the user score and lastUpdated","_user":"address of the user to add"}},"canExecuteAction(address,address)":{"params":{"_strategy":"address of the strategy to check","_user":"address of the user to check"}},"changeListManager(address)":{"params":{"_newManager":"address of the new list manager"}},"getStrategy(address)":{"params":{"_strategy":"address of the strategy to check"}},"getUserScore(address)":{"params":{"_user":"address of the user to check"}},"modifyThreshold(address,uint256)":{"params":{"_newThreshold":"new threshold to set expressed on a scale of 10**4","_strategy":"address of the strategy to modify"}},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"removeStrategy(address)":{"params":{"_strategy":"address of the strategy to remove"}},"removeUser(address)":{"params":{"_user":"address of the user to remove"}},"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"activateStrategy(address)":{"notice":"Activate a strategy"},"addStrategy(address,uint256,address)":{"notice":"Add a strategy to the contract"},"addUserScore(address,(uint256,uint256))":{"notice":"Add a userScore to the list"},"canExecuteAction(address,address)":{"notice":"Check if an action can be executed"},"changeListManager(address)":{"notice":"Change the list manager address"},"getStrategy(address)":{"notice":"Get the strategy data"},"getUserScore(address)":{"notice":"Get the score of a user"},"modifyThreshold(address,uint256)":{"notice":"Modify the threshold of a strategy"},"removeStrategy(address)":{"notice":"Remove a strategy from the contract"},"removeUser(address)":{"notice":"Remove a user from the list"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/foundry/=lib/openzeppelin-foundry-upgrades/src/","@prb/math/=lib/allo-v2/lib/v2-core/lib/prb-math/","@prb/test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/","@sablier/v2-core/=lib/allo-v2/lib/v2-core/","ERC1155/=lib/allo-v2/lib/hats-protocol/lib/ERC1155/","allo-v2-contracts/=lib/allo-v2/contracts/","allo-v2-test/=lib/allo-v2/test/","allo-v2/=lib/allo-v2/","ds-test/=lib/allo-v2/lib/forge-std/lib/ds-test/src/","eas-contracts/=lib/allo-v2/lib/eas-contracts/contracts/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/allo-v2/lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hats-protocol/=lib/allo-v2/lib/hats-protocol/","openzeppelin-contracts-upgradeable/=lib/allo-v2/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","permit2/=lib/allo-v2/lib/permit2/","prb-math/=lib/allo-v2/lib/v2-core/lib/prb-math/src/","prb-test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/","solady/=lib/allo-v2/lib/solady/","solarray/=lib/allo-v2/lib/v2-core/lib/solarray/src/","solbase/=lib/allo-v2/lib/hats-protocol/lib/solbase/src/","solmate/=lib/allo-v2/lib/permit2/lib/solmate/","utils/=lib/allo-v2/lib/hats-protocol/lib/utils/","v2-core/=lib/allo-v2/lib/v2-core/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"pkg/contracts/src/PassportScorer.sol":"PassportScorer"},"evmVersion":"paris","libraries":{}},"sources":{"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90","urls":["bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263","dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2","urls":["bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2","dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf","urls":["bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1","dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM"],"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/StorageSlot.sol":{"keccak256":"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899","urls":["bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da","dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q"],"license":"MIT"},"pkg/contracts/src/ISybilScorer.sol":{"keccak256":"0x0e25fbb8497ac3c969d80c9032362d45e56c0a45dc9ba3dff6a8a704571f38ea","urls":["bzz-raw://0dff90ebae6e7131a5300fcaf525bc2ab0ae90fcd13f277d7b7b6939eeb8b7eb","dweb:/ipfs/QmYGkYqpUVrBWoNY6f3CtwrrVQFWSvnJfpu68t95f6AkBY"],"license":"MIT"},"pkg/contracts/src/PassportScorer.sol":{"keccak256":"0x1244948644eb13bbdbf2b62e465427229a9e227e0c214c92eeaf6021401a6513","urls":["bzz-raw://02dc7d6dcc3c0fe5bdd401f58c2b767030a31878734b133e09ea0aa282566d23","dweb:/ipfs/QmVY9NQLx4kKyV7Cxbj9yA4soZ7DuNUEHHPoNfcdmauM3M"],"license":"AGPL-3.0-or-later"}},"version":1},"id":117} \ No newline at end of file diff --git a/pkg/contracts/out/PassportScorerTest.t.sol/PassportScorerTest.json b/pkg/contracts/out/PassportScorerTest.t.sol/PassportScorerTest.json index 1dac0aeba..2825cd2e2 100644 --- a/pkg/contracts/out/PassportScorerTest.t.sol/PassportScorerTest.json +++ b/pkg/contracts/out/PassportScorerTest.t.sol/PassportScorerTest.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"councilSafe","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"listManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"passportData","inputs":[],"outputs":[{"name":"score","type":"uint256","internalType":"uint256"},{"name":"lastUpdated","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"passportScorer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PassportScorer"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"strategy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testAddStrategy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testAddUserScore","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCanExecuteAction","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testChangeListManager","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testModifyThresholdByAuthorized","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testModifyThresholdByCouncilSafe","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOnlyAuthorizedCanAddUserScore","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOnlyAuthorizedCanRemoveUser","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOnlyOwnerCanChangeListManager","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRemoveStrategy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRemoveUser","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unauthorizedUser","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"user","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600c805460ff199081166001908117909255601e805490911682179055601f80546001600160a01b0319908116909217905560208054821660021790556021805482166003179055602280548216600417905560238054909116600517905534801561006f57600080fd5b506143268061007f6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636c53db9a11610104578063a8c62e76116100a2578063e20c9f7111610071578063e20c9f7114610374578063e68393b41461037c578063ebe69a5f14610384578063fa7626d41461038c57600080fd5b8063a8c62e7614610339578063b5508aa91461034c578063ba414fa614610354578063d4dadecb1461036c57600080fd5b80638caa5c44116100de5780638caa5c441461030e5780638df8b2fe14610316578063916a17c6146103295780639693f1281461033157600080fd5b80636c53db9a146102de57806382fad478146102f157806385226c81146102f957600080fd5b80632ade38801161017c5780633f7286f41161014b5780633f7286f4146102965780634905e8311461029e5780634f8632ba146102b657806366d9a9a0146102c957600080fd5b80632ade3880146102465780633668aa291461025b5780633e5e3c23146102635780633ea7771b1461026b57600080fd5b80630c2759da116101b85780630c2759da146102195780631ed7831c1461022157806324e40b9714610236578063258211531461023e57600080fd5b8063073a2d8c146101df5780630778c72c146102075780630a9254e414610211575b600080fd5b6024546025546101ed919082565b604080519283526020830191909152015b60405180910390f35b61020f610399565b005b61020f61062b565b61020f610724565b6102296108a9565b6040516101fe91906124a9565b61020f61090b565b61020f610a92565b61024e610be1565b6040516101fe91906124f6565b61020f610d23565b610229610fa0565b60235461027e906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b610229611000565b601e5461027e9061010090046001600160a01b031681565b60205461027e906001600160a01b031681565b6102d1611060565b6040516101fe91906125e9565b60225461027e906001600160a01b031681565b61020f61115b565b610301611270565b6040516101fe91906126b4565b61020f611340565b601f5461027e906001600160a01b031681565b6102d161188d565b61020f611988565b60215461027e906001600160a01b031681565b610301611b01565b61035c611bd1565b60405190151581526020016101fe565b61020f611ca5565b610229611efa565b61020f611f5a565b61020f61208d565b601e5461035c9060ff1681565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156103f557600080fd5b505af1158015610409573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101879052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b15801561046d57600080fd5b505af1158015610481573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156104de57600080fd5b505af11580156104f2573d6000803e3d6000fd5b5050601e546021546040517f175188e80000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063175188e89150602401600060405180830381600087803b15801561055d57600080fd5b505af1158015610571573d6000803e3d6000fd5b5050601e546021546040516339ebf82360e01b81526001600160a01b0391821660048201526000945084935083926101009004909116906339ebf82390602401606060405180830381865afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f29190612772565b92509250925061060383600061228d565b61060e826000612315565b6022546106259082906001600160a01b031661236f565b50505050565b6040516106379061249c565b604051809103906000f080158015610653573d6000803e3d6000fd5b50601e80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055601f546040517fc4d66de8000000000000000000000000000000000000000000000000000000008152908416600482015291049091169063c4d66de890602401600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b50506040805180820190915260648082524260209092018290526024556025555050565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561077d57600080fd5b505af1158015610791573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d5689150606401600060405180830381600087803b1580156107f357600080fd5b505af1158015610807573d6000803e3d6000fd5b5050601e5460205460405163b34e0c4760e01b81526001600160a01b0391821660048201526000945061010090920416915063b34e0c47906024016040805180830381865afa15801561085e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088291906127ae565b80516024549192506108939161228d565b6108a6816020015160246001015461228d565b50565b6060601680548060200260200160405190810160405280929190818152602001828054801561090157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108e3575b5050505050905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152600690737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561096757600080fd5b505af115801561097b573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150606401600060405180830381600087803b158015610a1257600080fd5b505af1158015610a26573d6000803e3d6000fd5b5050601e546040516303d4768360e41b81526001600160a01b0385811660048301526101009092049091169250633d4768309150602401600060405180830381600087803b158015610a7757600080fd5b505af1158015610a8b573d6000803e3d6000fd5b5050505050565b60235460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b5050604051630618f58760e51b8152637d7b71b560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015610b5657600080fd5b505af1158015610b6a573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d56891506064015b600060405180830381600087803b158015610bcd57600080fd5b505af1158015610625573d6000803e3d6000fd5b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610d1a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610d03578382906000526020600020018054610c769061280b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca29061280b565b8015610cef5780601f10610cc457610100808354040283529160200191610cef565b820191906000526020600020905b815481529060010190602001808311610cd257829003601f168201915b505050505081526020019060010190610c57565b505050508152505081526020019060010190610c05565b50505050905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290604b90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610d8257600080fd5b505af1158015610d96573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101889052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b158015610dfa57600080fd5b505af1158015610e0e573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b5050601e5460215460405163642ce76b60e01b81526001600160a01b0391821660048201526024810186905261010090920416925063642ce76b9150604401600060405180830381600087803b158015610ed957600080fd5b505af1158015610eed573d6000803e3d6000fd5b5050601e546021546040516339ebf82360e01b81526001600160a01b0391821660048201526000945084935083926101009004909116906339ebf82390602401606060405180830381865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190612772565b925092509250610f7e838561228d565b610f89826000612315565b602254610a8b9082906001600160a01b031661236f565b60606018805480602002602001604051908101604052809291908181526020018280548015610901576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108e3575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610901576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108e3575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610d1a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561114357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116110f05790505b50505050508152505081526020019060010190611084565b60235460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156111b457600080fd5b505af11580156111c8573d6000803e3d6000fd5b5050604051630618f58760e51b8152637d7b71b560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561121f57600080fd5b505af1158015611233573d6000803e3d6000fd5b5050601e5460205460405163130aea3160e31b81526001600160a01b03918216600482015261010090920416925063985751889150602401610bb3565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610d1a5783829060005260206000200180546112b39061280b565b80601f01602080910402602001604051908101604052809291908181526020018280546112df9061280b565b801561132c5780601f106113015761010080835404028352916020019161132c565b820191906000526020600020905b81548152906001019060200180831161130f57829003601f168201915b505050505081526020019060010190611294565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561139c57600080fd5b505af11580156113b0573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101879052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b15801561141457600080fd5b505af1158015611428573d6000803e3d6000fd5b50506022546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b5050601e546021546040517fd80ea5a00000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063d80ea5a09150602401600060405180830381600087803b15801561151d57600080fd5b505af1158015611531573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561159357600080fd5b505af11580156115a7573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d5689150606401600060405180830381600087803b15801561167a57600080fd5b505af115801561168e573d6000803e3d6000fd5b5050601e546020546021546040516302154c3d60e51b81526001600160a01b0392831660048201529082166024820152600094506101009092041691506342a987a090604401602060405180830381865afa1580156116f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117159190612845565b9050611720816123d0565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561177957600080fd5b505af115801561178d573d6000803e3d6000fd5b5050601e5460215460405163642ce76b60e01b81526001600160a01b0391821660048201526096602482015261010090920416925063642ce76b9150604401600060405180830381600087803b1580156117e657600080fd5b505af11580156117fa573d6000803e3d6000fd5b5050601e546020546021546040516302154c3d60e51b81526001600160a01b03928316600482015290821660248201526101009092041692506342a987a09150604401602060405180830381865afa15801561185a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187e9190612845565b90506118898161244a565b5050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610d1a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561197057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161191d5790505b505050505081525050815260200190600101906118b1565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156119e457600080fd5b505af11580156119f8573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101879052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b158015611a5c57600080fd5b505af1158015611a70573d6000803e3d6000fd5b5050601e546021546040516339ebf82360e01b81526001600160a01b0391821660048201526000945084935083926101009004909116906339ebf82390602401606060405180830381865afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af19190612772565b925092509250610603838561228d565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610d1a578382906000526020600020018054611b449061280b565b80601f0160208091040260200160405190810160405280929190818152602001828054611b709061280b565b8015611bbd5780601f10611b9257610100808354040283529160200191611bbd565b820191906000526020600020905b815481529060010190602001808311611ba057829003601f168201915b505050505081526020019060010190611b25565b60085460009060ff1615611be9575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9e9190612867565b1415905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cfe57600080fd5b505af1158015611d12573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d5689150606401600060405180830381600087803b158015611d7457600080fd5b505af1158015611d88573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611de557600080fd5b505af1158015611df9573d6000803e3d6000fd5b5050601e5460205460405163130aea3160e31b81526001600160a01b03918216600482015261010090920416925063985751889150602401600060405180830381600087803b158015611e4b57600080fd5b505af1158015611e5f573d6000803e3d6000fd5b5050601e5460205460405163b34e0c4760e01b81526001600160a01b0391821660048201526000945061010090920416915063b34e0c47906024016040805180830381865afa158015611eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eda91906127ae565b9050611eeb8160000151600061228d565b6108a68160200151600061228d565b60606015805480602002602001604051908101604052809291908181526020018280548015610901576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108e3575050505050905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290604b90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101889052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b15801561203157600080fd5b505af1158015612045573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401610e52565b601e54604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa7926101009092046001600160a01b031691638da5cb5b916004808201926020929091908290030181865afa158015612113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121379190612880565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561219057600080fd5b505af11580156121a4573d6000803e3d6000fd5b5050601e546040516303d4768360e41b81526001600160a01b0385811660048301526101009092049091169250633d4768309150602401600060405180830381600087803b1580156121f557600080fd5b505af1158015612209573d6000803e3d6000fd5b505050506108a6601e60019054906101000a90046001600160a01b03166001600160a01b0316638df8b2fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122879190612880565b8261236f565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b1580156122f957600080fd5b505afa15801561230d573d6000803e3d6000fd5b505050505050565b6040517ff7fe347700000000000000000000000000000000000000000000000000000000815282151560048201528115156024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f7fe3477906044016122e1565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044016122e1565b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd581906024015b60006040518083038186803b15801561243657600080fd5b505afa158015610a8b573d6000803e3d6000fd5b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a59828859060240161241e565b611a558061289c83390190565b6020808252825182820181905260009190848201906040850190845b818110156124ea5783516001600160a01b0316835292840192918401916001016124c5565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156125db57603f19898403018552815180516001600160a01b031684528701518784018790528051878501819052908801906060600582901b86018101919086019060005b818110156125c557878403605f190183528451805180865260005b8181101561259e578e81840101518f82890101528e81019050612580565b5060008682018f0152958d0195601f01601f19169094018c019350918b0191600101612565565b505050958801959350509086019060010161251d565b509098975050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156126a557898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156126905783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019061264e565b50978a01979550505091870191600101612611565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b8381101561273857888603603f1901855282518051808852835b81811015612711578281018a01518982018b015289016126f6565b508781018901849052601f01601f19169096018701955093860193918601916001016126dc565b509398975050505050505050565b8051801515811461275657600080fd5b919050565b80516001600160a01b038116811461275657600080fd5b60008060006060848603121561278757600080fd5b8351925061279760208501612746565b91506127a56040850161275b565b90509250925092565b6000604082840312156127c057600080fd5b6040516040810181811067ffffffffffffffff821117156127f157634e487b7160e01b600052604160045260246000fd5b604052825181526020928301519281019290925250919050565b600181811c9082168061281f57607f821691505b60208210810361283f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561285757600080fd5b61286082612746565b9392505050565b60006020828403121561287957600080fd5b5051919050565b60006020828403121561289257600080fd5b6128608261275b56fe60a06040523060805234801561001457600080fd5b50608051611a0961004c60003960008181610656015281816106e0015281816108ce015281816109530152610a390152611a096000f3fe60806040526004361061015f5760003560e01c80637814d568116100c0578063c4d66de811610074578063f2fde38b11610059578063f2fde38b14610469578063f8806a1314610489578063fc2ebdd11461052f57600080fd5b8063c4d66de814610429578063d80ea5a01461044957600080fd5b80638df8b2fe116100a55780638df8b2fe1461036c578063985751881461038c578063b34e0c47146103ac57600080fd5b80637814d5681461031a5780638da5cb5b1461033a57600080fd5b806342a987a01161011757806352d1902d116100fc57806352d1902d146102c2578063642ce76b146102e5578063715018a61461030557600080fd5b806342a987a01461027f5780634f1ef286146102af57600080fd5b80633659cfe6116101485780633659cfe6146101d457806339ebf823146101f45780633d4768301461025f57600080fd5b80631413d4c014610164578063175188e8146101b2575b600080fd5b34801561017057600080fd5b5061019861017f3660046116f3565b6066602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b3480156101be57600080fd5b506101d26101cd3660046116f3565b61054f565b005b3480156101e057600080fd5b506101d26101ef3660046116f3565b61064c565b34801561020057600080fd5b5061023b61020f3660046116f3565b6067602052600090815260409020805460019091015460ff81169061010090046001600160a01b031683565b6040805193845291151560208401526001600160a01b0316908201526060016101a9565b34801561026b57600080fd5b506101d261027a3660046116f3565b6107cc565b34801561028b57600080fd5b5061029f61029a36600461170e565b61083c565b60405190151581526020016101a9565b6101d26102bd3660046117a1565b6108c4565b3480156102ce57600080fd5b506102d7610a2c565b6040519081526020016101a9565b3480156102f157600080fd5b506101d2610300366004611847565b610af1565b34801561031157600080fd5b506101d2610bc6565b34801561032657600080fd5b506101d2610335366004611871565b610bda565b34801561034657600080fd5b506033546001600160a01b03165b6040516001600160a01b0390911681526020016101a9565b34801561037857600080fd5b50606554610354906001600160a01b031681565b34801561039857600080fd5b506101d26103a73660046116f3565b610ca2565b3480156103b857600080fd5b5061040e6103c73660046116f3565b6040805180820190915260008082526020820152506001600160a01b0316600090815260666020908152604091829020825180840190935280548352600101549082015290565b604080518251815260209283015192810192909252016101a9565b34801561043557600080fd5b506101d26104443660046116f3565b610d1d565b34801561045557600080fd5b506101d26104643660046116f3565b610e6e565b34801561047557600080fd5b506101d26104843660046116f3565b610f27565b34801561049557600080fd5b506105026104a43660046116f3565b6040805160608082018352600080835260208084018290529284018190526001600160a01b0394851681526067835283902083519182018452805482526001015460ff81161515928201929092526101009091049092169082015290565b6040805182518152602080840151151590820152918101516001600160a01b0316908201526060016101a9565b34801561053b57600080fd5b506101d261054a3660046118e4565b610fb4565b806105626033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061058b57506065546001600160a01b031633145b806105b757506001600160a01b0381811660009081526067602052604090206001015461010090041633145b15610616576105c5826110ca565b6001600160a01b03821660008181526067602052604080822060018101805460ff19169055829055517f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea49190a25050565b6040517fe3b6914b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106de5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107397f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107a45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b6107ad8161110a565b604080516000808252602082019092526107c991839190611112565b50565b6107d46112b2565b6107dd816110ca565b606580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f5117c6c457d7b27a4cb68df40b118f157ac1f1ba81f8a571d189f829d74fbc8690600090a35050565b6001600160a01b03808316600090815260666020908152604080832081518083018352815481526001918201548185015286861685526067845282852083516060810185528154815292015460ff81161515948301859052610100900490951691810191909152919291906108b6576001925050506108be565b519051101590505b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109515760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016106d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109ac7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610a175760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b610a208261110a565b61064882826001611112565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610acc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d5565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b81610b046033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610b2d57506065546001600160a01b031633145b80610b5957506001600160a01b0381811660009081526067602052604090206001015461010090041633145b1561061657610b67836110ca565b6001600160a01b03831660008181526067602052604090819020849055517f40ba4d5d9facd2fda74e22251d1638576e05a30482470363c7c87a7b5b298c0990610bb49085815260200190565b60405180910390a2505050565b505050565b610bce6112b2565b610bd8600061130c565b565b6033546001600160a01b0316331480610bfd57506065546001600160a01b031633145b15610c7057610c0b826110ca565b6001600160a01b03821660008181526066602090815260409182902084518082558583015160019092018290558351908152918201527f1e0ca12706807bceff25136f95fe6f69c1319c044f6073e6056a287e4f541b1d910160405180910390a25050565b6040517f7d7b71b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033546001600160a01b0316331480610cc557506065546001600160a01b031633145b15610c7057610cd3816110ca565b6001600160a01b038116600081815260666020526040808220828155600101829055517fe9dce8c992623ce791725b21e857e33248d1f190a25b5168313420eebdaae99d9190a250565b600054610100900460ff1615808015610d3d5750600054600160ff909116105b80610d575750303b158015610d57575060005460ff166001145b610dc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106d5565b6000805460ff191660011790558015610dec576000805461ff0019166101001790555b610df461136b565b610dfd826110ca565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790558015610648576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6001600160a01b038082166000908152606760205260409020600101548291610100909104163303610ef557610ea3826110ca565b6001600160a01b0382166000818152606760205260408082206001908101805460ff19169091179055517f652f053fc39779b70b29678135ade972fcb79966fc68fcb77c996b1aa4fd9afb9190a25050565b6040517f97ffbac900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2f6112b2565b6001600160a01b038116610fab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106d5565b6107c98161130c565b6033546001600160a01b0316331480610fd757506065546001600160a01b031633145b15610c7057610fe5836110ca565b610fee816110ca565b6040805160608082018352848252600060208084018281526001600160a01b038781168688018181528b831680875260678652898720985189559351600190980180549151909316610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff981515989098167fffffffffffffffffffffff000000000000000000000000000000000000000000909116179690961790558551888152918201929092529384019290925290917f9b1a157188de9a0bd2e7995d72aaba244d9bd012ddf3ae3d4f492135175070cb9101610bb4565b6001600160a01b0381166107c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c96112b2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561114557610bc1836113de565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561119f575060408051601f3d908101601f1916820190925261119c91810190611920565b60015b6112115760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146112a65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016106d5565b50610bc18383836114a9565b6033546001600160a01b03163314610bd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d5565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166113d65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd86114d4565b6001600160a01b0381163b61145b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6114b283611548565b6000825111806114bf5750805b15610bc1576114ce8383611588565b50505050565b600054610100900460ff1661153f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd83361130c565b611551816113de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606115ad83836040518060600160405280602781526020016119ad602791396115b4565b9392505050565b6060600080856001600160a01b0316856040516115d1919061195d565b600060405180830381855af49150503d806000811461160c576040519150601f19603f3d011682016040523d82523d6000602084013e611611565b606091505b50915091506116228683838761162c565b9695505050505050565b6060831561169b578251600003611694576001600160a01b0385163b6116945760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d5565b50816116a5565b6116a583836116ad565b949350505050565b8151156116bd5781518083602001fd5b8060405162461bcd60e51b81526004016106d59190611979565b80356001600160a01b03811681146116ee57600080fd5b919050565b60006020828403121561170557600080fd5b6115ad826116d7565b6000806040838503121561172157600080fd5b61172a836116d7565b9150611738602084016116d7565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561179957611799611741565b604052919050565b600080604083850312156117b457600080fd5b6117bd836116d7565b915060208084013567ffffffffffffffff808211156117db57600080fd5b818601915086601f8301126117ef57600080fd5b81358181111561180157611801611741565b611813601f8201601f19168501611770565b9150808252878482850101111561182957600080fd5b80848401858401376000848284010152508093505050509250929050565b6000806040838503121561185a57600080fd5b611863836116d7565b946020939093013593505050565b600080828403606081121561188557600080fd5b61188e846116d7565b92506040601f19820112156118a257600080fd5b506040516040810181811067ffffffffffffffff821117156118c6576118c6611741565b60409081526020858101358352940135938101939093525092909150565b6000806000606084860312156118f957600080fd5b611902846116d7565b925060208401359150611917604085016116d7565b90509250925092565b60006020828403121561193257600080fd5b5051919050565b60005b8381101561195457818101518382015260200161193c565b50506000910152565b6000825161196f818460208701611939565b9190910192915050565b6020815260008251806020840152611998816040850160208701611939565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a8f6eaeb366c5c8c5c3a1820871dc36dd3bc338983f0986a24053dc142f66b3564736f6c63430008130033a26469706673582212200668ffed1c17f134873a492c76b334f08f5b3055648baae195718e628796b79e64736f6c63430008130033","sourceMap":"138:5034:123:-:0;;;3126:44:38;;;-1:-1:-1;;3126:44:38;;;3166:4;3126:44;;;;;;1016:26:48;;;;;;;;;;222:39:123;;;-1:-1:-1;;;;;;222:39:123;;;;;;;;267:32;;;;;297:1;267:32;;;305:36;;;;;339:1;305:36;;;347:39;;;;;384:1;347:39;;;392:44;;;;;;434:1;392:44;;;138:5034;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80636c53db9a11610104578063a8c62e76116100a2578063e20c9f7111610071578063e20c9f7114610374578063e68393b41461037c578063ebe69a5f14610384578063fa7626d41461038c57600080fd5b8063a8c62e7614610339578063b5508aa91461034c578063ba414fa614610354578063d4dadecb1461036c57600080fd5b80638caa5c44116100de5780638caa5c441461030e5780638df8b2fe14610316578063916a17c6146103295780639693f1281461033157600080fd5b80636c53db9a146102de57806382fad478146102f157806385226c81146102f957600080fd5b80632ade38801161017c5780633f7286f41161014b5780633f7286f4146102965780634905e8311461029e5780634f8632ba146102b657806366d9a9a0146102c957600080fd5b80632ade3880146102465780633668aa291461025b5780633e5e3c23146102635780633ea7771b1461026b57600080fd5b80630c2759da116101b85780630c2759da146102195780631ed7831c1461022157806324e40b9714610236578063258211531461023e57600080fd5b8063073a2d8c146101df5780630778c72c146102075780630a9254e414610211575b600080fd5b6024546025546101ed919082565b604080519283526020830191909152015b60405180910390f35b61020f610399565b005b61020f61062b565b61020f610724565b6102296108a9565b6040516101fe91906124a9565b61020f61090b565b61020f610a92565b61024e610be1565b6040516101fe91906124f6565b61020f610d23565b610229610fa0565b60235461027e906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b610229611000565b601e5461027e9061010090046001600160a01b031681565b60205461027e906001600160a01b031681565b6102d1611060565b6040516101fe91906125e9565b60225461027e906001600160a01b031681565b61020f61115b565b610301611270565b6040516101fe91906126b4565b61020f611340565b601f5461027e906001600160a01b031681565b6102d161188d565b61020f611988565b60215461027e906001600160a01b031681565b610301611b01565b61035c611bd1565b60405190151581526020016101fe565b61020f611ca5565b610229611efa565b61020f611f5a565b61020f61208d565b601e5461035c9060ff1681565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156103f557600080fd5b505af1158015610409573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101879052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b15801561046d57600080fd5b505af1158015610481573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156104de57600080fd5b505af11580156104f2573d6000803e3d6000fd5b5050601e546021546040517f175188e80000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063175188e89150602401600060405180830381600087803b15801561055d57600080fd5b505af1158015610571573d6000803e3d6000fd5b5050601e546021546040516339ebf82360e01b81526001600160a01b0391821660048201526000945084935083926101009004909116906339ebf82390602401606060405180830381865afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f29190612772565b92509250925061060383600061228d565b61060e826000612315565b6022546106259082906001600160a01b031661236f565b50505050565b6040516106379061249c565b604051809103906000f080158015610653573d6000803e3d6000fd5b50601e80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055601f546040517fc4d66de8000000000000000000000000000000000000000000000000000000008152908416600482015291049091169063c4d66de890602401600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b50506040805180820190915260648082524260209092018290526024556025555050565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561077d57600080fd5b505af1158015610791573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d5689150606401600060405180830381600087803b1580156107f357600080fd5b505af1158015610807573d6000803e3d6000fd5b5050601e5460205460405163b34e0c4760e01b81526001600160a01b0391821660048201526000945061010090920416915063b34e0c47906024016040805180830381865afa15801561085e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088291906127ae565b80516024549192506108939161228d565b6108a6816020015160246001015461228d565b50565b6060601680548060200260200160405190810160405280929190818152602001828054801561090157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108e3575b5050505050905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152600690737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561096757600080fd5b505af115801561097b573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150606401600060405180830381600087803b158015610a1257600080fd5b505af1158015610a26573d6000803e3d6000fd5b5050601e546040516303d4768360e41b81526001600160a01b0385811660048301526101009092049091169250633d4768309150602401600060405180830381600087803b158015610a7757600080fd5b505af1158015610a8b573d6000803e3d6000fd5b5050505050565b60235460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b5050604051630618f58760e51b8152637d7b71b560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015610b5657600080fd5b505af1158015610b6a573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d56891506064015b600060405180830381600087803b158015610bcd57600080fd5b505af1158015610625573d6000803e3d6000fd5b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610d1a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610d03578382906000526020600020018054610c769061280b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca29061280b565b8015610cef5780601f10610cc457610100808354040283529160200191610cef565b820191906000526020600020905b815481529060010190602001808311610cd257829003601f168201915b505050505081526020019060010190610c57565b505050508152505081526020019060010190610c05565b50505050905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290604b90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610d8257600080fd5b505af1158015610d96573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101889052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b158015610dfa57600080fd5b505af1158015610e0e573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b5050601e5460215460405163642ce76b60e01b81526001600160a01b0391821660048201526024810186905261010090920416925063642ce76b9150604401600060405180830381600087803b158015610ed957600080fd5b505af1158015610eed573d6000803e3d6000fd5b5050601e546021546040516339ebf82360e01b81526001600160a01b0391821660048201526000945084935083926101009004909116906339ebf82390602401606060405180830381865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190612772565b925092509250610f7e838561228d565b610f89826000612315565b602254610a8b9082906001600160a01b031661236f565b60606018805480602002602001604051908101604052809291908181526020018280548015610901576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108e3575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610901576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108e3575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610d1a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561114357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116110f05790505b50505050508152505081526020019060010190611084565b60235460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156111b457600080fd5b505af11580156111c8573d6000803e3d6000fd5b5050604051630618f58760e51b8152637d7b71b560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561121f57600080fd5b505af1158015611233573d6000803e3d6000fd5b5050601e5460205460405163130aea3160e31b81526001600160a01b03918216600482015261010090920416925063985751889150602401610bb3565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610d1a5783829060005260206000200180546112b39061280b565b80601f01602080910402602001604051908101604052809291908181526020018280546112df9061280b565b801561132c5780601f106113015761010080835404028352916020019161132c565b820191906000526020600020905b81548152906001019060200180831161130f57829003601f168201915b505050505081526020019060010190611294565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561139c57600080fd5b505af11580156113b0573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101879052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b15801561141457600080fd5b505af1158015611428573d6000803e3d6000fd5b50506022546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b5050601e546021546040517fd80ea5a00000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063d80ea5a09150602401600060405180830381600087803b15801561151d57600080fd5b505af1158015611531573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561159357600080fd5b505af11580156115a7573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d5689150606401600060405180830381600087803b15801561167a57600080fd5b505af115801561168e573d6000803e3d6000fd5b5050601e546020546021546040516302154c3d60e51b81526001600160a01b0392831660048201529082166024820152600094506101009092041691506342a987a090604401602060405180830381865afa1580156116f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117159190612845565b9050611720816123d0565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561177957600080fd5b505af115801561178d573d6000803e3d6000fd5b5050601e5460215460405163642ce76b60e01b81526001600160a01b0391821660048201526096602482015261010090920416925063642ce76b9150604401600060405180830381600087803b1580156117e657600080fd5b505af11580156117fa573d6000803e3d6000fd5b5050601e546020546021546040516302154c3d60e51b81526001600160a01b03928316600482015290821660248201526101009092041692506342a987a09150604401602060405180830381865afa15801561185a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187e9190612845565b90506118898161244a565b5050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610d1a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561197057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161191d5790505b505050505081525050815260200190600101906118b1565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156119e457600080fd5b505af11580156119f8573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101879052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b158015611a5c57600080fd5b505af1158015611a70573d6000803e3d6000fd5b5050601e546021546040516339ebf82360e01b81526001600160a01b0391821660048201526000945084935083926101009004909116906339ebf82390602401606060405180830381865afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af19190612772565b925092509250610603838561228d565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610d1a578382906000526020600020018054611b449061280b565b80601f0160208091040260200160405190810160405280929190818152602001828054611b709061280b565b8015611bbd5780601f10611b9257610100808354040283529160200191611bbd565b820191906000526020600020905b815481529060010190602001808311611ba057829003601f168201915b505050505081526020019060010190611b25565b60085460009060ff1615611be9575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9e9190612867565b1415905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cfe57600080fd5b505af1158015611d12573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d5689150606401600060405180830381600087803b158015611d7457600080fd5b505af1158015611d88573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611de557600080fd5b505af1158015611df9573d6000803e3d6000fd5b5050601e5460205460405163130aea3160e31b81526001600160a01b03918216600482015261010090920416925063985751889150602401600060405180830381600087803b158015611e4b57600080fd5b505af1158015611e5f573d6000803e3d6000fd5b5050601e5460205460405163b34e0c4760e01b81526001600160a01b0391821660048201526000945061010090920416915063b34e0c47906024016040805180830381865afa158015611eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eda91906127ae565b9050611eeb8160000151600061228d565b6108a68160200151600061228d565b60606015805480602002602001604051908101604052809291908181526020018280548015610901576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108e3575050505050905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290604b90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101889052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b15801561203157600080fd5b505af1158015612045573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401610e52565b601e54604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa7926101009092046001600160a01b031691638da5cb5b916004808201926020929091908290030181865afa158015612113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121379190612880565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561219057600080fd5b505af11580156121a4573d6000803e3d6000fd5b5050601e546040516303d4768360e41b81526001600160a01b0385811660048301526101009092049091169250633d4768309150602401600060405180830381600087803b1580156121f557600080fd5b505af1158015612209573d6000803e3d6000fd5b505050506108a6601e60019054906101000a90046001600160a01b03166001600160a01b0316638df8b2fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122879190612880565b8261236f565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b1580156122f957600080fd5b505afa15801561230d573d6000803e3d6000fd5b505050505050565b6040517ff7fe347700000000000000000000000000000000000000000000000000000000815282151560048201528115156024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f7fe3477906044016122e1565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044016122e1565b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd581906024015b60006040518083038186803b15801561243657600080fd5b505afa158015610a8b573d6000803e3d6000fd5b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a59828859060240161241e565b611a558061289c83390190565b6020808252825182820181905260009190848201906040850190845b818110156124ea5783516001600160a01b0316835292840192918401916001016124c5565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156125db57603f19898403018552815180516001600160a01b031684528701518784018790528051878501819052908801906060600582901b86018101919086019060005b818110156125c557878403605f190183528451805180865260005b8181101561259e578e81840101518f82890101528e81019050612580565b5060008682018f0152958d0195601f01601f19169094018c019350918b0191600101612565565b505050958801959350509086019060010161251d565b509098975050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156126a557898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156126905783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019061264e565b50978a01979550505091870191600101612611565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b8381101561273857888603603f1901855282518051808852835b81811015612711578281018a01518982018b015289016126f6565b508781018901849052601f01601f19169096018701955093860193918601916001016126dc565b509398975050505050505050565b8051801515811461275657600080fd5b919050565b80516001600160a01b038116811461275657600080fd5b60008060006060848603121561278757600080fd5b8351925061279760208501612746565b91506127a56040850161275b565b90509250925092565b6000604082840312156127c057600080fd5b6040516040810181811067ffffffffffffffff821117156127f157634e487b7160e01b600052604160045260246000fd5b604052825181526020928301519281019290925250919050565b600181811c9082168061281f57607f821691505b60208210810361283f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561285757600080fd5b61286082612746565b9392505050565b60006020828403121561287957600080fd5b5051919050565b60006020828403121561289257600080fd5b6128608261275b56fe60a06040523060805234801561001457600080fd5b50608051611a0961004c60003960008181610656015281816106e0015281816108ce015281816109530152610a390152611a096000f3fe60806040526004361061015f5760003560e01c80637814d568116100c0578063c4d66de811610074578063f2fde38b11610059578063f2fde38b14610469578063f8806a1314610489578063fc2ebdd11461052f57600080fd5b8063c4d66de814610429578063d80ea5a01461044957600080fd5b80638df8b2fe116100a55780638df8b2fe1461036c578063985751881461038c578063b34e0c47146103ac57600080fd5b80637814d5681461031a5780638da5cb5b1461033a57600080fd5b806342a987a01161011757806352d1902d116100fc57806352d1902d146102c2578063642ce76b146102e5578063715018a61461030557600080fd5b806342a987a01461027f5780634f1ef286146102af57600080fd5b80633659cfe6116101485780633659cfe6146101d457806339ebf823146101f45780633d4768301461025f57600080fd5b80631413d4c014610164578063175188e8146101b2575b600080fd5b34801561017057600080fd5b5061019861017f3660046116f3565b6066602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b3480156101be57600080fd5b506101d26101cd3660046116f3565b61054f565b005b3480156101e057600080fd5b506101d26101ef3660046116f3565b61064c565b34801561020057600080fd5b5061023b61020f3660046116f3565b6067602052600090815260409020805460019091015460ff81169061010090046001600160a01b031683565b6040805193845291151560208401526001600160a01b0316908201526060016101a9565b34801561026b57600080fd5b506101d261027a3660046116f3565b6107cc565b34801561028b57600080fd5b5061029f61029a36600461170e565b61083c565b60405190151581526020016101a9565b6101d26102bd3660046117a1565b6108c4565b3480156102ce57600080fd5b506102d7610a2c565b6040519081526020016101a9565b3480156102f157600080fd5b506101d2610300366004611847565b610af1565b34801561031157600080fd5b506101d2610bc6565b34801561032657600080fd5b506101d2610335366004611871565b610bda565b34801561034657600080fd5b506033546001600160a01b03165b6040516001600160a01b0390911681526020016101a9565b34801561037857600080fd5b50606554610354906001600160a01b031681565b34801561039857600080fd5b506101d26103a73660046116f3565b610ca2565b3480156103b857600080fd5b5061040e6103c73660046116f3565b6040805180820190915260008082526020820152506001600160a01b0316600090815260666020908152604091829020825180840190935280548352600101549082015290565b604080518251815260209283015192810192909252016101a9565b34801561043557600080fd5b506101d26104443660046116f3565b610d1d565b34801561045557600080fd5b506101d26104643660046116f3565b610e6e565b34801561047557600080fd5b506101d26104843660046116f3565b610f27565b34801561049557600080fd5b506105026104a43660046116f3565b6040805160608082018352600080835260208084018290529284018190526001600160a01b0394851681526067835283902083519182018452805482526001015460ff81161515928201929092526101009091049092169082015290565b6040805182518152602080840151151590820152918101516001600160a01b0316908201526060016101a9565b34801561053b57600080fd5b506101d261054a3660046118e4565b610fb4565b806105626033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061058b57506065546001600160a01b031633145b806105b757506001600160a01b0381811660009081526067602052604090206001015461010090041633145b15610616576105c5826110ca565b6001600160a01b03821660008181526067602052604080822060018101805460ff19169055829055517f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea49190a25050565b6040517fe3b6914b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106de5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107397f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107a45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b6107ad8161110a565b604080516000808252602082019092526107c991839190611112565b50565b6107d46112b2565b6107dd816110ca565b606580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f5117c6c457d7b27a4cb68df40b118f157ac1f1ba81f8a571d189f829d74fbc8690600090a35050565b6001600160a01b03808316600090815260666020908152604080832081518083018352815481526001918201548185015286861685526067845282852083516060810185528154815292015460ff81161515948301859052610100900490951691810191909152919291906108b6576001925050506108be565b519051101590505b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109515760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016106d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109ac7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610a175760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b610a208261110a565b61064882826001611112565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610acc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d5565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b81610b046033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610b2d57506065546001600160a01b031633145b80610b5957506001600160a01b0381811660009081526067602052604090206001015461010090041633145b1561061657610b67836110ca565b6001600160a01b03831660008181526067602052604090819020849055517f40ba4d5d9facd2fda74e22251d1638576e05a30482470363c7c87a7b5b298c0990610bb49085815260200190565b60405180910390a2505050565b505050565b610bce6112b2565b610bd8600061130c565b565b6033546001600160a01b0316331480610bfd57506065546001600160a01b031633145b15610c7057610c0b826110ca565b6001600160a01b03821660008181526066602090815260409182902084518082558583015160019092018290558351908152918201527f1e0ca12706807bceff25136f95fe6f69c1319c044f6073e6056a287e4f541b1d910160405180910390a25050565b6040517f7d7b71b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033546001600160a01b0316331480610cc557506065546001600160a01b031633145b15610c7057610cd3816110ca565b6001600160a01b038116600081815260666020526040808220828155600101829055517fe9dce8c992623ce791725b21e857e33248d1f190a25b5168313420eebdaae99d9190a250565b600054610100900460ff1615808015610d3d5750600054600160ff909116105b80610d575750303b158015610d57575060005460ff166001145b610dc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106d5565b6000805460ff191660011790558015610dec576000805461ff0019166101001790555b610df461136b565b610dfd826110ca565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790558015610648576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6001600160a01b038082166000908152606760205260409020600101548291610100909104163303610ef557610ea3826110ca565b6001600160a01b0382166000818152606760205260408082206001908101805460ff19169091179055517f652f053fc39779b70b29678135ade972fcb79966fc68fcb77c996b1aa4fd9afb9190a25050565b6040517f97ffbac900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2f6112b2565b6001600160a01b038116610fab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106d5565b6107c98161130c565b6033546001600160a01b0316331480610fd757506065546001600160a01b031633145b15610c7057610fe5836110ca565b610fee816110ca565b6040805160608082018352848252600060208084018281526001600160a01b038781168688018181528b831680875260678652898720985189559351600190980180549151909316610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff981515989098167fffffffffffffffffffffff000000000000000000000000000000000000000000909116179690961790558551888152918201929092529384019290925290917f9b1a157188de9a0bd2e7995d72aaba244d9bd012ddf3ae3d4f492135175070cb9101610bb4565b6001600160a01b0381166107c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c96112b2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561114557610bc1836113de565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561119f575060408051601f3d908101601f1916820190925261119c91810190611920565b60015b6112115760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146112a65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016106d5565b50610bc18383836114a9565b6033546001600160a01b03163314610bd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d5565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166113d65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd86114d4565b6001600160a01b0381163b61145b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6114b283611548565b6000825111806114bf5750805b15610bc1576114ce8383611588565b50505050565b600054610100900460ff1661153f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd83361130c565b611551816113de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606115ad83836040518060600160405280602781526020016119ad602791396115b4565b9392505050565b6060600080856001600160a01b0316856040516115d1919061195d565b600060405180830381855af49150503d806000811461160c576040519150601f19603f3d011682016040523d82523d6000602084013e611611565b606091505b50915091506116228683838761162c565b9695505050505050565b6060831561169b578251600003611694576001600160a01b0385163b6116945760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d5565b50816116a5565b6116a583836116ad565b949350505050565b8151156116bd5781518083602001fd5b8060405162461bcd60e51b81526004016106d59190611979565b80356001600160a01b03811681146116ee57600080fd5b919050565b60006020828403121561170557600080fd5b6115ad826116d7565b6000806040838503121561172157600080fd5b61172a836116d7565b9150611738602084016116d7565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561179957611799611741565b604052919050565b600080604083850312156117b457600080fd5b6117bd836116d7565b915060208084013567ffffffffffffffff808211156117db57600080fd5b818601915086601f8301126117ef57600080fd5b81358181111561180157611801611741565b611813601f8201601f19168501611770565b9150808252878482850101111561182957600080fd5b80848401858401376000848284010152508093505050509250929050565b6000806040838503121561185a57600080fd5b611863836116d7565b946020939093013593505050565b600080828403606081121561188557600080fd5b61188e846116d7565b92506040601f19820112156118a257600080fd5b506040516040810181811067ffffffffffffffff821117156118c6576118c6611741565b60409081526020858101358352940135938101939093525092909150565b6000806000606084860312156118f957600080fd5b611902846116d7565b925060208401359150611917604085016116d7565b90509250925092565b60006020828403121561193257600080fd5b5051919050565b60005b8381101561195457818101518382015260200161193c565b50506000910152565b6000825161196f818460208701611939565b9190910192915050565b6020815260008251806020840152611998816040850160208701611939565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a8f6eaeb366c5c8c5c3a1820871dc36dd3bc338983f0986a24053dc142f66b3564736f6c63430008130033a26469706673582212200668ffed1c17f134873a492c76b334f08f5b3055648baae195718e628796b79e64736f6c63430008130033","sourceMap":"138:5034:123:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;442:32;;;;;;;;;;;;;;188:25:128;;;244:2;229:18;;222:34;;;;161:18;442:32:123;;;;;;;;2768:544;;;:::i;:::-;;481:207;;;:::i;694:331::-;;;:::i;2452:134:41:-;;;:::i;:::-;;;;;;;:::i;2079:247:123:-;;;:::i;1651:217::-;;;:::i;3360:151:41:-;;;:::i;:::-;;;;;;;:::i;3904:581:123:-;;;:::i;3221:133:41:-;;;:::i;392:44:123:-;;;;;-1:-1:-1;;;;;392:44:123;;;;;;-1:-1:-1;;;;;3249:55:128;;;3231:74;;3219:2;3204:18;392:44:123;3085:226:128;2922:141:41;;;:::i;180:36:123:-;;;;;;;;-1:-1:-1;;;;;180:36:123;;;267:32;;;;;-1:-1:-1;;;;;267:32:123;;;2738:178:41;;;:::i;:::-;;;;;;;:::i;347:39:123:-;;;;;-1:-1:-1;;;;;347:39:123;;;1874:199;;;:::i;2592:140:41:-;;;:::i;:::-;;;;;;;:::i;4491:679:123:-;;;:::i;222:39::-;;;;;-1:-1:-1;;;;;222:39:123;;;3069:146:41;;;:::i;2332:430:123:-;;;:::i;305:36::-;;;;;-1:-1:-1;;;;;305:36:123;;;2157:141:41;;;:::i;1243:204:37:-;;;:::i;:::-;;;6587:14:128;;6580:22;6562:41;;6550:2;6535:18;1243:204:37;6422:187:128;1031:362:123;;;:::i;2304:142:41:-;;;:::i;3318:580:123:-;;;:::i;1399:246::-;;;:::i;1016:26:48:-;;;;;;;;;2768:544:123;2857:11;;2848:21;;-1:-1:-1;;;2848:21:123;;-1:-1:-1;;;;;2857:11:123;;;2848:21;;;3231:74:128;2835:2:123;;2848:8;;;;3204:18:128;;2848:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2879:14:123;;2906:8;;2927:11;;2879:60;;-1:-1:-1;;;2879:60:123;;-1:-1:-1;;;;;2906:8:123;;;2879:60;;;6877:34:128;6927:18;;;6920:34;;;2927:11:123;;;6970:18:128;;;6963:43;2879:14:123;;;;;;-1:-1:-1;2879:26:123;;-1:-1:-1;6789:18:128;;2879:60:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2959:11:123;;2950:21;;-1:-1:-1;;;2950:21:123;;-1:-1:-1;;;;;2959:11:123;;;2950:21;;;3231:74:128;2950:8:123;;-1:-1:-1;2950:8:123;;-1:-1:-1;3204:18:128;;2950:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2981:14:123;;3011:8;;2981:39;;;;;-1:-1:-1;;;;;3011:8:123;;;2981:39;;;3231:74:128;2981:14:123;;;;;;-1:-1:-1;2981:29:123;;-1:-1:-1;3204:18:128;;2981:39:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3105:14:123;;3131:8;;3105:35;;-1:-1:-1;;;3105:35:123;;-1:-1:-1;;;;;3131:8:123;;;3105:35;;;3231:74:128;3032:23:123;;-1:-1:-1;3032:23:123;;-1:-1:-1;3032:23:123;;3105:14;;;;;;;:25;;3204:18:128;;3105:35:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3031:109;;;;;;3150:28;3159:15;3176:1;3150:8;:28::i;:::-;3188:29;3197:12;3211:5;3188:8;:29::i;:::-;3255:11;;3227:40;;3236:17;;-1:-1:-1;;;;;3255:11:123;3227:8;:40::i;:::-;2805:507;;;;2768:544::o;481:207::-;532:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;515:14:123;:37;;;;;-1:-1:-1;;;;;515:37:123;;;;;;;;;;;;;588:11;;562:38;;;;;588:11;;;562:38;;;3231:74:128;562:14:123;;;;;;:25;;3204:18:128;;562:38:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;625:56:123;;;;;;;;;646:3;625:56;;;664:15;625:56;;;;;;;610:12;:71;;;-1:-1:-1;;481:207:123:o;694:331::-;748:11;;739:21;;-1:-1:-1;;;739:21:123;;-1:-1:-1;;;;;748:11:123;;;739:21;;;3231:74:128;739:8:123;;;;3204:18:128;;739:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;770:14:123;;798:4;;770:47;;-1:-1:-1;;;770:47:123;;-1:-1:-1;;;;;798:4:123;;;770:47;;;7977:74:128;804:12:123;8087:13:128;;8067:18;;;8060:41;8143:17;8137:24;8117:18;;;8110:52;770:14:123;;;;;;-1:-1:-1;770:27:123;;-1:-1:-1;7950:18:128;;770:47:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;861:14:123;;889:4;;861:33;;-1:-1:-1;;;861:33:123;;-1:-1:-1;;;;;889:4:123;;;861:33;;;3231:74:128;828:30:123;;-1:-1:-1;861:14:123;;;;;;-1:-1:-1;861:27:123;;3204:18:128;;861:33:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;913:16;;931:12;:18;828:66;;-1:-1:-1;904:46:123;;:8;:46::i;:::-;960:58;969:10;:22;;;993:12;:24;;;960:8;:58::i;:::-;729:296;694:331::o;2452:134:41:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:41;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;2079:247:123:-;2192:11;;2183:21;;-1:-1:-1;;;2183:21:123;;-1:-1:-1;;;;;2192:11:123;;;2183:21;;;3231:74:128;2170:1:123;;2183:8;;;;3204:18:128;;2183:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2214:51:123;;;;;9040:2:128;2214:51:123;;;9022:21:128;;;9059:18;;;9052:30;9118:34;9098:18;;;9091:62;2214:15:123;;-1:-1:-1;2214:15:123;;-1:-1:-1;9170:18:128;;2214:51:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2275:14:123;;:44;;-1:-1:-1;;;2275:44:123;;-1:-1:-1;;;;;3249:55:128;;;2275:44:123;;;3231:74:128;2275:14:123;;;;;;;;-1:-1:-1;2275:32:123;;-1:-1:-1;3204:18:128;;2275:44:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2131:195;2079:247::o;1651:217::-;1722:16;;1713:26;;-1:-1:-1;;;1713:26:123;;-1:-1:-1;;;;;1722:16:123;;;1713:26;;;3231:74:128;1713:8:123;;;;3204:18:128;;1713:26:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1749:55:123;;-1:-1:-1;;;1749:55:123;;-1:-1:-1;;;1749:55:123;;;9343:98:128;1749:15:123;;-1:-1:-1;1749:15:123;;-1:-1:-1;9316:18:128;;1749:55:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1814:14:123;;1842:4;;1814:47;;-1:-1:-1;;;1814:47:123;;-1:-1:-1;;;;;1842:4:123;;;1814:47;;;7977:74:128;1848:12:123;8087:13:128;;8067:18;;;8060:41;8143:17;8137:24;8117:18;;;8110:52;1814:14:123;;;;;;-1:-1:-1;1814:27:123;;-1:-1:-1;7950:18:128;;1814:47:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151:41;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3904:581:123:-;4042:11;;4033:21;;-1:-1:-1;;;4033:21:123;;-1:-1:-1;;;;;4042:11:123;;;4033:21;;;3231:74:128;3985:2:123;;4020;;4033:8;;;;3204:18:128;;4033:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4064:14:123;;4091:8;;4112:11;;4064:60;;-1:-1:-1;;;4064:60:123;;-1:-1:-1;;;;;4091:8:123;;;4064:60;;;6877:34:128;6927:18;;;6920:34;;;4112:11:123;;;6970:18:128;;;6963:43;4064:14:123;;;;;;-1:-1:-1;4064:26:123;;-1:-1:-1;6789:18:128;;4064:60:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4144:11:123;;4135:21;;-1:-1:-1;;;4135:21:123;;-1:-1:-1;;;;;4144:11:123;;;4135:21;;;3231:74:128;4135:8:123;;-1:-1:-1;4135:8:123;;-1:-1:-1;3204:18:128;;4135:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4166:14:123;;4197:8;;4166:54;;-1:-1:-1;;;4166:54:123;;-1:-1:-1;;;;;4197:8:123;;;4166:54;;;10068:74:128;10158:18;;;10151:34;;;4166:14:123;;;;;;-1:-1:-1;4166:30:123;;-1:-1:-1;10041:18:128;;4166:54:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4305:14:123;;4331:8;;4305:35;;-1:-1:-1;;;4305:35:123;;-1:-1:-1;;;;;4331:8:123;;;4305:35;;;3231:74:128;4232:23:123;;-1:-1:-1;4232:23:123;;-1:-1:-1;4232:23:123;;4305:14;;;;;;;:25;;3204:18:128;;4305:35:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4231:109;;;;;;4350:39;4359:15;4376:12;4350:8;:39::i;:::-;4399:29;4408:12;4422:5;4399:8;:29::i;:::-;4466:11;;4438:40;;4447:17;;-1:-1:-1;;;;;4466:11:123;4438:8;:40::i;3221:133:41:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:41;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:41;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1874:199:123;1943:16;;1934:26;;-1:-1:-1;;;1934:26:123;;-1:-1:-1;;;;;1943:16:123;;;1934:26;;;3231:74:128;1934:8:123;;;;3204:18:128;;1934:26:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1970:55:123;;-1:-1:-1;;;1970:55:123;;-1:-1:-1;;;1970:55:123;;;9343:98:128;1970:15:123;;-1:-1:-1;1970:15:123;;-1:-1:-1;9316:18:128;;1970:55:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2035:14:123;;2061:4;;2035:31;;-1:-1:-1;;;2035:31:123;;-1:-1:-1;;;;;2061:4:123;;;2035:31;;;3231:74:128;2035:14:123;;;;;;-1:-1:-1;2035:25:123;;-1:-1:-1;3204:18:128;;2035:31:123;3085:226:128;2592:140:41;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4491:679:123;4582:11;;4573:21;;-1:-1:-1;;;4573:21:123;;-1:-1:-1;;;;;4582:11:123;;;4573:21;;;3231:74:128;4560:2:123;;4573:8;;;;3204:18:128;;4573:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4604:14:123;;4631:8;;4652:11;;4604:60;;-1:-1:-1;;;4604:60:123;;-1:-1:-1;;;;;4631:8:123;;;4604:60;;;6877:34:128;6927:18;;;6920:34;;;4652:11:123;;;6970:18:128;;;6963:43;4604:14:123;;;;;;-1:-1:-1;4604:26:123;;-1:-1:-1;6789:18:128;;4604:60:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4688:11:123;;4674:26;;;;;-1:-1:-1;;;;;4688:11:123;;;4674:26;;;3231:74:128;4674:13:123;;-1:-1:-1;4674:13:123;;-1:-1:-1;3204:18:128;;4674:26:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4710:14:123;;4742:8;;4710:41;;;;;-1:-1:-1;;;;;4742:8:123;;;4710:41;;;3231:74:128;4710:14:123;;;;;;-1:-1:-1;4710:31:123;;-1:-1:-1;3204:18:128;;4710:41:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:35;309:37;;-1:-1:-1;;;;;4761:12:123;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4795:11:123;;4786:21;;-1:-1:-1;;;4786:21:123;;-1:-1:-1;;;;;4795:11:123;;;4786:21;;;3231:74:128;4786:8:123;;-1:-1:-1;4786:8:123;;-1:-1:-1;3204:18:128;;4786:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4817:14:123;;4845:4;;4817:47;;-1:-1:-1;;;4817:47:123;;-1:-1:-1;;;;;4845:4:123;;;4817:47;;;7977:74:128;4851:12:123;8087:13:128;;8067:18;;;8060:41;8143:17;8137:24;8117:18;;;8110:52;4817:14:123;;;;;;-1:-1:-1;4817:27:123;;-1:-1:-1;7950:18:128;;4817:47:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4893:14:123;;4925:4;;4931:8;;4893:47;;-1:-1:-1;;;4893:47:123;;-1:-1:-1;;;;;4925:4:123;;;4893:47;;;10431:34:128;4931:8:123;;;10481:18:128;;;10474:43;4875:15:123;;-1:-1:-1;4893:14:123;;;;;;-1:-1:-1;4893:31:123;;10343:18:128;;4893:47:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4875:65;;4950:22;4961:10;4950;:22::i;:::-;4992:11;;4983:21;;-1:-1:-1;;;4983:21:123;;-1:-1:-1;;;;;4992:11:123;;;4983:21;;;3231:74:128;4983:8:123;;;;3204:18:128;;4983:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5014:14:123;;5045:8;;5014:45;;-1:-1:-1;;;5014:45:123;;-1:-1:-1;;;;;5045:8:123;;;5014:45;;;10068:74:128;5055:3:123;10158:18:128;;;10151:34;5014:14:123;;;;;;-1:-1:-1;5014:30:123;;-1:-1:-1;10041:18:128;;5014:45:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5083:14:123;;5115:4;;5121:8;;5083:47;;-1:-1:-1;;;5083:47:123;;-1:-1:-1;;;;;5115:4:123;;;5083:47;;;10431:34:128;5121:8:123;;;10481:18:128;;;10474:43;5083:14:123;;;;;;-1:-1:-1;5083:31:123;;-1:-1:-1;10343:18:128;;5083:47:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5070:60;;5140:23;5152:10;5140:11;:23::i;:::-;4530:640;;4491:679::o;3069:146:41:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2332:430:123;2418:11;;2409:21;;-1:-1:-1;;;2409:21:123;;-1:-1:-1;;;;;2418:11:123;;;2409:21;;;3231:74:128;2396:2:123;;2409:8;;;;3204:18:128;;2409:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2440:14:123;;2467:8;;2488:11;;2440:60;;-1:-1:-1;;;2440:60:123;;-1:-1:-1;;;;;2467:8:123;;;2440:60;;;6877:34:128;6927:18;;;6920:34;;;2488:11:123;;;6970:18:128;;;6963:43;2440:14:123;;;;;;-1:-1:-1;2440:26:123;;-1:-1:-1;6789:18:128;;2440:60:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2585:14:123;;2611:8;;2585:35;;-1:-1:-1;;;2585:35:123;;-1:-1:-1;;;;;2611:8:123;;;2585:35;;;3231:74:128;2512:23:123;;-1:-1:-1;2512:23:123;;-1:-1:-1;2512:23:123;;2585:14;;;;;;;:25;;3204:18:128;;2585:35:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2511:109;;;;;;2630:36;2639:15;2656:9;2630:8;:36::i;2157:141:41:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:37;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:37;;;;;1243:204::o;1298:143::-;1377:39;;;;;:7;:39;;;10068:74:128;;;1398:17:37;10158:18:128;;;10151:34;1428:1:37;;1377:7;;10041:18:128;;1377:39:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;1031:362:123:-;1083:11;;1074:21;;-1:-1:-1;;;1074:21:123;;-1:-1:-1;;;;;1083:11:123;;;1074:21;;;3231:74:128;1074:8:123;;;;3204:18:128;;1074:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1105:14:123;;1133:4;;1105:47;;-1:-1:-1;;;1105:47:123;;-1:-1:-1;;;;;1133:4:123;;;1105:47;;;7977:74:128;1139:12:123;8087:13:128;;8067:18;;;8060:41;8143:17;8137:24;8117:18;;;8110:52;1105:14:123;;;;;;-1:-1:-1;1105:27:123;;-1:-1:-1;7950:18:128;;1105:47:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1172:11:123;;1163:21;;-1:-1:-1;;;1163:21:123;;-1:-1:-1;;;;;1172:11:123;;;1163:21;;;3231:74:128;1163:8:123;;-1:-1:-1;1163:8:123;;-1:-1:-1;3204:18:128;;1163:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1194:14:123;;1220:4;;1194:31;;-1:-1:-1;;;1194:31:123;;-1:-1:-1;;;;;1220:4:123;;;1194:31;;;3231:74:128;1194:14:123;;;;;;-1:-1:-1;1194:25:123;;-1:-1:-1;3204:18:128;;1194:31:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1269:14:123;;1297:4;;1269:33;;-1:-1:-1;;;1269:33:123;;-1:-1:-1;;;;;1297:4:123;;;1269:33;;;3231:74:128;1236:30:123;;-1:-1:-1;1269:14:123;;;;;;-1:-1:-1;1269:27:123;;3204:18:128;;1269:33:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1236:66;;1312:29;1321:10;:16;;;1339:1;1312:8;:29::i;:::-;1351:35;1360:10;:22;;;1384:1;1351:8;:35::i;2304:142:41:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:41;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3318:580:123:-;3455:11;;3446:21;;-1:-1:-1;;;3446:21:123;;-1:-1:-1;;;;;3455:11:123;;;3446:21;;;3231:74:128;3398:2:123;;3433;;3446:8;;;;3204:18:128;;3446:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3477:14:123;;3504:8;;3525:11;;3477:60;;-1:-1:-1;;;3477:60:123;;-1:-1:-1;;;;;3504:8:123;;;3477:60;;;6877:34:128;6927:18;;;6920:34;;;3525:11:123;;;6970:18:128;;;6963:43;3477:14:123;;;;;;-1:-1:-1;3477:26:123;;-1:-1:-1;6789:18:128;;3477:60:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3557:11:123;;3548:21;;-1:-1:-1;;;3548:21:123;;-1:-1:-1;;;;;3557:11:123;;;3548:21;;;3231:74:128;3548:8:123;;-1:-1:-1;3548:8:123;;-1:-1:-1;3204:18:128;;3548:21:123;3085:226:128;1399:246:123;1500:14;;:22;;;;;;;;1478:1;;1491:8;;;;1500:14;;;;-1:-1:-1;;;;;1500:14:123;;:20;;:22;;;;;;;;;;;;;;;:14;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1491:32;;;;;;;;;;-1:-1:-1;;;;;3249:55:128;;;1491:32:123;;;3231:74:128;3204:18;;1491:32:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1533:14:123;;:44;;-1:-1:-1;;;1533:44:123;;-1:-1:-1;;;;;3249:55:128;;;1533:44:123;;;3231:74:128;1533:14:123;;;;;;;;-1:-1:-1;1533:32:123;;-1:-1:-1;3204:18:128;;1533:44:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:50;1597:14;;;;;;;;;-1:-1:-1;;;;;1597:14:123;-1:-1:-1;;;;;1597:26:123;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1627:10;1588:8;:50::i;2270:110:37:-;2349:24;;;;;;;;188:25:128;;;229:18;;;222:34;;;2349:11:37;;;;161:18:128;;2349:24:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2270:110;;:::o;2026:104::-;2099:24;;;;;11938:14:128;;11931:22;2099:24:37;;;11913:41:128;11997:14;;11990:22;11970:18;;;11963:50;2099:11:37;;;;11886:18:128;;2099:24:37;11751:268:128;3454:110:37;3533:24;;;;;-1:-1:-1;;;;;10449:15:128;;;3533:24:37;;;10431:34:128;10501:15;;10481:18;;;10474:43;3533:11:37;;;;10343:18:128;;3533:24:37;10196:327:128;1594:89:37;1657:19;;;;;6587:14:128;;6580:22;1657:19:37;;;6562:41:128;1657:13:37;;;;6535:18:128;;1657:19:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1808:91;1872:20;;;;;6587:14:128;;6580:22;1872:20:37;;;6562:41:128;1872:14:37;;;;6535:18:128;;1872:20:37;6422:187:128;-1:-1:-1;;;;;;;;:::o;267:681:128:-;438:2;490:21;;;560:13;;463:18;;;582:22;;;409:4;;438:2;661:15;;;;635:2;620:18;;;409:4;704:218;718:6;715:1;712:13;704:218;;;783:13;;-1:-1:-1;;;;;779:62:128;767:75;;897:15;;;;862:12;;;;740:1;733:9;704:218;;;-1:-1:-1;939:3:128;;267:681;-1:-1:-1;;;;;;267:681:128:o;953:2127::-;1159:4;1188:2;1228;1217:9;1213:18;1258:2;1247:9;1240:21;1281:6;1316;1310:13;1347:6;1339;1332:22;1373:2;1363:12;;1406:2;1395:9;1391:18;1384:25;;1468:2;1458:6;1455:1;1451:14;1440:9;1436:30;1432:39;1506:2;1498:6;1494:15;1527:1;1537:1514;1551:6;1548:1;1545:13;1537:1514;;;-1:-1:-1;;1616:22:128;;;1612:36;1600:49;;1672:13;;1759:9;;-1:-1:-1;;;;;1755:58:128;1740:74;;1853:11;;1847:18;1885:15;;;1878:27;;;1966:19;;1712:15;;;1998:24;;;2178:21;;;;2045:2;2131:1;2127:16;;;2115:29;;2111:38;;;2069:15;;;;2223:1;2237:705;2253:8;2248:3;2245:17;2237:705;;;2334:19;;;-1:-1:-1;;2330:33:128;2316:48;;2391:15;;2439:9;;2465:24;;;2517:1;2535:169;2551:8;2546:3;2543:17;2535:169;;;2681:2;2675:3;2671:2;2667:12;2663:21;2657:28;2652:2;2646:3;2638:6;2634:16;2630:25;2623:63;2579:2;2574:3;2570:12;2563:19;;2535:169;;;-1:-1:-1;2760:1:128;2732:21;;;2728:30;;2721:41;2871:17;;;;2832:2;2809:17;-1:-1:-1;;2805:31:128;2793:44;;;2789:53;;;-1:-1:-1;2914:14:128;;;;2281:1;2272:11;2237:705;;;-1:-1:-1;;;3029:12:128;;;;2965:6;-1:-1:-1;;2994:15:128;;;;1573:1;1566:9;1537:1514;;;-1:-1:-1;3068:6:128;;953:2127;-1:-1:-1;;;;;;;;953:2127:128:o;3571:1638::-;3775:4;3804:2;3844;3833:9;3829:18;3874:2;3863:9;3856:21;3897:6;3932;3926:13;3963:6;3955;3948:22;3989:2;3979:12;;4022:2;4011:9;4007:18;4000:25;;4084:2;4074:6;4071:1;4067:14;4056:9;4052:30;4048:39;4122:2;4114:6;4110:15;4143:1;4164;4174:1006;4190:6;4185:3;4182:15;4174:1006;;;4259:22;;;-1:-1:-1;;4255:36:128;4243:49;;4315:13;;4402:9;;-1:-1:-1;;;;;4398:58:128;4383:74;;4496:11;;4490:18;4528:15;;;4521:27;;;4609:19;;4355:15;;;4641:24;;;4731:21;;;;4776:1;;4699:2;4687:15;;;4790:282;4806:8;4801:3;4798:17;4790:282;;;4887:15;;4904:66;4883:88;4869:103;;5041:17;;;;4834:1;4825:11;;;;;4998:14;;;;4790:282;;;-1:-1:-1;5158:12:128;;;;5095:5;-1:-1:-1;;;5123:15:128;;;;4216:1;4207:11;4174:1006;;;-1:-1:-1;5197:6:128;;3571:1638;-1:-1:-1;;;;;;;;;3571:1638:128:o;5214:1203::-;5376:4;5405:2;5445;5434:9;5430:18;5475:2;5464:9;5457:21;5498:6;5533;5527:13;5564:6;5556;5549:22;5602:2;5591:9;5587:18;5580:25;;5664:2;5654:6;5651:1;5647:14;5636:9;5632:30;5628:39;5614:53;;5702:2;5694:6;5690:15;5723:1;5744;5754:634;5770:6;5765:3;5762:15;5754:634;;;5839:22;;;-1:-1:-1;;5835:36:128;5823:49;;5895:13;;5937:9;;5959:24;;;6007:1;6021:157;6037:8;6032:3;6029:17;6021:157;;;6145:12;;;6141:21;;6135:28;6112:16;;;6108:25;;6101:63;6056:12;;6021:157;;;-1:-1:-1;6202:21:128;;;6198:30;;6191:41;;;6298:2;6275:17;-1:-1:-1;;6271:31:128;6259:44;;;6255:53;;;-1:-1:-1;6366:12:128;;;;6331:15;;;;5796:1;5787:11;5754:634;;;-1:-1:-1;6405:6:128;;5214:1203;-1:-1:-1;;;;;;;;5214:1203:128:o;7017:164::-;7093:13;;7142;;7135:21;7125:32;;7115:60;;7171:1;7168;7161:12;7115:60;7017:164;;;:::o;7186:200::-;7265:13;;-1:-1:-1;;;;;7307:54:128;;7297:65;;7287:93;;7376:1;7373;7366:12;7391:348;7476:6;7484;7492;7545:2;7533:9;7524:7;7520:23;7516:32;7513:52;;;7561:1;7558;7551:12;7513:52;7590:9;7584:16;7574:26;;7619:46;7661:2;7650:9;7646:18;7619:46;:::i;:::-;7609:56;;7684:49;7729:2;7718:9;7714:18;7684:49;:::i;:::-;7674:59;;7391:348;;;;;:::o;8173:661::-;8274:6;8327:2;8315:9;8306:7;8302:23;8298:32;8295:52;;;8343:1;8340;8333:12;8295:52;8376:2;8370:9;8418:2;8410:6;8406:15;8487:6;8475:10;8472:22;8451:18;8439:10;8436:34;8433:62;8430:242;;;-1:-1:-1;;;8525:1:128;8518:88;8629:4;8626:1;8619:15;8657:4;8654:1;8647:15;8430:242;8688:2;8681:22;8727:16;;8712:32;;8798:2;8783:18;;;8777:25;8760:15;;;8753:50;;;;-1:-1:-1;8719:6:128;8173:661;-1:-1:-1;8173:661:128:o;9452:437::-;9531:1;9527:12;;;;9574;;;9595:61;;9649:4;9641:6;9637:17;9627:27;;9595:61;9702:2;9694:6;9691:14;9671:18;9668:38;9665:218;;-1:-1:-1;;;9736:1:128;9729:88;9840:4;9837:1;9830:15;9868:4;9865:1;9858:15;9665:218;;9452:437;;;:::o;10528:202::-;10595:6;10648:2;10636:9;10627:7;10623:23;10619:32;10616:52;;;10664:1;10661;10654:12;10616:52;10687:37;10714:9;10687:37;:::i;:::-;10677:47;10528:202;-1:-1:-1;;;10528:202:128:o;11349:184::-;11419:6;11472:2;11460:9;11451:7;11447:23;11443:32;11440:52;;;11488:1;11485;11478:12;11440:52;-1:-1:-1;11511:16:128;;11349:184;-1:-1:-1;11349:184:128:o;11538:208::-;11608:6;11661:2;11649:9;11640:7;11636:23;11632:32;11629:52;;;11677:1;11674;11667:12;11629:52;11700:40;11730:9;11700:40;:::i","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","councilSafe()":"6c53db9a","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","listManager()":"8df8b2fe","passportData()":"073a2d8c","passportScorer()":"4905e831","setUp()":"0a9254e4","strategy()":"a8c62e76","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testAddStrategy()":"9693f128","testAddUserScore()":"0c2759da","testCanExecuteAction()":"8caa5c44","testChangeListManager()":"ebe69a5f","testModifyThresholdByAuthorized()":"e68393b4","testModifyThresholdByCouncilSafe()":"3668aa29","testOnlyAuthorizedCanAddUserScore()":"25821153","testOnlyAuthorizedCanRemoveUser()":"82fad478","testOnlyOwnerCanChangeListManager()":"24e40b97","testRemoveStrategy()":"0778c72c","testRemoveUser()":"d4dadecb","unauthorizedUser()":"3ea7771b","user()":"4f8632ba"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"councilSafe\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"listManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"passportData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"passportScorer\",\"outputs\":[{\"internalType\":\"contract PassportScorer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAddStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAddUserScore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCanExecuteAction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testChangeListManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testModifyThresholdByAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testModifyThresholdByCouncilSafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOnlyAuthorizedCanAddUserScore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOnlyAuthorizedCanRemoveUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOnlyOwnerCanChangeListManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRemoveStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRemoveUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unauthorizedUser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"pkg/contracts/test/PassportScorerTest.t.sol\":\"PassportScorerTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/foundry/=lib/openzeppelin-foundry-upgrades/src/\",\":@prb/math/=lib/allo-v2/lib/v2-core/lib/prb-math/\",\":@prb/test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/\",\":@sablier/v2-core/=lib/allo-v2/lib/v2-core/\",\":ERC1155/=lib/allo-v2/lib/hats-protocol/lib/ERC1155/\",\":allo-v2-contracts/=lib/allo-v2/contracts/\",\":allo-v2-test/=lib/allo-v2/test/\",\":allo-v2/=lib/allo-v2/\",\":ds-test/=lib/allo-v2/lib/forge-std/lib/ds-test/src/\",\":eas-contracts/=lib/allo-v2/lib/eas-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/allo-v2/lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hats-protocol/=lib/allo-v2/lib/hats-protocol/\",\":openzeppelin-contracts-upgradeable/=lib/allo-v2/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":permit2/=lib/allo-v2/lib/permit2/\",\":prb-math/=lib/allo-v2/lib/v2-core/lib/prb-math/src/\",\":prb-test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/\",\":solady/=lib/allo-v2/lib/solady/\",\":solarray/=lib/allo-v2/lib/v2-core/lib/solarray/src/\",\":solbase/=lib/allo-v2/lib/hats-protocol/lib/solbase/src/\",\":solmate/=lib/allo-v2/lib/permit2/lib/solmate/\",\":utils/=lib/allo-v2/lib/hats-protocol/lib/utils/\",\":v2-core/=lib/allo-v2/lib/v2-core/\"]},\"sources\":{\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1\",\"dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]},\"pkg/contracts/src/ISybilScorer.sol\":{\"keccak256\":\"0x0e25fbb8497ac3c969d80c9032362d45e56c0a45dc9ba3dff6a8a704571f38ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dff90ebae6e7131a5300fcaf525bc2ab0ae90fcd13f277d7b7b6939eeb8b7eb\",\"dweb:/ipfs/QmYGkYqpUVrBWoNY6f3CtwrrVQFWSvnJfpu68t95f6AkBY\"]},\"pkg/contracts/src/PassportScorer.sol\":{\"keccak256\":\"0x58c15350aefdf9379dcc3b0442bf775d66c8595b2fa46180130d6a910ff95ceb\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://4d2a753fffe95c8c7ba708f671eee354e4208454b797e382ad16ca88c33d7e18\",\"dweb:/ipfs/QmSNxyehChShCXR7tuubfDmXXpHuvsJFuB5vw8xQzfcPSs\"]},\"pkg/contracts/test/PassportScorerTest.t.sol\":{\"keccak256\":\"0x0272f36e062ac081325144514cb4f99582930253fa73ead085d8d62cd424a0a7\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://e757d85ca65e98f0faf26da8cd12c0887e4c2ba2a1c57b9598b9d8e37b4dbebd\",\"dweb:/ipfs/QmXxjr16rc6drof5JcZuN3DneLSdEyScMkNbBSWccb9XoV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"councilSafe","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"listManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"passportData","outputs":[{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"uint256","name":"lastUpdated","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"passportScorer","outputs":[{"internalType":"contract PassportScorer","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"strategy","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testAddStrategy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testAddUserScore"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCanExecuteAction"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testChangeListManager"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testModifyThresholdByAuthorized"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testModifyThresholdByCouncilSafe"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOnlyAuthorizedCanAddUserScore"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOnlyAuthorizedCanRemoveUser"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOnlyOwnerCanChangeListManager"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRemoveStrategy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRemoveUser"},{"inputs":[],"stateMutability":"view","type":"function","name":"unauthorizedUser","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"user","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/foundry/=lib/openzeppelin-foundry-upgrades/src/","@prb/math/=lib/allo-v2/lib/v2-core/lib/prb-math/","@prb/test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/","@sablier/v2-core/=lib/allo-v2/lib/v2-core/","ERC1155/=lib/allo-v2/lib/hats-protocol/lib/ERC1155/","allo-v2-contracts/=lib/allo-v2/contracts/","allo-v2-test/=lib/allo-v2/test/","allo-v2/=lib/allo-v2/","ds-test/=lib/allo-v2/lib/forge-std/lib/ds-test/src/","eas-contracts/=lib/allo-v2/lib/eas-contracts/contracts/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/allo-v2/lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hats-protocol/=lib/allo-v2/lib/hats-protocol/","openzeppelin-contracts-upgradeable/=lib/allo-v2/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","permit2/=lib/allo-v2/lib/permit2/","prb-math/=lib/allo-v2/lib/v2-core/lib/prb-math/src/","prb-test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/","solady/=lib/allo-v2/lib/solady/","solarray/=lib/allo-v2/lib/v2-core/lib/solarray/src/","solbase/=lib/allo-v2/lib/hats-protocol/lib/solbase/src/","solmate/=lib/allo-v2/lib/permit2/lib/solmate/","utils/=lib/allo-v2/lib/hats-protocol/lib/utils/","v2-core/=lib/allo-v2/lib/v2-core/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"pkg/contracts/test/PassportScorerTest.t.sol":"PassportScorerTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90","urls":["bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263","dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2","urls":["bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2","dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf","urls":["bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1","dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM"],"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/StorageSlot.sol":{"keccak256":"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899","urls":["bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da","dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q"],"license":"MIT"},"pkg/contracts/src/ISybilScorer.sol":{"keccak256":"0x0e25fbb8497ac3c969d80c9032362d45e56c0a45dc9ba3dff6a8a704571f38ea","urls":["bzz-raw://0dff90ebae6e7131a5300fcaf525bc2ab0ae90fcd13f277d7b7b6939eeb8b7eb","dweb:/ipfs/QmYGkYqpUVrBWoNY6f3CtwrrVQFWSvnJfpu68t95f6AkBY"],"license":"MIT"},"pkg/contracts/src/PassportScorer.sol":{"keccak256":"0x58c15350aefdf9379dcc3b0442bf775d66c8595b2fa46180130d6a910ff95ceb","urls":["bzz-raw://4d2a753fffe95c8c7ba708f671eee354e4208454b797e382ad16ca88c33d7e18","dweb:/ipfs/QmSNxyehChShCXR7tuubfDmXXpHuvsJFuB5vw8xQzfcPSs"],"license":"AGPL-3.0-or-later"},"pkg/contracts/test/PassportScorerTest.t.sol":{"keccak256":"0x0272f36e062ac081325144514cb4f99582930253fa73ead085d8d62cd424a0a7","urls":["bzz-raw://e757d85ca65e98f0faf26da8cd12c0887e4c2ba2a1c57b9598b9d8e37b4dbebd","dweb:/ipfs/QmXxjr16rc6drof5JcZuN3DneLSdEyScMkNbBSWccb9XoV"],"license":"AGPL-3.0-or-later"}},"version":1},"id":123} \ No newline at end of file +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"councilSafe","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"listManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"passportData","inputs":[],"outputs":[{"name":"score","type":"uint256","internalType":"uint256"},{"name":"lastUpdated","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"passportScorer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PassportScorer"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"strategy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testAddStrategy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testAddUserScore","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCanExecuteAction","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testChangeListManager","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testModifyThresholdByAuthorized","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testModifyThresholdByCouncilSafe","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOnlyAuthorizedCanAddUserScore","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOnlyAuthorizedCanRemoveUser","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOnlyOwnerCanChangeListManager","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRemoveStrategy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRemoveUser","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unauthorizedUser","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"user","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600c805460ff199081166001908117909255601e805490911682179055601f80546001600160a01b0319908116909217905560208054821660021790556021805482166003179055602280548216600417905560238054909116600517905534801561006f57600080fd5b506143a48061007f6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636c53db9a11610104578063a8c62e76116100a2578063e20c9f7111610071578063e20c9f7114610374578063e68393b41461037c578063ebe69a5f14610384578063fa7626d41461038c57600080fd5b8063a8c62e7614610339578063b5508aa91461034c578063ba414fa614610354578063d4dadecb1461036c57600080fd5b80638caa5c44116100de5780638caa5c441461030e5780638df8b2fe14610316578063916a17c6146103295780639693f1281461033157600080fd5b80636c53db9a146102de57806382fad478146102f157806385226c81146102f957600080fd5b80632ade38801161017c5780633f7286f41161014b5780633f7286f4146102965780634905e8311461029e5780634f8632ba146102b657806366d9a9a0146102c957600080fd5b80632ade3880146102465780633668aa291461025b5780633e5e3c23146102635780633ea7771b1461026b57600080fd5b80630c2759da116101b85780630c2759da146102195780631ed7831c1461022157806324e40b9714610236578063258211531461023e57600080fd5b8063073a2d8c146101df5780630778c72c146102075780630a9254e414610211575b600080fd5b6024546025546101ed919082565b604080519283526020830191909152015b60405180910390f35b61020f610399565b005b61020f61062b565b61020f610724565b6102296108a9565b6040516101fe91906124a9565b61020f61090b565b61020f610a92565b61024e610be1565b6040516101fe91906124f6565b61020f610d23565b610229610fa0565b60235461027e906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b610229611000565b601e5461027e9061010090046001600160a01b031681565b60205461027e906001600160a01b031681565b6102d1611060565b6040516101fe91906125e9565b60225461027e906001600160a01b031681565b61020f61115b565b610301611270565b6040516101fe91906126b4565b61020f611340565b601f5461027e906001600160a01b031681565b6102d161188d565b61020f611988565b60215461027e906001600160a01b031681565b610301611b01565b61035c611bd1565b60405190151581526020016101fe565b61020f611ca5565b610229611efa565b61020f611f5a565b61020f61208d565b601e5461035c9060ff1681565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156103f557600080fd5b505af1158015610409573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101879052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b15801561046d57600080fd5b505af1158015610481573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156104de57600080fd5b505af11580156104f2573d6000803e3d6000fd5b5050601e546021546040517f175188e80000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063175188e89150602401600060405180830381600087803b15801561055d57600080fd5b505af1158015610571573d6000803e3d6000fd5b5050601e546021546040516339ebf82360e01b81526001600160a01b0391821660048201526000945084935083926101009004909116906339ebf82390602401606060405180830381865afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f29190612772565b92509250925061060383600061228d565b61060e826000612315565b6022546106259082906001600160a01b031661236f565b50505050565b6040516106379061249c565b604051809103906000f080158015610653573d6000803e3d6000fd5b50601e80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055601f546040517fc4d66de8000000000000000000000000000000000000000000000000000000008152908416600482015291049091169063c4d66de890602401600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b50506040805180820190915260648082524260209092018290526024556025555050565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561077d57600080fd5b505af1158015610791573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d5689150606401600060405180830381600087803b1580156107f357600080fd5b505af1158015610807573d6000803e3d6000fd5b5050601e5460205460405163b34e0c4760e01b81526001600160a01b0391821660048201526000945061010090920416915063b34e0c47906024016040805180830381865afa15801561085e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088291906127ae565b80516024549192506108939161228d565b6108a6816020015160246001015461228d565b50565b6060601680548060200260200160405190810160405280929190818152602001828054801561090157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108e3575b5050505050905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152600690737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561096757600080fd5b505af115801561097b573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150606401600060405180830381600087803b158015610a1257600080fd5b505af1158015610a26573d6000803e3d6000fd5b5050601e546040516303d4768360e41b81526001600160a01b0385811660048301526101009092049091169250633d4768309150602401600060405180830381600087803b158015610a7757600080fd5b505af1158015610a8b573d6000803e3d6000fd5b5050505050565b60235460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b5050604051630618f58760e51b8152637d7b71b560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015610b5657600080fd5b505af1158015610b6a573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d56891506064015b600060405180830381600087803b158015610bcd57600080fd5b505af1158015610625573d6000803e3d6000fd5b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610d1a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610d03578382906000526020600020018054610c769061280b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca29061280b565b8015610cef5780601f10610cc457610100808354040283529160200191610cef565b820191906000526020600020905b815481529060010190602001808311610cd257829003601f168201915b505050505081526020019060010190610c57565b505050508152505081526020019060010190610c05565b50505050905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290604b90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610d8257600080fd5b505af1158015610d96573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101889052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b158015610dfa57600080fd5b505af1158015610e0e573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b5050601e5460215460405163642ce76b60e01b81526001600160a01b0391821660048201526024810186905261010090920416925063642ce76b9150604401600060405180830381600087803b158015610ed957600080fd5b505af1158015610eed573d6000803e3d6000fd5b5050601e546021546040516339ebf82360e01b81526001600160a01b0391821660048201526000945084935083926101009004909116906339ebf82390602401606060405180830381865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190612772565b925092509250610f7e838561228d565b610f89826000612315565b602254610a8b9082906001600160a01b031661236f565b60606018805480602002602001604051908101604052809291908181526020018280548015610901576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108e3575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610901576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108e3575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610d1a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561114357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116110f05790505b50505050508152505081526020019060010190611084565b60235460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156111b457600080fd5b505af11580156111c8573d6000803e3d6000fd5b5050604051630618f58760e51b8152637d7b71b560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561121f57600080fd5b505af1158015611233573d6000803e3d6000fd5b5050601e5460205460405163130aea3160e31b81526001600160a01b03918216600482015261010090920416925063985751889150602401610bb3565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610d1a5783829060005260206000200180546112b39061280b565b80601f01602080910402602001604051908101604052809291908181526020018280546112df9061280b565b801561132c5780601f106113015761010080835404028352916020019161132c565b820191906000526020600020905b81548152906001019060200180831161130f57829003601f168201915b505050505081526020019060010190611294565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561139c57600080fd5b505af11580156113b0573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101879052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b15801561141457600080fd5b505af1158015611428573d6000803e3d6000fd5b50506022546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b5050601e546021546040517fd80ea5a00000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063d80ea5a09150602401600060405180830381600087803b15801561151d57600080fd5b505af1158015611531573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561159357600080fd5b505af11580156115a7573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d5689150606401600060405180830381600087803b15801561167a57600080fd5b505af115801561168e573d6000803e3d6000fd5b5050601e546020546021546040516302154c3d60e51b81526001600160a01b0392831660048201529082166024820152600094506101009092041691506342a987a090604401602060405180830381865afa1580156116f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117159190612845565b9050611720816123d0565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561177957600080fd5b505af115801561178d573d6000803e3d6000fd5b5050601e5460215460405163642ce76b60e01b81526001600160a01b0391821660048201526096602482015261010090920416925063642ce76b9150604401600060405180830381600087803b1580156117e657600080fd5b505af11580156117fa573d6000803e3d6000fd5b5050601e546020546021546040516302154c3d60e51b81526001600160a01b03928316600482015290821660248201526101009092041692506342a987a09150604401602060405180830381865afa15801561185a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187e9190612845565b90506118898161244a565b5050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610d1a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561197057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161191d5790505b505050505081525050815260200190600101906118b1565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156119e457600080fd5b505af11580156119f8573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101879052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b158015611a5c57600080fd5b505af1158015611a70573d6000803e3d6000fd5b5050601e546021546040516339ebf82360e01b81526001600160a01b0391821660048201526000945084935083926101009004909116906339ebf82390602401606060405180830381865afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af19190612772565b925092509250610603838561228d565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610d1a578382906000526020600020018054611b449061280b565b80601f0160208091040260200160405190810160405280929190818152602001828054611b709061280b565b8015611bbd5780601f10611b9257610100808354040283529160200191611bbd565b820191906000526020600020905b815481529060010190602001808311611ba057829003601f168201915b505050505081526020019060010190611b25565b60085460009060ff1615611be9575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9e9190612867565b1415905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cfe57600080fd5b505af1158015611d12573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d5689150606401600060405180830381600087803b158015611d7457600080fd5b505af1158015611d88573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611de557600080fd5b505af1158015611df9573d6000803e3d6000fd5b5050601e5460205460405163130aea3160e31b81526001600160a01b03918216600482015261010090920416925063985751889150602401600060405180830381600087803b158015611e4b57600080fd5b505af1158015611e5f573d6000803e3d6000fd5b5050601e5460205460405163b34e0c4760e01b81526001600160a01b0391821660048201526000945061010090920416915063b34e0c47906024016040805180830381865afa158015611eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eda91906127ae565b9050611eeb8160000151600061228d565b6108a68160200151600061228d565b60606015805480602002602001604051908101604052809291908181526020018280548015610901576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108e3575050505050905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290604b90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101889052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b15801561203157600080fd5b505af1158015612045573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401610e52565b601e54604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa7926101009092046001600160a01b031691638da5cb5b916004808201926020929091908290030181865afa158015612113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121379190612880565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561219057600080fd5b505af11580156121a4573d6000803e3d6000fd5b5050601e546040516303d4768360e41b81526001600160a01b0385811660048301526101009092049091169250633d4768309150602401600060405180830381600087803b1580156121f557600080fd5b505af1158015612209573d6000803e3d6000fd5b505050506108a6601e60019054906101000a90046001600160a01b03166001600160a01b0316638df8b2fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122879190612880565b8261236f565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b1580156122f957600080fd5b505afa15801561230d573d6000803e3d6000fd5b505050505050565b6040517ff7fe347700000000000000000000000000000000000000000000000000000000815282151560048201528115156024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f7fe3477906044016122e1565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044016122e1565b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd581906024015b60006040518083038186803b15801561243657600080fd5b505afa158015610a8b573d6000803e3d6000fd5b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a59828859060240161241e565b611ad38061289c83390190565b6020808252825182820181905260009190848201906040850190845b818110156124ea5783516001600160a01b0316835292840192918401916001016124c5565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156125db57603f19898403018552815180516001600160a01b031684528701518784018790528051878501819052908801906060600582901b86018101919086019060005b818110156125c557878403605f190183528451805180865260005b8181101561259e578e81840101518f82890101528e81019050612580565b5060008682018f0152958d0195601f01601f19169094018c019350918b0191600101612565565b505050958801959350509086019060010161251d565b509098975050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156126a557898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156126905783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019061264e565b50978a01979550505091870191600101612611565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b8381101561273857888603603f1901855282518051808852835b81811015612711578281018a01518982018b015289016126f6565b508781018901849052601f01601f19169096018701955093860193918601916001016126dc565b509398975050505050505050565b8051801515811461275657600080fd5b919050565b80516001600160a01b038116811461275657600080fd5b60008060006060848603121561278757600080fd5b8351925061279760208501612746565b91506127a56040850161275b565b90509250925092565b6000604082840312156127c057600080fd5b6040516040810181811067ffffffffffffffff821117156127f157634e487b7160e01b600052604160045260246000fd5b604052825181526020928301519281019290925250919050565b600181811c9082168061281f57607f821691505b60208210810361283f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561285757600080fd5b61286082612746565b9392505050565b60006020828403121561287957600080fd5b5051919050565b60006020828403121561289257600080fd5b6128608261275b56fe60a06040523060805234801561001457600080fd5b50608051611a8761004c60003960008181610656015281816106e0015281816108ce015281816109530152610a390152611a876000f3fe60806040526004361061015f5760003560e01c80637814d568116100c0578063c4d66de811610074578063f2fde38b11610059578063f2fde38b14610469578063f8806a1314610489578063fc2ebdd11461052f57600080fd5b8063c4d66de814610429578063d80ea5a01461044957600080fd5b80638df8b2fe116100a55780638df8b2fe1461036c578063985751881461038c578063b34e0c47146103ac57600080fd5b80637814d5681461031a5780638da5cb5b1461033a57600080fd5b806342a987a01161011757806352d1902d116100fc57806352d1902d146102c2578063642ce76b146102e5578063715018a61461030557600080fd5b806342a987a01461027f5780634f1ef286146102af57600080fd5b80633659cfe6116101485780633659cfe6146101d457806339ebf823146101f45780633d4768301461025f57600080fd5b80631413d4c014610164578063175188e8146101b2575b600080fd5b34801561017057600080fd5b5061019861017f366004611771565b6066602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b3480156101be57600080fd5b506101d26101cd366004611771565b61054f565b005b3480156101e057600080fd5b506101d26101ef366004611771565b61064c565b34801561020057600080fd5b5061023b61020f366004611771565b6067602052600090815260409020805460019091015460ff81169061010090046001600160a01b031683565b6040805193845291151560208401526001600160a01b0316908201526060016101a9565b34801561026b57600080fd5b506101d261027a366004611771565b6107cc565b34801561028b57600080fd5b5061029f61029a36600461178c565b61083c565b60405190151581526020016101a9565b6101d26102bd36600461181f565b6108c4565b3480156102ce57600080fd5b506102d7610a2c565b6040519081526020016101a9565b3480156102f157600080fd5b506101d26103003660046118c5565b610af1565b34801561031157600080fd5b506101d2610bc6565b34801561032657600080fd5b506101d26103353660046118ef565b610bda565b34801561034657600080fd5b506033546001600160a01b03165b6040516001600160a01b0390911681526020016101a9565b34801561037857600080fd5b50606554610354906001600160a01b031681565b34801561039857600080fd5b506101d26103a7366004611771565b610ca2565b3480156103b857600080fd5b5061040e6103c7366004611771565b6040805180820190915260008082526020820152506001600160a01b0316600090815260666020908152604091829020825180840190935280548352600101549082015290565b604080518251815260209283015192810192909252016101a9565b34801561043557600080fd5b506101d2610444366004611771565b610d1d565b34801561045557600080fd5b506101d2610464366004611771565b610e6e565b34801561047557600080fd5b506101d2610484366004611771565b610f27565b34801561049557600080fd5b506105026104a4366004611771565b6040805160608082018352600080835260208084018290529284018190526001600160a01b0394851681526067835283902083519182018452805482526001015460ff81161515928201929092526101009091049092169082015290565b6040805182518152602080840151151590820152918101516001600160a01b0316908201526060016101a9565b34801561053b57600080fd5b506101d261054a366004611962565b610fb4565b806105626033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061058b57506065546001600160a01b031633145b806105b757506001600160a01b0381811660009081526067602052604090206001015461010090041633145b15610616576105c582611148565b6001600160a01b03821660008181526067602052604080822060018101805460ff19169055829055517f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea49190a25050565b6040517fe3b6914b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106de5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107397f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107a45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b6107ad81611188565b604080516000808252602082019092526107c991839190611190565b50565b6107d4611330565b6107dd81611148565b606580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f5117c6c457d7b27a4cb68df40b118f157ac1f1ba81f8a571d189f829d74fbc8690600090a35050565b6001600160a01b03808316600090815260666020908152604080832081518083018352815481526001918201548185015286861685526067845282852083516060810185528154815292015460ff81161515948301859052610100900490951691810191909152919291906108b6576001925050506108be565b519051101590505b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109515760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016106d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109ac7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610a175760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b610a2082611188565b61064882826001611190565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610acc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d5565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b81610b046033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610b2d57506065546001600160a01b031633145b80610b5957506001600160a01b0381811660009081526067602052604090206001015461010090041633145b1561061657610b6783611148565b6001600160a01b03831660008181526067602052604090819020849055517f40ba4d5d9facd2fda74e22251d1638576e05a30482470363c7c87a7b5b298c0990610bb49085815260200190565b60405180910390a2505050565b505050565b610bce611330565b610bd8600061138a565b565b6033546001600160a01b0316331480610bfd57506065546001600160a01b031633145b15610c7057610c0b82611148565b6001600160a01b03821660008181526066602090815260409182902084518082558583015160019092018290558351908152918201527f1e0ca12706807bceff25136f95fe6f69c1319c044f6073e6056a287e4f541b1d910160405180910390a25050565b6040517f7d7b71b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033546001600160a01b0316331480610cc557506065546001600160a01b031633145b15610c7057610cd381611148565b6001600160a01b038116600081815260666020526040808220828155600101829055517fe9dce8c992623ce791725b21e857e33248d1f190a25b5168313420eebdaae99d9190a250565b600054610100900460ff1615808015610d3d5750600054600160ff909116105b80610d575750303b158015610d57575060005460ff166001145b610dc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106d5565b6000805460ff191660011790558015610dec576000805461ff0019166101001790555b610df46113e9565b610dfd82611148565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790558015610648576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6001600160a01b038082166000908152606760205260409020600101548291610100909104163303610ef557610ea382611148565b6001600160a01b0382166000818152606760205260408082206001908101805460ff19169091179055517f652f053fc39779b70b29678135ade972fcb79966fc68fcb77c996b1aa4fd9afb9190a25050565b6040517f97ffbac900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2f611330565b6001600160a01b038116610fab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106d5565b6107c98161138a565b6033546001600160a01b0316331480610fd757506065546001600160a01b031633145b15610c7057610fe583611148565b610fee81611148565b6001600160a01b03831660009081526067602052604090205415158061103557506001600160a01b0383811660009081526067602052604090206001015461010090041615155b1561106c576040517fc45546f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160608082018352848252600060208084018281526001600160a01b038781168688018181528b831680875260678652898720985189559351600190980180549151909316610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff981515989098167fffffffffffffffffffffff000000000000000000000000000000000000000000909116179690961790558551888152918201929092529384019290925290917f9b1a157188de9a0bd2e7995d72aaba244d9bd012ddf3ae3d4f492135175070cb9101610bb4565b6001600160a01b0381166107c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c9611330565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156111c357610bc18361145c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561121d575060408051601f3d908101601f1916820190925261121a9181019061199e565b60015b61128f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146113245760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016106d5565b50610bc1838383611527565b6033546001600160a01b03163314610bd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d5565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166114545760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd8611552565b6001600160a01b0381163b6114d95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b611530836115c6565b60008251118061153d5750805b15610bc15761154c8383611606565b50505050565b600054610100900460ff166115bd5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd83361138a565b6115cf8161145c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061162b8383604051806060016040528060278152602001611a2b60279139611632565b9392505050565b6060600080856001600160a01b03168560405161164f91906119db565b600060405180830381855af49150503d806000811461168a576040519150601f19603f3d011682016040523d82523d6000602084013e61168f565b606091505b50915091506116a0868383876116aa565b9695505050505050565b60608315611719578251600003611712576001600160a01b0385163b6117125760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d5565b5081611723565b611723838361172b565b949350505050565b81511561173b5781518083602001fd5b8060405162461bcd60e51b81526004016106d591906119f7565b80356001600160a01b038116811461176c57600080fd5b919050565b60006020828403121561178357600080fd5b61162b82611755565b6000806040838503121561179f57600080fd5b6117a883611755565b91506117b660208401611755565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611817576118176117bf565b604052919050565b6000806040838503121561183257600080fd5b61183b83611755565b915060208084013567ffffffffffffffff8082111561185957600080fd5b818601915086601f83011261186d57600080fd5b81358181111561187f5761187f6117bf565b611891601f8201601f191685016117ee565b915080825287848285010111156118a757600080fd5b80848401858401376000848284010152508093505050509250929050565b600080604083850312156118d857600080fd5b6118e183611755565b946020939093013593505050565b600080828403606081121561190357600080fd5b61190c84611755565b92506040601f198201121561192057600080fd5b506040516040810181811067ffffffffffffffff82111715611944576119446117bf565b60409081526020858101358352940135938101939093525092909150565b60008060006060848603121561197757600080fd5b61198084611755565b92506020840135915061199560408501611755565b90509250925092565b6000602082840312156119b057600080fd5b5051919050565b60005b838110156119d25781810151838201526020016119ba565b50506000910152565b600082516119ed8184602087016119b7565b9190910192915050565b6020815260008251806020840152611a168160408501602087016119b7565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cd7c05347437b99cf35f2e0f8f6648973bab95fd9fd232d0c8bb87c48f7183c964736f6c63430008130033a26469706673582212208376a9bdbd1066d1ed93c2cb53b59dbcae58359495a0eee0acb4358f1295e8b364736f6c63430008130033","sourceMap":"138:5034:123:-:0;;;3126:44:38;;;-1:-1:-1;;3126:44:38;;;3166:4;3126:44;;;;;;1016:26:48;;;;;;;;;;222:39:123;;;-1:-1:-1;;;;;;222:39:123;;;;;;;;267:32;;;;;297:1;267:32;;;305:36;;;;;339:1;305:36;;;347:39;;;;;384:1;347:39;;;392:44;;;;;;434:1;392:44;;;138:5034;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80636c53db9a11610104578063a8c62e76116100a2578063e20c9f7111610071578063e20c9f7114610374578063e68393b41461037c578063ebe69a5f14610384578063fa7626d41461038c57600080fd5b8063a8c62e7614610339578063b5508aa91461034c578063ba414fa614610354578063d4dadecb1461036c57600080fd5b80638caa5c44116100de5780638caa5c441461030e5780638df8b2fe14610316578063916a17c6146103295780639693f1281461033157600080fd5b80636c53db9a146102de57806382fad478146102f157806385226c81146102f957600080fd5b80632ade38801161017c5780633f7286f41161014b5780633f7286f4146102965780634905e8311461029e5780634f8632ba146102b657806366d9a9a0146102c957600080fd5b80632ade3880146102465780633668aa291461025b5780633e5e3c23146102635780633ea7771b1461026b57600080fd5b80630c2759da116101b85780630c2759da146102195780631ed7831c1461022157806324e40b9714610236578063258211531461023e57600080fd5b8063073a2d8c146101df5780630778c72c146102075780630a9254e414610211575b600080fd5b6024546025546101ed919082565b604080519283526020830191909152015b60405180910390f35b61020f610399565b005b61020f61062b565b61020f610724565b6102296108a9565b6040516101fe91906124a9565b61020f61090b565b61020f610a92565b61024e610be1565b6040516101fe91906124f6565b61020f610d23565b610229610fa0565b60235461027e906001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b610229611000565b601e5461027e9061010090046001600160a01b031681565b60205461027e906001600160a01b031681565b6102d1611060565b6040516101fe91906125e9565b60225461027e906001600160a01b031681565b61020f61115b565b610301611270565b6040516101fe91906126b4565b61020f611340565b601f5461027e906001600160a01b031681565b6102d161188d565b61020f611988565b60215461027e906001600160a01b031681565b610301611b01565b61035c611bd1565b60405190151581526020016101fe565b61020f611ca5565b610229611efa565b61020f611f5a565b61020f61208d565b601e5461035c9060ff1681565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156103f557600080fd5b505af1158015610409573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101879052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b15801561046d57600080fd5b505af1158015610481573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156104de57600080fd5b505af11580156104f2573d6000803e3d6000fd5b5050601e546021546040517f175188e80000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063175188e89150602401600060405180830381600087803b15801561055d57600080fd5b505af1158015610571573d6000803e3d6000fd5b5050601e546021546040516339ebf82360e01b81526001600160a01b0391821660048201526000945084935083926101009004909116906339ebf82390602401606060405180830381865afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f29190612772565b92509250925061060383600061228d565b61060e826000612315565b6022546106259082906001600160a01b031661236f565b50505050565b6040516106379061249c565b604051809103906000f080158015610653573d6000803e3d6000fd5b50601e80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055601f546040517fc4d66de8000000000000000000000000000000000000000000000000000000008152908416600482015291049091169063c4d66de890602401600060405180830381600087803b1580156106ec57600080fd5b505af1158015610700573d6000803e3d6000fd5b50506040805180820190915260648082524260209092018290526024556025555050565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561077d57600080fd5b505af1158015610791573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d5689150606401600060405180830381600087803b1580156107f357600080fd5b505af1158015610807573d6000803e3d6000fd5b5050601e5460205460405163b34e0c4760e01b81526001600160a01b0391821660048201526000945061010090920416915063b34e0c47906024016040805180830381865afa15801561085e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088291906127ae565b80516024549192506108939161228d565b6108a6816020015160246001015461228d565b50565b6060601680548060200260200160405190810160405280929190818152602001828054801561090157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108e3575b5050505050905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152600690737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561096757600080fd5b505af115801561097b573d6000803e3d6000fd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb39150606401600060405180830381600087803b158015610a1257600080fd5b505af1158015610a26573d6000803e3d6000fd5b5050601e546040516303d4768360e41b81526001600160a01b0385811660048301526101009092049091169250633d4768309150602401600060405180830381600087803b158015610a7757600080fd5b505af1158015610a8b573d6000803e3d6000fd5b5050505050565b60235460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b5050604051630618f58760e51b8152637d7b71b560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015610b5657600080fd5b505af1158015610b6a573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d56891506064015b600060405180830381600087803b158015610bcd57600080fd5b505af1158015610625573d6000803e3d6000fd5b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610d1a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610d03578382906000526020600020018054610c769061280b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca29061280b565b8015610cef5780601f10610cc457610100808354040283529160200191610cef565b820191906000526020600020905b815481529060010190602001808311610cd257829003601f168201915b505050505081526020019060010190610c57565b505050508152505081526020019060010190610c05565b50505050905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290604b90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610d8257600080fd5b505af1158015610d96573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101889052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b158015610dfa57600080fd5b505af1158015610e0e573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b5050601e5460215460405163642ce76b60e01b81526001600160a01b0391821660048201526024810186905261010090920416925063642ce76b9150604401600060405180830381600087803b158015610ed957600080fd5b505af1158015610eed573d6000803e3d6000fd5b5050601e546021546040516339ebf82360e01b81526001600160a01b0391821660048201526000945084935083926101009004909116906339ebf82390602401606060405180830381865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190612772565b925092509250610f7e838561228d565b610f89826000612315565b602254610a8b9082906001600160a01b031661236f565b60606018805480602002602001604051908101604052809291908181526020018280548015610901576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108e3575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610901576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108e3575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610d1a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561114357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116110f05790505b50505050508152505081526020019060010190611084565b60235460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156111b457600080fd5b505af11580156111c8573d6000803e3d6000fd5b5050604051630618f58760e51b8152637d7b71b560e01b6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561121f57600080fd5b505af1158015611233573d6000803e3d6000fd5b5050601e5460205460405163130aea3160e31b81526001600160a01b03918216600482015261010090920416925063985751889150602401610bb3565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610d1a5783829060005260206000200180546112b39061280b565b80601f01602080910402602001604051908101604052809291908181526020018280546112df9061280b565b801561132c5780601f106113015761010080835404028352916020019161132c565b820191906000526020600020905b81548152906001019060200180831161130f57829003601f168201915b505050505081526020019060010190611294565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561139c57600080fd5b505af11580156113b0573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101879052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b15801561141457600080fd5b505af1158015611428573d6000803e3d6000fd5b50506022546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b5050601e546021546040517fd80ea5a00000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015261010090920416925063d80ea5a09150602401600060405180830381600087803b15801561151d57600080fd5b505af1158015611531573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561159357600080fd5b505af11580156115a7573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d5689150606401600060405180830381600087803b15801561167a57600080fd5b505af115801561168e573d6000803e3d6000fd5b5050601e546020546021546040516302154c3d60e51b81526001600160a01b0392831660048201529082166024820152600094506101009092041691506342a987a090604401602060405180830381865afa1580156116f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117159190612845565b9050611720816123d0565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561177957600080fd5b505af115801561178d573d6000803e3d6000fd5b5050601e5460215460405163642ce76b60e01b81526001600160a01b0391821660048201526096602482015261010090920416925063642ce76b9150604401600060405180830381600087803b1580156117e657600080fd5b505af11580156117fa573d6000803e3d6000fd5b5050601e546020546021546040516302154c3d60e51b81526001600160a01b03928316600482015290821660248201526101009092041692506342a987a09150604401602060405180830381865afa15801561185a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187e9190612845565b90506118898161244a565b5050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610d1a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561197057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161191d5790505b505050505081525050815260200190600101906118b1565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156119e457600080fd5b505af11580156119f8573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101879052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b158015611a5c57600080fd5b505af1158015611a70573d6000803e3d6000fd5b5050601e546021546040516339ebf82360e01b81526001600160a01b0391821660048201526000945084935083926101009004909116906339ebf82390602401606060405180830381865afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af19190612772565b925092509250610603838561228d565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610d1a578382906000526020600020018054611b449061280b565b80601f0160208091040260200160405190810160405280929190818152602001828054611b709061280b565b8015611bbd5780601f10611b9257610100808354040283529160200191611bbd565b820191906000526020600020905b815481529060010190602001808311611ba057829003601f168201915b505050505081526020019060010190611b25565b60085460009060ff1615611be9575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9e9190612867565b1415905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611cfe57600080fd5b505af1158015611d12573d6000803e3d6000fd5b5050601e54602054604051630f029aad60e31b81526001600160a01b03918216600482015260248054908201526025546044820152610100909204169250637814d5689150606401600060405180830381600087803b158015611d7457600080fd5b505af1158015611d88573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611de557600080fd5b505af1158015611df9573d6000803e3d6000fd5b5050601e5460205460405163130aea3160e31b81526001600160a01b03918216600482015261010090920416925063985751889150602401600060405180830381600087803b158015611e4b57600080fd5b505af1158015611e5f573d6000803e3d6000fd5b5050601e5460205460405163b34e0c4760e01b81526001600160a01b0391821660048201526000945061010090920416915063b34e0c47906024016040805180830381865afa158015611eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eda91906127ae565b9050611eeb8160000151600061228d565b6108a68160200151600061228d565b60606015805480602002602001604051908101604052809291908181526020018280548015610901576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108e3575050505050905090565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152603290604b90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b5050601e5460215460225460405163fc2ebdd160e01b81526001600160a01b03928316600482015260248101889052908216604482015261010090920416925063fc2ebdd19150606401600060405180830381600087803b15801561203157600080fd5b505af1158015612045573d6000803e3d6000fd5b5050601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401610e52565b601e54604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263ca669fa7926101009092046001600160a01b031691638da5cb5b916004808201926020929091908290030181865afa158015612113573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121379190612880565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561219057600080fd5b505af11580156121a4573d6000803e3d6000fd5b5050601e546040516303d4768360e41b81526001600160a01b0385811660048301526101009092049091169250633d4768309150602401600060405180830381600087803b1580156121f557600080fd5b505af1158015612209573d6000803e3d6000fd5b505050506108a6601e60019054906101000a90046001600160a01b03166001600160a01b0316638df8b2fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122879190612880565b8261236f565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b60006040518083038186803b1580156122f957600080fd5b505afa15801561230d573d6000803e3d6000fd5b505050505050565b6040517ff7fe347700000000000000000000000000000000000000000000000000000000815282151560048201528115156024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f7fe3477906044016122e1565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044016122e1565b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd581906024015b60006040518083038186803b15801561243657600080fd5b505afa158015610a8b573d6000803e3d6000fd5b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a59828859060240161241e565b611ad38061289c83390190565b6020808252825182820181905260009190848201906040850190845b818110156124ea5783516001600160a01b0316835292840192918401916001016124c5565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156125db57603f19898403018552815180516001600160a01b031684528701518784018790528051878501819052908801906060600582901b86018101919086019060005b818110156125c557878403605f190183528451805180865260005b8181101561259e578e81840101518f82890101528e81019050612580565b5060008682018f0152958d0195601f01601f19169094018c019350918b0191600101612565565b505050958801959350509086019060010161251d565b509098975050505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156126a557898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156126905783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019061264e565b50978a01979550505091870191600101612611565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b8381101561273857888603603f1901855282518051808852835b81811015612711578281018a01518982018b015289016126f6565b508781018901849052601f01601f19169096018701955093860193918601916001016126dc565b509398975050505050505050565b8051801515811461275657600080fd5b919050565b80516001600160a01b038116811461275657600080fd5b60008060006060848603121561278757600080fd5b8351925061279760208501612746565b91506127a56040850161275b565b90509250925092565b6000604082840312156127c057600080fd5b6040516040810181811067ffffffffffffffff821117156127f157634e487b7160e01b600052604160045260246000fd5b604052825181526020928301519281019290925250919050565b600181811c9082168061281f57607f821691505b60208210810361283f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561285757600080fd5b61286082612746565b9392505050565b60006020828403121561287957600080fd5b5051919050565b60006020828403121561289257600080fd5b6128608261275b56fe60a06040523060805234801561001457600080fd5b50608051611a8761004c60003960008181610656015281816106e0015281816108ce015281816109530152610a390152611a876000f3fe60806040526004361061015f5760003560e01c80637814d568116100c0578063c4d66de811610074578063f2fde38b11610059578063f2fde38b14610469578063f8806a1314610489578063fc2ebdd11461052f57600080fd5b8063c4d66de814610429578063d80ea5a01461044957600080fd5b80638df8b2fe116100a55780638df8b2fe1461036c578063985751881461038c578063b34e0c47146103ac57600080fd5b80637814d5681461031a5780638da5cb5b1461033a57600080fd5b806342a987a01161011757806352d1902d116100fc57806352d1902d146102c2578063642ce76b146102e5578063715018a61461030557600080fd5b806342a987a01461027f5780634f1ef286146102af57600080fd5b80633659cfe6116101485780633659cfe6146101d457806339ebf823146101f45780633d4768301461025f57600080fd5b80631413d4c014610164578063175188e8146101b2575b600080fd5b34801561017057600080fd5b5061019861017f366004611771565b6066602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b3480156101be57600080fd5b506101d26101cd366004611771565b61054f565b005b3480156101e057600080fd5b506101d26101ef366004611771565b61064c565b34801561020057600080fd5b5061023b61020f366004611771565b6067602052600090815260409020805460019091015460ff81169061010090046001600160a01b031683565b6040805193845291151560208401526001600160a01b0316908201526060016101a9565b34801561026b57600080fd5b506101d261027a366004611771565b6107cc565b34801561028b57600080fd5b5061029f61029a36600461178c565b61083c565b60405190151581526020016101a9565b6101d26102bd36600461181f565b6108c4565b3480156102ce57600080fd5b506102d7610a2c565b6040519081526020016101a9565b3480156102f157600080fd5b506101d26103003660046118c5565b610af1565b34801561031157600080fd5b506101d2610bc6565b34801561032657600080fd5b506101d26103353660046118ef565b610bda565b34801561034657600080fd5b506033546001600160a01b03165b6040516001600160a01b0390911681526020016101a9565b34801561037857600080fd5b50606554610354906001600160a01b031681565b34801561039857600080fd5b506101d26103a7366004611771565b610ca2565b3480156103b857600080fd5b5061040e6103c7366004611771565b6040805180820190915260008082526020820152506001600160a01b0316600090815260666020908152604091829020825180840190935280548352600101549082015290565b604080518251815260209283015192810192909252016101a9565b34801561043557600080fd5b506101d2610444366004611771565b610d1d565b34801561045557600080fd5b506101d2610464366004611771565b610e6e565b34801561047557600080fd5b506101d2610484366004611771565b610f27565b34801561049557600080fd5b506105026104a4366004611771565b6040805160608082018352600080835260208084018290529284018190526001600160a01b0394851681526067835283902083519182018452805482526001015460ff81161515928201929092526101009091049092169082015290565b6040805182518152602080840151151590820152918101516001600160a01b0316908201526060016101a9565b34801561053b57600080fd5b506101d261054a366004611962565b610fb4565b806105626033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061058b57506065546001600160a01b031633145b806105b757506001600160a01b0381811660009081526067602052604090206001015461010090041633145b15610616576105c582611148565b6001600160a01b03821660008181526067602052604080822060018101805460ff19169055829055517f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea49190a25050565b6040517fe3b6914b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106de5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107397f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146107a45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b6107ad81611188565b604080516000808252602082019092526107c991839190611190565b50565b6107d4611330565b6107dd81611148565b606580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f5117c6c457d7b27a4cb68df40b118f157ac1f1ba81f8a571d189f829d74fbc8690600090a35050565b6001600160a01b03808316600090815260666020908152604080832081518083018352815481526001918201548185015286861685526067845282852083516060810185528154815292015460ff81161515948301859052610100900490951691810191909152919291906108b6576001925050506108be565b519051101590505b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109515760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016106d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109ac7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610a175760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016106d5565b610a2082611188565b61064882826001611190565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610acc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d5565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b81610b046033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610b2d57506065546001600160a01b031633145b80610b5957506001600160a01b0381811660009081526067602052604090206001015461010090041633145b1561061657610b6783611148565b6001600160a01b03831660008181526067602052604090819020849055517f40ba4d5d9facd2fda74e22251d1638576e05a30482470363c7c87a7b5b298c0990610bb49085815260200190565b60405180910390a2505050565b505050565b610bce611330565b610bd8600061138a565b565b6033546001600160a01b0316331480610bfd57506065546001600160a01b031633145b15610c7057610c0b82611148565b6001600160a01b03821660008181526066602090815260409182902084518082558583015160019092018290558351908152918201527f1e0ca12706807bceff25136f95fe6f69c1319c044f6073e6056a287e4f541b1d910160405180910390a25050565b6040517f7d7b71b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033546001600160a01b0316331480610cc557506065546001600160a01b031633145b15610c7057610cd381611148565b6001600160a01b038116600081815260666020526040808220828155600101829055517fe9dce8c992623ce791725b21e857e33248d1f190a25b5168313420eebdaae99d9190a250565b600054610100900460ff1615808015610d3d5750600054600160ff909116105b80610d575750303b158015610d57575060005460ff166001145b610dc95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106d5565b6000805460ff191660011790558015610dec576000805461ff0019166101001790555b610df46113e9565b610dfd82611148565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790558015610648576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6001600160a01b038082166000908152606760205260409020600101548291610100909104163303610ef557610ea382611148565b6001600160a01b0382166000818152606760205260408082206001908101805460ff19169091179055517f652f053fc39779b70b29678135ade972fcb79966fc68fcb77c996b1aa4fd9afb9190a25050565b6040517f97ffbac900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2f611330565b6001600160a01b038116610fab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106d5565b6107c98161138a565b6033546001600160a01b0316331480610fd757506065546001600160a01b031633145b15610c7057610fe583611148565b610fee81611148565b6001600160a01b03831660009081526067602052604090205415158061103557506001600160a01b0383811660009081526067602052604090206001015461010090041615155b1561106c576040517fc45546f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160608082018352848252600060208084018281526001600160a01b038781168688018181528b831680875260678652898720985189559351600190980180549151909316610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff981515989098167fffffffffffffffffffffff000000000000000000000000000000000000000000909116179690961790558551888152918201929092529384019290925290917f9b1a157188de9a0bd2e7995d72aaba244d9bd012ddf3ae3d4f492135175070cb9101610bb4565b6001600160a01b0381166107c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c9611330565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156111c357610bc18361145c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561121d575060408051601f3d908101601f1916820190925261121a9181019061199e565b60015b61128f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146113245760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016106d5565b50610bc1838383611527565b6033546001600160a01b03163314610bd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d5565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166114545760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd8611552565b6001600160a01b0381163b6114d95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016106d5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b611530836115c6565b60008251118061153d5750805b15610bc15761154c8383611606565b50505050565b600054610100900460ff166115bd5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106d5565b610bd83361138a565b6115cf8161145c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061162b8383604051806060016040528060278152602001611a2b60279139611632565b9392505050565b6060600080856001600160a01b03168560405161164f91906119db565b600060405180830381855af49150503d806000811461168a576040519150601f19603f3d011682016040523d82523d6000602084013e61168f565b606091505b50915091506116a0868383876116aa565b9695505050505050565b60608315611719578251600003611712576001600160a01b0385163b6117125760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d5565b5081611723565b611723838361172b565b949350505050565b81511561173b5781518083602001fd5b8060405162461bcd60e51b81526004016106d591906119f7565b80356001600160a01b038116811461176c57600080fd5b919050565b60006020828403121561178357600080fd5b61162b82611755565b6000806040838503121561179f57600080fd5b6117a883611755565b91506117b660208401611755565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611817576118176117bf565b604052919050565b6000806040838503121561183257600080fd5b61183b83611755565b915060208084013567ffffffffffffffff8082111561185957600080fd5b818601915086601f83011261186d57600080fd5b81358181111561187f5761187f6117bf565b611891601f8201601f191685016117ee565b915080825287848285010111156118a757600080fd5b80848401858401376000848284010152508093505050509250929050565b600080604083850312156118d857600080fd5b6118e183611755565b946020939093013593505050565b600080828403606081121561190357600080fd5b61190c84611755565b92506040601f198201121561192057600080fd5b506040516040810181811067ffffffffffffffff82111715611944576119446117bf565b60409081526020858101358352940135938101939093525092909150565b60008060006060848603121561197757600080fd5b61198084611755565b92506020840135915061199560408501611755565b90509250925092565b6000602082840312156119b057600080fd5b5051919050565b60005b838110156119d25781810151838201526020016119ba565b50506000910152565b600082516119ed8184602087016119b7565b9190910192915050565b6020815260008251806020840152611a168160408501602087016119b7565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cd7c05347437b99cf35f2e0f8f6648973bab95fd9fd232d0c8bb87c48f7183c964736f6c63430008130033a26469706673582212208376a9bdbd1066d1ed93c2cb53b59dbcae58359495a0eee0acb4358f1295e8b364736f6c63430008130033","sourceMap":"138:5034:123:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;442:32;;;;;;;;;;;;;;188:25:128;;;244:2;229:18;;222:34;;;;161:18;442:32:123;;;;;;;;2768:544;;;:::i;:::-;;481:207;;;:::i;694:331::-;;;:::i;2452:134:41:-;;;:::i;:::-;;;;;;;:::i;2079:247:123:-;;;:::i;1651:217::-;;;:::i;3360:151:41:-;;;:::i;:::-;;;;;;;:::i;3904:581:123:-;;;:::i;3221:133:41:-;;;:::i;392:44:123:-;;;;;-1:-1:-1;;;;;392:44:123;;;;;;-1:-1:-1;;;;;3249:55:128;;;3231:74;;3219:2;3204:18;392:44:123;3085:226:128;2922:141:41;;;:::i;180:36:123:-;;;;;;;;-1:-1:-1;;;;;180:36:123;;;267:32;;;;;-1:-1:-1;;;;;267:32:123;;;2738:178:41;;;:::i;:::-;;;;;;;:::i;347:39:123:-;;;;;-1:-1:-1;;;;;347:39:123;;;1874:199;;;:::i;2592:140:41:-;;;:::i;:::-;;;;;;;:::i;4491:679:123:-;;;:::i;222:39::-;;;;;-1:-1:-1;;;;;222:39:123;;;3069:146:41;;;:::i;2332:430:123:-;;;:::i;305:36::-;;;;;-1:-1:-1;;;;;305:36:123;;;2157:141:41;;;:::i;1243:204:37:-;;;:::i;:::-;;;6587:14:128;;6580:22;6562:41;;6550:2;6535:18;1243:204:37;6422:187:128;1031:362:123;;;:::i;2304:142:41:-;;;:::i;3318:580:123:-;;;:::i;1399:246::-;;;:::i;1016:26:48:-;;;;;;;;;2768:544:123;2857:11;;2848:21;;-1:-1:-1;;;2848:21:123;;-1:-1:-1;;;;;2857:11:123;;;2848:21;;;3231:74:128;2835:2:123;;2848:8;;;;3204:18:128;;2848:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2879:14:123;;2906:8;;2927:11;;2879:60;;-1:-1:-1;;;2879:60:123;;-1:-1:-1;;;;;2906:8:123;;;2879:60;;;6877:34:128;6927:18;;;6920:34;;;2927:11:123;;;6970:18:128;;;6963:43;2879:14:123;;;;;;-1:-1:-1;2879:26:123;;-1:-1:-1;6789:18:128;;2879:60:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2959:11:123;;2950:21;;-1:-1:-1;;;2950:21:123;;-1:-1:-1;;;;;2959:11:123;;;2950:21;;;3231:74:128;2950:8:123;;-1:-1:-1;2950:8:123;;-1:-1:-1;3204:18:128;;2950:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2981:14:123;;3011:8;;2981:39;;;;;-1:-1:-1;;;;;3011:8:123;;;2981:39;;;3231:74:128;2981:14:123;;;;;;-1:-1:-1;2981:29:123;;-1:-1:-1;3204:18:128;;2981:39:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3105:14:123;;3131:8;;3105:35;;-1:-1:-1;;;3105:35:123;;-1:-1:-1;;;;;3131:8:123;;;3105:35;;;3231:74:128;3032:23:123;;-1:-1:-1;3032:23:123;;-1:-1:-1;3032:23:123;;3105:14;;;;;;;:25;;3204:18:128;;3105:35:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3031:109;;;;;;3150:28;3159:15;3176:1;3150:8;:28::i;:::-;3188:29;3197:12;3211:5;3188:8;:29::i;:::-;3255:11;;3227:40;;3236:17;;-1:-1:-1;;;;;3255:11:123;3227:8;:40::i;:::-;2805:507;;;;2768:544::o;481:207::-;532:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;515:14:123;:37;;;;;-1:-1:-1;;;;;515:37:123;;;;;;;;;;;;;588:11;;562:38;;;;;588:11;;;562:38;;;3231:74:128;562:14:123;;;;;;:25;;3204:18:128;;562:38:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;625:56:123;;;;;;;;;646:3;625:56;;;664:15;625:56;;;;;;;610:12;:71;;;-1:-1:-1;;481:207:123:o;694:331::-;748:11;;739:21;;-1:-1:-1;;;739:21:123;;-1:-1:-1;;;;;748:11:123;;;739:21;;;3231:74:128;739:8:123;;;;3204:18:128;;739:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;770:14:123;;798:4;;770:47;;-1:-1:-1;;;770:47:123;;-1:-1:-1;;;;;798:4:123;;;770:47;;;7977:74:128;804:12:123;8087:13:128;;8067:18;;;8060:41;8143:17;8137:24;8117:18;;;8110:52;770:14:123;;;;;;-1:-1:-1;770:27:123;;-1:-1:-1;7950:18:128;;770:47:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;861:14:123;;889:4;;861:33;;-1:-1:-1;;;861:33:123;;-1:-1:-1;;;;;889:4:123;;;861:33;;;3231:74:128;828:30:123;;-1:-1:-1;861:14:123;;;;;;-1:-1:-1;861:27:123;;3204:18:128;;861:33:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;913:16;;931:12;:18;828:66;;-1:-1:-1;904:46:123;;:8;:46::i;:::-;960:58;969:10;:22;;;993:12;:24;;;960:8;:58::i;:::-;729:296;694:331::o;2452:134:41:-;2499:33;2563:16;2544:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2544:35:41;;;;;;;;;;;;;;;;;;;;;;;2452:134;:::o;2079:247:123:-;2192:11;;2183:21;;-1:-1:-1;;;2183:21:123;;-1:-1:-1;;;;;2192:11:123;;;2183:21;;;3231:74:128;2170:1:123;;2183:8;;;;3204:18:128;;2183:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2214:51:123;;;;;9040:2:128;2214:51:123;;;9022:21:128;;;9059:18;;;9052:30;9118:34;9098:18;;;9091:62;2214:15:123;;-1:-1:-1;2214:15:123;;-1:-1:-1;9170:18:128;;2214:51:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2275:14:123;;:44;;-1:-1:-1;;;2275:44:123;;-1:-1:-1;;;;;3249:55:128;;;2275:44:123;;;3231:74:128;2275:14:123;;;;;;;;-1:-1:-1;2275:32:123;;-1:-1:-1;3204:18:128;;2275:44:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2131:195;2079:247::o;1651:217::-;1722:16;;1713:26;;-1:-1:-1;;;1713:26:123;;-1:-1:-1;;;;;1722:16:123;;;1713:26;;;3231:74:128;1713:8:123;;;;3204:18:128;;1713:26:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1749:55:123;;-1:-1:-1;;;1749:55:123;;-1:-1:-1;;;1749:55:123;;;9343:98:128;1749:15:123;;-1:-1:-1;1749:15:123;;-1:-1:-1;9316:18:128;;1749:55:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1814:14:123;;1842:4;;1814:47;;-1:-1:-1;;;1814:47:123;;-1:-1:-1;;;;;1842:4:123;;;1814:47;;;7977:74:128;1848:12:123;8087:13:128;;8067:18;;;8060:41;8143:17;8137:24;8117:18;;;8110:52;1814:14:123;;;;;;-1:-1:-1;1814:27:123;;-1:-1:-1;7950:18:128;;1814:47:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151:41;3409:42;3485:19;3463:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:41:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:151;:::o;3904:581:123:-;4042:11;;4033:21;;-1:-1:-1;;;4033:21:123;;-1:-1:-1;;;;;4042:11:123;;;4033:21;;;3231:74:128;3985:2:123;;4020;;4033:8;;;;3204:18:128;;4033:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4064:14:123;;4091:8;;4112:11;;4064:60;;-1:-1:-1;;;4064:60:123;;-1:-1:-1;;;;;4091:8:123;;;4064:60;;;6877:34:128;6927:18;;;6920:34;;;4112:11:123;;;6970:18:128;;;6963:43;4064:14:123;;;;;;-1:-1:-1;4064:26:123;;-1:-1:-1;6789:18:128;;4064:60:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4144:11:123;;4135:21;;-1:-1:-1;;;4135:21:123;;-1:-1:-1;;;;;4144:11:123;;;4135:21;;;3231:74:128;4135:8:123;;-1:-1:-1;4135:8:123;;-1:-1:-1;3204:18:128;;4135:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4166:14:123;;4197:8;;4166:54;;-1:-1:-1;;;4166:54:123;;-1:-1:-1;;;;;4197:8:123;;;4166:54;;;10068:74:128;10158:18;;;10151:34;;;4166:14:123;;;;;;-1:-1:-1;4166:30:123;;-1:-1:-1;10041:18:128;;4166:54:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4305:14:123;;4331:8;;4305:35;;-1:-1:-1;;;4305:35:123;;-1:-1:-1;;;;;4331:8:123;;;4305:35;;;3231:74:128;4232:23:123;;-1:-1:-1;4232:23:123;;-1:-1:-1;4232:23:123;;4305:14;;;;;;;:25;;3204:18:128;;4305:35:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4231:109;;;;;;4350:39;4359:15;4376:12;4350:8;:39::i;:::-;4399:29;4408:12;4422:5;4399:8;:29::i;:::-;4466:11;;4438:40;;4447:17;;-1:-1:-1;;;;;4466:11:123;4438:8;:40::i;3221:133:41:-;3267:33;3331:16;3312:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3312:35:41;;;;;;;;;;;;;;;;;;;;;;3221:133;:::o;2922:141::-;2970:35;3038:18;3017:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3017:39:41;;;;;;;;;;;;;;;;;;;;;;2922:141;:::o;2738:178::-;2794:48;2883:26;2854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2854:55:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1874:199:123;1943:16;;1934:26;;-1:-1:-1;;;1934:26:123;;-1:-1:-1;;;;;1943:16:123;;;1934:26;;;3231:74:128;1934:8:123;;;;3204:18:128;;1934:26:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1970:55:123;;-1:-1:-1;;;1970:55:123;;-1:-1:-1;;;1970:55:123;;;9343:98:128;1970:15:123;;-1:-1:-1;1970:15:123;;-1:-1:-1;9316:18:128;;1970:55:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2035:14:123;;2061:4;;2035:31;;-1:-1:-1;;;2035:31:123;;-1:-1:-1;;;;;2061:4:123;;;2035:31;;;3231:74:128;2035:14:123;;;;;;-1:-1:-1;2035:25:123;;-1:-1:-1;3204:18:128;;2035:31:123;3085:226:128;2592:140:41;2640:34;2707:18;2686:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4491:679:123;4582:11;;4573:21;;-1:-1:-1;;;4573:21:123;;-1:-1:-1;;;;;4582:11:123;;;4573:21;;;3231:74:128;4560:2:123;;4573:8;;;;3204:18:128;;4573:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4604:14:123;;4631:8;;4652:11;;4604:60;;-1:-1:-1;;;4604:60:123;;-1:-1:-1;;;;;4631:8:123;;;4604:60;;;6877:34:128;6927:18;;;6920:34;;;4652:11:123;;;6970:18:128;;;6963:43;4604:14:123;;;;;;-1:-1:-1;4604:26:123;;-1:-1:-1;6789:18:128;;4604:60:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4688:11:123;;4674:26;;;;;-1:-1:-1;;;;;4688:11:123;;;4674:26;;;3231:74:128;4674:13:123;;-1:-1:-1;4674:13:123;;-1:-1:-1;3204:18:128;;4674:26:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4710:14:123;;4742:8;;4710:41;;;;;-1:-1:-1;;;;;4742:8:123;;;4710:41;;;3231:74:128;4710:14:123;;;;;;-1:-1:-1;4710:31:123;;-1:-1:-1;3204:18:128;;4710:41:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:35;309:37;;-1:-1:-1;;;;;4761:12:123;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4795:11:123;;4786:21;;-1:-1:-1;;;4786:21:123;;-1:-1:-1;;;;;4795:11:123;;;4786:21;;;3231:74:128;4786:8:123;;-1:-1:-1;4786:8:123;;-1:-1:-1;3204:18:128;;4786:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4817:14:123;;4845:4;;4817:47;;-1:-1:-1;;;4817:47:123;;-1:-1:-1;;;;;4845:4:123;;;4817:47;;;7977:74:128;4851:12:123;8087:13:128;;8067:18;;;8060:41;8143:17;8137:24;8117:18;;;8110:52;4817:14:123;;;;;;-1:-1:-1;4817:27:123;;-1:-1:-1;7950:18:128;;4817:47:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4893:14:123;;4925:4;;4931:8;;4893:47;;-1:-1:-1;;;4893:47:123;;-1:-1:-1;;;;;4925:4:123;;;4893:47;;;10431:34:128;4931:8:123;;;10481:18:128;;;10474:43;4875:15:123;;-1:-1:-1;4893:14:123;;;;;;-1:-1:-1;4893:31:123;;10343:18:128;;4893:47:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4875:65;;4950:22;4961:10;4950;:22::i;:::-;4992:11;;4983:21;;-1:-1:-1;;;4983:21:123;;-1:-1:-1;;;;;4992:11:123;;;4983:21;;;3231:74:128;4983:8:123;;;;3204:18:128;;4983:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5014:14:123;;5045:8;;5014:45;;-1:-1:-1;;;5014:45:123;;-1:-1:-1;;;;;5045:8:123;;;5014:45;;;10068:74:128;5055:3:123;10158:18:128;;;10151:34;5014:14:123;;;;;;-1:-1:-1;5014:30:123;;-1:-1:-1;10041:18:128;;5014:45:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5083:14:123;;5115:4;;5121:8;;5083:47;;-1:-1:-1;;;5083:47:123;;-1:-1:-1;;;;;5115:4:123;;;5083:47;;;10431:34:128;5121:8:123;;;10481:18:128;;;10474:43;5083:14:123;;;;;;-1:-1:-1;5083:31:123;;-1:-1:-1;10343:18:128;;5083:47:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5070:60;;5140:23;5152:10;5140:11;:23::i;:::-;4530:640;;4491:679::o;3069:146:41:-;3117:40;3190:18;3169:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3169:39:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2332:430:123;2418:11;;2409:21;;-1:-1:-1;;;2409:21:123;;-1:-1:-1;;;;;2418:11:123;;;2409:21;;;3231:74:128;2396:2:123;;2409:8;;;;3204:18:128;;2409:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2440:14:123;;2467:8;;2488:11;;2440:60;;-1:-1:-1;;;2440:60:123;;-1:-1:-1;;;;;2467:8:123;;;2440:60;;;6877:34:128;6927:18;;;6920:34;;;2488:11:123;;;6970:18:128;;;6963:43;2440:14:123;;;;;;-1:-1:-1;2440:26:123;;-1:-1:-1;6789:18:128;;2440:60:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2585:14:123;;2611:8;;2585:35;;-1:-1:-1;;;2585:35:123;;-1:-1:-1;;;;;2611:8:123;;;2585:35;;;3231:74:128;2512:23:123;;-1:-1:-1;2512:23:123;;-1:-1:-1;2512:23:123;;2585:14;;;;;;;:25;;3204:18:128;;2585:35:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2511:109;;;;;;2630:36;2639:15;2656:9;2630:8;:36::i;2157:141:41:-;2206:34;2273:18;2252:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:204:37;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:37;;;;;1243:204::o;1298:143::-;1377:39;;;;;:7;:39;;;10068:74:128;;;1398:17:37;10158:18:128;;;10151:34;1428:1:37;;1377:7;;10041:18:128;;1377:39:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;1031:362:123:-;1083:11;;1074:21;;-1:-1:-1;;;1074:21:123;;-1:-1:-1;;;;;1083:11:123;;;1074:21;;;3231:74:128;1074:8:123;;;;3204:18:128;;1074:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1105:14:123;;1133:4;;1105:47;;-1:-1:-1;;;1105:47:123;;-1:-1:-1;;;;;1133:4:123;;;1105:47;;;7977:74:128;1139:12:123;8087:13:128;;8067:18;;;8060:41;8143:17;8137:24;8117:18;;;8110:52;1105:14:123;;;;;;-1:-1:-1;1105:27:123;;-1:-1:-1;7950:18:128;;1105:47:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1172:11:123;;1163:21;;-1:-1:-1;;;1163:21:123;;-1:-1:-1;;;;;1172:11:123;;;1163:21;;;3231:74:128;1163:8:123;;-1:-1:-1;1163:8:123;;-1:-1:-1;3204:18:128;;1163:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1194:14:123;;1220:4;;1194:31;;-1:-1:-1;;;1194:31:123;;-1:-1:-1;;;;;1220:4:123;;;1194:31;;;3231:74:128;1194:14:123;;;;;;-1:-1:-1;1194:25:123;;-1:-1:-1;3204:18:128;;1194:31:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1269:14:123;;1297:4;;1269:33;;-1:-1:-1;;;1269:33:123;;-1:-1:-1;;;;;1297:4:123;;;1269:33;;;3231:74:128;1236:30:123;;-1:-1:-1;1269:14:123;;;;;;-1:-1:-1;1269:27:123;;3204:18:128;;1269:33:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1236:66;;1312:29;1321:10;:16;;;1339:1;1312:8;:29::i;:::-;1351:35;1360:10;:22;;;1384:1;1351:8;:35::i;2304:142:41:-;2353:35;2421:18;2400:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2400:39:41;;;;;;;;;;;;;;;;;;;;;;2304:142;:::o;3318:580:123:-;3455:11;;3446:21;;-1:-1:-1;;;3446:21:123;;-1:-1:-1;;;;;3455:11:123;;;3446:21;;;3231:74:128;3398:2:123;;3433;;3446:8;;;;3204:18:128;;3446:21:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3477:14:123;;3504:8;;3525:11;;3477:60;;-1:-1:-1;;;3477:60:123;;-1:-1:-1;;;;;3504:8:123;;;3477:60;;;6877:34:128;6927:18;;;6920:34;;;3525:11:123;;;6970:18:128;;;6963:43;3477:14:123;;;;;;-1:-1:-1;3477:26:123;;-1:-1:-1;6789:18:128;;3477:60:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3557:11:123;;3548:21;;-1:-1:-1;;;3548:21:123;;-1:-1:-1;;;;;3557:11:123;;;3548:21;;;3231:74:128;3548:8:123;;-1:-1:-1;3548:8:123;;-1:-1:-1;3204:18:128;;3548:21:123;3085:226:128;1399:246:123;1500:14;;:22;;;;;;;;1478:1;;1491:8;;;;1500:14;;;;-1:-1:-1;;;;;1500:14:123;;:20;;:22;;;;;;;;;;;;;;;:14;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1491:32;;;;;;;;;;-1:-1:-1;;;;;3249:55:128;;;1491:32:123;;;3231:74:128;3204:18;;1491:32:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1533:14:123;;:44;;-1:-1:-1;;;1533:44:123;;-1:-1:-1;;;;;3249:55:128;;;1533:44:123;;;3231:74:128;1533:14:123;;;;;;;;-1:-1:-1;1533:32:123;;-1:-1:-1;3204:18:128;;1533:44:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:50;1597:14;;;;;;;;;-1:-1:-1;;;;;1597:14:123;-1:-1:-1;;;;;1597:26:123;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1627:10;1588:8;:50::i;2270:110:37:-;2349:24;;;;;;;;188:25:128;;;229:18;;;222:34;;;2349:11:37;;;;161:18:128;;2349:24:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2270:110;;:::o;2026:104::-;2099:24;;;;;11938:14:128;;11931:22;2099:24:37;;;11913:41:128;11997:14;;11990:22;11970:18;;;11963:50;2099:11:37;;;;11886:18:128;;2099:24:37;11751:268:128;3454:110:37;3533:24;;;;;-1:-1:-1;;;;;10449:15:128;;;3533:24:37;;;10431:34:128;10501:15;;10481:18;;;10474:43;3533:11:37;;;;10343:18:128;;3533:24:37;10196:327:128;1594:89:37;1657:19;;;;;6587:14:128;;6580:22;1657:19:37;;;6562:41:128;1657:13:37;;;;6535:18:128;;1657:19:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1808:91;1872:20;;;;;6587:14:128;;6580:22;1872:20:37;;;6562:41:128;1872:14:37;;;;6535:18:128;;1872:20:37;6422:187:128;-1:-1:-1;;;;;;;;:::o;267:681:128:-;438:2;490:21;;;560:13;;463:18;;;582:22;;;409:4;;438:2;661:15;;;;635:2;620:18;;;409:4;704:218;718:6;715:1;712:13;704:218;;;783:13;;-1:-1:-1;;;;;779:62:128;767:75;;897:15;;;;862:12;;;;740:1;733:9;704:218;;;-1:-1:-1;939:3:128;;267:681;-1:-1:-1;;;;;;267:681:128:o;953:2127::-;1159:4;1188:2;1228;1217:9;1213:18;1258:2;1247:9;1240:21;1281:6;1316;1310:13;1347:6;1339;1332:22;1373:2;1363:12;;1406:2;1395:9;1391:18;1384:25;;1468:2;1458:6;1455:1;1451:14;1440:9;1436:30;1432:39;1506:2;1498:6;1494:15;1527:1;1537:1514;1551:6;1548:1;1545:13;1537:1514;;;-1:-1:-1;;1616:22:128;;;1612:36;1600:49;;1672:13;;1759:9;;-1:-1:-1;;;;;1755:58:128;1740:74;;1853:11;;1847:18;1885:15;;;1878:27;;;1966:19;;1712:15;;;1998:24;;;2178:21;;;;2045:2;2131:1;2127:16;;;2115:29;;2111:38;;;2069:15;;;;2223:1;2237:705;2253:8;2248:3;2245:17;2237:705;;;2334:19;;;-1:-1:-1;;2330:33:128;2316:48;;2391:15;;2439:9;;2465:24;;;2517:1;2535:169;2551:8;2546:3;2543:17;2535:169;;;2681:2;2675:3;2671:2;2667:12;2663:21;2657:28;2652:2;2646:3;2638:6;2634:16;2630:25;2623:63;2579:2;2574:3;2570:12;2563:19;;2535:169;;;-1:-1:-1;2760:1:128;2732:21;;;2728:30;;2721:41;2871:17;;;;2832:2;2809:17;-1:-1:-1;;2805:31:128;2793:44;;;2789:53;;;-1:-1:-1;2914:14:128;;;;2281:1;2272:11;2237:705;;;-1:-1:-1;;;3029:12:128;;;;2965:6;-1:-1:-1;;2994:15:128;;;;1573:1;1566:9;1537:1514;;;-1:-1:-1;3068:6:128;;953:2127;-1:-1:-1;;;;;;;;953:2127:128:o;3571:1638::-;3775:4;3804:2;3844;3833:9;3829:18;3874:2;3863:9;3856:21;3897:6;3932;3926:13;3963:6;3955;3948:22;3989:2;3979:12;;4022:2;4011:9;4007:18;4000:25;;4084:2;4074:6;4071:1;4067:14;4056:9;4052:30;4048:39;4122:2;4114:6;4110:15;4143:1;4164;4174:1006;4190:6;4185:3;4182:15;4174:1006;;;4259:22;;;-1:-1:-1;;4255:36:128;4243:49;;4315:13;;4402:9;;-1:-1:-1;;;;;4398:58:128;4383:74;;4496:11;;4490:18;4528:15;;;4521:27;;;4609:19;;4355:15;;;4641:24;;;4731:21;;;;4776:1;;4699:2;4687:15;;;4790:282;4806:8;4801:3;4798:17;4790:282;;;4887:15;;4904:66;4883:88;4869:103;;5041:17;;;;4834:1;4825:11;;;;;4998:14;;;;4790:282;;;-1:-1:-1;5158:12:128;;;;5095:5;-1:-1:-1;;;5123:15:128;;;;4216:1;4207:11;4174:1006;;;-1:-1:-1;5197:6:128;;3571:1638;-1:-1:-1;;;;;;;;;3571:1638:128:o;5214:1203::-;5376:4;5405:2;5445;5434:9;5430:18;5475:2;5464:9;5457:21;5498:6;5533;5527:13;5564:6;5556;5549:22;5602:2;5591:9;5587:18;5580:25;;5664:2;5654:6;5651:1;5647:14;5636:9;5632:30;5628:39;5614:53;;5702:2;5694:6;5690:15;5723:1;5744;5754:634;5770:6;5765:3;5762:15;5754:634;;;5839:22;;;-1:-1:-1;;5835:36:128;5823:49;;5895:13;;5937:9;;5959:24;;;6007:1;6021:157;6037:8;6032:3;6029:17;6021:157;;;6145:12;;;6141:21;;6135:28;6112:16;;;6108:25;;6101:63;6056:12;;6021:157;;;-1:-1:-1;6202:21:128;;;6198:30;;6191:41;;;6298:2;6275:17;-1:-1:-1;;6271:31:128;6259:44;;;6255:53;;;-1:-1:-1;6366:12:128;;;;6331:15;;;;5796:1;5787:11;5754:634;;;-1:-1:-1;6405:6:128;;5214:1203;-1:-1:-1;;;;;;;;5214:1203:128:o;7017:164::-;7093:13;;7142;;7135:21;7125:32;;7115:60;;7171:1;7168;7161:12;7115:60;7017:164;;;:::o;7186:200::-;7265:13;;-1:-1:-1;;;;;7307:54:128;;7297:65;;7287:93;;7376:1;7373;7366:12;7391:348;7476:6;7484;7492;7545:2;7533:9;7524:7;7520:23;7516:32;7513:52;;;7561:1;7558;7551:12;7513:52;7590:9;7584:16;7574:26;;7619:46;7661:2;7650:9;7646:18;7619:46;:::i;:::-;7609:56;;7684:49;7729:2;7718:9;7714:18;7684:49;:::i;:::-;7674:59;;7391:348;;;;;:::o;8173:661::-;8274:6;8327:2;8315:9;8306:7;8302:23;8298:32;8295:52;;;8343:1;8340;8333:12;8295:52;8376:2;8370:9;8418:2;8410:6;8406:15;8487:6;8475:10;8472:22;8451:18;8439:10;8436:34;8433:62;8430:242;;;-1:-1:-1;;;8525:1:128;8518:88;8629:4;8626:1;8619:15;8657:4;8654:1;8647:15;8430:242;8688:2;8681:22;8727:16;;8712:32;;8798:2;8783:18;;;8777:25;8760:15;;;8753:50;;;;-1:-1:-1;8719:6:128;8173:661;-1:-1:-1;8173:661:128:o;9452:437::-;9531:1;9527:12;;;;9574;;;9595:61;;9649:4;9641:6;9637:17;9627:27;;9595:61;9702:2;9694:6;9691:14;9671:18;9668:38;9665:218;;-1:-1:-1;;;9736:1:128;9729:88;9840:4;9837:1;9830:15;9868:4;9865:1;9858:15;9665:218;;9452:437;;;:::o;10528:202::-;10595:6;10648:2;10636:9;10627:7;10623:23;10619:32;10616:52;;;10664:1;10661;10654:12;10616:52;10687:37;10714:9;10687:37;:::i;:::-;10677:47;10528:202;-1:-1:-1;;;10528:202:128:o;11349:184::-;11419:6;11472:2;11460:9;11451:7;11447:23;11443:32;11440:52;;;11488:1;11485;11478:12;11440:52;-1:-1:-1;11511:16:128;;11349:184;-1:-1:-1;11349:184:128:o;11538:208::-;11608:6;11661:2;11649:9;11640:7;11636:23;11632:32;11629:52;;;11677:1;11674;11667:12;11629:52;11700:40;11730:9;11700:40;:::i","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","councilSafe()":"6c53db9a","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","listManager()":"8df8b2fe","passportData()":"073a2d8c","passportScorer()":"4905e831","setUp()":"0a9254e4","strategy()":"a8c62e76","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testAddStrategy()":"9693f128","testAddUserScore()":"0c2759da","testCanExecuteAction()":"8caa5c44","testChangeListManager()":"ebe69a5f","testModifyThresholdByAuthorized()":"e68393b4","testModifyThresholdByCouncilSafe()":"3668aa29","testOnlyAuthorizedCanAddUserScore()":"25821153","testOnlyAuthorizedCanRemoveUser()":"82fad478","testOnlyOwnerCanChangeListManager()":"24e40b97","testRemoveStrategy()":"0778c72c","testRemoveUser()":"d4dadecb","unauthorizedUser()":"3ea7771b","user()":"4f8632ba"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"councilSafe\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"listManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"passportData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"passportScorer\",\"outputs\":[{\"internalType\":\"contract PassportScorer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAddStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAddUserScore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCanExecuteAction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testChangeListManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testModifyThresholdByAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testModifyThresholdByCouncilSafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOnlyAuthorizedCanAddUserScore\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOnlyAuthorizedCanRemoveUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOnlyOwnerCanChangeListManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRemoveStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRemoveUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unauthorizedUser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"pkg/contracts/test/PassportScorerTest.t.sol\":\"PassportScorerTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/foundry/=lib/openzeppelin-foundry-upgrades/src/\",\":@prb/math/=lib/allo-v2/lib/v2-core/lib/prb-math/\",\":@prb/test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/\",\":@sablier/v2-core/=lib/allo-v2/lib/v2-core/\",\":ERC1155/=lib/allo-v2/lib/hats-protocol/lib/ERC1155/\",\":allo-v2-contracts/=lib/allo-v2/contracts/\",\":allo-v2-test/=lib/allo-v2/test/\",\":allo-v2/=lib/allo-v2/\",\":ds-test/=lib/allo-v2/lib/forge-std/lib/ds-test/src/\",\":eas-contracts/=lib/allo-v2/lib/eas-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/allo-v2/lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hats-protocol/=lib/allo-v2/lib/hats-protocol/\",\":openzeppelin-contracts-upgradeable/=lib/allo-v2/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":permit2/=lib/allo-v2/lib/permit2/\",\":prb-math/=lib/allo-v2/lib/v2-core/lib/prb-math/src/\",\":prb-test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/\",\":solady/=lib/allo-v2/lib/solady/\",\":solarray/=lib/allo-v2/lib/v2-core/lib/solarray/src/\",\":solbase/=lib/allo-v2/lib/hats-protocol/lib/solbase/src/\",\":solmate/=lib/allo-v2/lib/permit2/lib/solmate/\",\":utils/=lib/allo-v2/lib/hats-protocol/lib/utils/\",\":v2-core/=lib/allo-v2/lib/v2-core/\"]},\"sources\":{\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c\",\"dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b\",\"dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2\",\"dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d\",\"dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54\",\"dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678\",\"dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d\",\"dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61\",\"dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a\",\"dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b\",\"dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263\",\"dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2\",\"dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1\",\"dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da\",\"dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q\"]},\"pkg/contracts/src/ISybilScorer.sol\":{\"keccak256\":\"0x0e25fbb8497ac3c969d80c9032362d45e56c0a45dc9ba3dff6a8a704571f38ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dff90ebae6e7131a5300fcaf525bc2ab0ae90fcd13f277d7b7b6939eeb8b7eb\",\"dweb:/ipfs/QmYGkYqpUVrBWoNY6f3CtwrrVQFWSvnJfpu68t95f6AkBY\"]},\"pkg/contracts/src/PassportScorer.sol\":{\"keccak256\":\"0x1244948644eb13bbdbf2b62e465427229a9e227e0c214c92eeaf6021401a6513\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://02dc7d6dcc3c0fe5bdd401f58c2b767030a31878734b133e09ea0aa282566d23\",\"dweb:/ipfs/QmVY9NQLx4kKyV7Cxbj9yA4soZ7DuNUEHHPoNfcdmauM3M\"]},\"pkg/contracts/test/PassportScorerTest.t.sol\":{\"keccak256\":\"0x0272f36e062ac081325144514cb4f99582930253fa73ead085d8d62cd424a0a7\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://e757d85ca65e98f0faf26da8cd12c0887e4c2ba2a1c57b9598b9d8e37b4dbebd\",\"dweb:/ipfs/QmXxjr16rc6drof5JcZuN3DneLSdEyScMkNbBSWccb9XoV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"councilSafe","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"listManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"passportData","outputs":[{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"uint256","name":"lastUpdated","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"passportScorer","outputs":[{"internalType":"contract PassportScorer","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"strategy","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testAddStrategy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testAddUserScore"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCanExecuteAction"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testChangeListManager"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testModifyThresholdByAuthorized"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testModifyThresholdByCouncilSafe"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOnlyAuthorizedCanAddUserScore"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOnlyAuthorizedCanRemoveUser"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOnlyOwnerCanChangeListManager"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRemoveStrategy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRemoveUser"},{"inputs":[],"stateMutability":"view","type":"function","name":"unauthorizedUser","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"user","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/foundry/=lib/openzeppelin-foundry-upgrades/src/","@prb/math/=lib/allo-v2/lib/v2-core/lib/prb-math/","@prb/test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/","@sablier/v2-core/=lib/allo-v2/lib/v2-core/","ERC1155/=lib/allo-v2/lib/hats-protocol/lib/ERC1155/","allo-v2-contracts/=lib/allo-v2/contracts/","allo-v2-test/=lib/allo-v2/test/","allo-v2/=lib/allo-v2/","ds-test/=lib/allo-v2/lib/forge-std/lib/ds-test/src/","eas-contracts/=lib/allo-v2/lib/eas-contracts/contracts/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/allo-v2/lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hats-protocol/=lib/allo-v2/lib/hats-protocol/","openzeppelin-contracts-upgradeable/=lib/allo-v2/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","permit2/=lib/allo-v2/lib/permit2/","prb-math/=lib/allo-v2/lib/v2-core/lib/prb-math/src/","prb-test/=lib/allo-v2/lib/v2-core/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/","solady/=lib/allo-v2/lib/solady/","solarray/=lib/allo-v2/lib/v2-core/lib/solarray/src/","solbase/=lib/allo-v2/lib/hats-protocol/lib/solbase/src/","solmate/=lib/allo-v2/lib/permit2/lib/solmate/","utils/=lib/allo-v2/lib/hats-protocol/lib/utils/","v2-core/=lib/allo-v2/lib/v2-core/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"pkg/contracts/test/PassportScorerTest.t.sol":"PassportScorerTest"},"evmVersion":"paris","libraries":{}},"sources":{"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/allo-v2/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xf513292ab066e6017db48ca749c1e63a44dfc5cba0326fc65c718f96e029d361","urls":["bzz-raw://02d715ae2898f1fabd08133f80e6a7a3b87a2796ca5d23d1cb3fed9f4367f34c","dweb:/ipfs/QmfESqa4j3PQAvvdfrnDQ1xUH1TnVCfvZYHsAEDK8z4X4k"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9cc29c28f49d0b7f7b2f1aa32d8273f8a087bf62eb3fb22d893df824052c25ef","urls":["bzz-raw://42dcb36cb10b878a0d5b20ce3a4a3ba4f51f44d7731a66ac1133c699bc80b31b","dweb:/ipfs/QmY6q7SaHQMLBb3rS6xZdArPaXoskWeqF6oJwUeZ3gKLZj"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb72f3519e0bf7d31df5d68557525f4fc55d861c3fb3b0f7793144ef7c94cbeb7","urls":["bzz-raw://f3456d0f78e6f61203fa7871ba2df0d35925f10db3baee14be623ce2a35b84e2","dweb:/ipfs/QmWE6QQSBvJifHMraisBTrf1x4WCwrDoTPLX8UKajTiApc"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x67299bfacd77fddfa2a67b8e2b901e0e333618a4975fb94850b07475e51f6de6","urls":["bzz-raw://1b61121d310f4053ce344b345b4a9ccf43b059daf9097ec2647f594beaca896d","dweb:/ipfs/QmZUCoTtXBM9zfAZVbj2dFPPnKaV1CSZzXE7zictyg3Gfz"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x62bed173cb126f6d5006706cf249bac8a2d51bfa18f773f314784ff18adc622d","urls":["bzz-raw://5acc33dddbf2492e37dc32e89cd56ce917272d303a6874805f3a5768a6bfbf54","dweb:/ipfs/QmTsgFhcpUf16gAVazUXU3WspgX8nHke2hzVCvoqS25WEp"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x651d84d948832f0ef45686417aa68ffb871378fa788a4123dbf37844903c66f3","urls":["bzz-raw://ff20f5ac9de3dc3ba86b1bf1f2723174e82ce3499ad67cb0ccfa7d28baeee678","dweb:/ipfs/QmRZkUFKz7AmF7yk6o317sk822HHhGVPXZQgX8G4LfYfft"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0xc8a57915ace96f5b6a85b57e57690fc038cad9034a3dc368c11828a3707c61ab","urls":["bzz-raw://fa880a1a6e5d94005dcf4811b4c0df8d9c06407017ae111bd351483e2b76a72d","dweb:/ipfs/QmcxkEE58gE1vDcZofTr8QpvdjXjgR72yYg7o4vTPSLCsy"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x502b18a4becda6ecd91fa8b419d8034946bfa80e6cc7f6497f51f8565bfadae0","urls":["bzz-raw://bf499ee483a1dfd02023d4ce78ed4029a49794ccd5b849aaab912faea0d2ba61","dweb:/ipfs/QmP6hwNZW7sYbQK9fBzuZWxfLm6Swx2nKzvZ54qWNqQkzX"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51fec240abc6dd23e0ee6de7c65106379aef732cad6c4ae5df6b55db886e7456","urls":["bzz-raw://a47d9c0a9876e7f9e411843b994a741d4ac1a87d8459ffc3c56359de691ddc1a","dweb:/ipfs/QmQiFN9b3Y2azrD1RBfAKEuAG3YeJkMzA2DGzgEE9kMeEK"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0x3293dcbb7acd28df553c954e4e39e288bf10aab7ecda8d50ef21b4f4a91a28d9","urls":["bzz-raw://9eb374daf6df34f4392f8926f1fddbce9f22c423066aeaefdfbe77395f77967b","dweb:/ipfs/QmWR81zBJRX2uyRjveGzikYPj6ZwKppWsU49YEQXTLWUsN"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90","urls":["bzz-raw://e8fa670c3bdce78e642cc6ae11c4cb38b133499cdce5e1990a9979d424703263","dweb:/ipfs/QmVxeCUk4jL2pXQyhsoNJwyU874wRufS2WvGe8TgPKPqhE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2","urls":["bzz-raw://2db8e18505e86e02526847005d7287a33e397ed7fb9eaba3fd4a4a197add16e2","dweb:/ipfs/QmW9BSuKTzHWHBNSHF4L8XfVuU1uJrP2vLg84YtBd8mL82"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xc6619957bcc6641fe8984bfaf9ff11a9e4b97d8149c0495f608f9a2416d7c5cf","urls":["bzz-raw://543be67f7fa43b1b932637c1c7f12035f0f4b0f7ee2bd3c33841186f79c165c1","dweb:/ipfs/QmSBPM2UVKbmJqWfD9i6hSiqbaE8TV4TSqfuiivziRRLKM"],"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/StorageSlot.sol":{"keccak256":"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899","urls":["bzz-raw://e26daf81e2252dc1fe1ce0e4b55c2eb7c6d1ee84ae6558d1a9554432ea1d32da","dweb:/ipfs/Qmb1UANWiWq5pCKbmHSu772hd4nt374dVaghGmwSVNuk8Q"],"license":"MIT"},"pkg/contracts/src/ISybilScorer.sol":{"keccak256":"0x0e25fbb8497ac3c969d80c9032362d45e56c0a45dc9ba3dff6a8a704571f38ea","urls":["bzz-raw://0dff90ebae6e7131a5300fcaf525bc2ab0ae90fcd13f277d7b7b6939eeb8b7eb","dweb:/ipfs/QmYGkYqpUVrBWoNY6f3CtwrrVQFWSvnJfpu68t95f6AkBY"],"license":"MIT"},"pkg/contracts/src/PassportScorer.sol":{"keccak256":"0x1244948644eb13bbdbf2b62e465427229a9e227e0c214c92eeaf6021401a6513","urls":["bzz-raw://02dc7d6dcc3c0fe5bdd401f58c2b767030a31878734b133e09ea0aa282566d23","dweb:/ipfs/QmVY9NQLx4kKyV7Cxbj9yA4soZ7DuNUEHHPoNfcdmauM3M"],"license":"AGPL-3.0-or-later"},"pkg/contracts/test/PassportScorerTest.t.sol":{"keccak256":"0x0272f36e062ac081325144514cb4f99582930253fa73ead085d8d62cd424a0a7","urls":["bzz-raw://e757d85ca65e98f0faf26da8cd12c0887e4c2ba2a1c57b9598b9d8e37b4dbebd","dweb:/ipfs/QmXxjr16rc6drof5JcZuN3DneLSdEyScMkNbBSWccb9XoV"],"license":"AGPL-3.0-or-later"}},"version":1},"id":123} \ No newline at end of file diff --git a/pkg/contracts/src/PassportScorer.sol b/pkg/contracts/src/PassportScorer.sol index 551a4fa0c..c6875d6e1 100644 --- a/pkg/contracts/src/PassportScorer.sol +++ b/pkg/contracts/src/PassportScorer.sol @@ -24,6 +24,7 @@ contract PassportScorer is Initializable, UUPSUpgradeable, OwnableUpgradeable, I error OnlyCouncilOrAuthorized(); error OnlyCouncil(); error ZeroAddress(); + error StrategyAlreadyExists(); modifier onlyAuthorized() { if (msg.sender == owner() || msg.sender == listManager) { @@ -88,10 +89,14 @@ contract PassportScorer is Initializable, UUPSUpgradeable, OwnableUpgradeable, I } /// @notice Add a strategy to the contract - /// @param _threshold is expresed on a scale of 10**4 + /// @param _threshold is expressed on a scale of 10**4 + /// @param _councilSafe address of the council safe function addStrategy(address _strategy, uint256 _threshold, address _councilSafe) external onlyAuthorized { _revertZeroAddress(_strategy); _revertZeroAddress(_councilSafe); + if (strategies[_strategy].threshold != 0 || strategies[_strategy].councilSafe != address(0)) { + revert StrategyAlreadyExists(); + } strategies[_strategy] = Strategy({threshold: _threshold, active: false, councilSafe: _councilSafe}); emit StrategyAdded(_strategy, _threshold, false, _councilSafe); } From eb56cd46a300c03131b823abd2ed2153380d759b Mon Sep 17 00:00:00 2001 From: Corantin Date: Thu, 25 Jul 2024 17:33:03 -0400 Subject: [PATCH 20/23] Eslint 4 --- apps/web/.eslintrc.js | 18 +--- apps/web/actions/getProposals.ts | 24 ++--- .../[poolId]/[proposalId]/page.tsx | 4 +- .../[poolId]/create-proposal/page.tsx | 6 +- .../[garden]/[community]/[poolId]/page.tsx | 38 +++----- .../[garden]/[community]/create-pool/page.tsx | 40 ++++---- .../[chain]/[garden]/[community]/page.tsx | 60 ++++-------- .../(app)/gardens/[chain]/[garden]/page.tsx | 30 +++--- apps/web/app/(app)/gardens/page.tsx | 8 +- apps/web/app/api/ably-auth/route.ts | 9 +- apps/web/components/ActivatePoints.tsx | 78 ++++++++------- apps/web/components/Badge.tsx | 10 +- apps/web/components/Breadcrumbs.tsx | 2 +- apps/web/components/Button.tsx | 14 +-- apps/web/components/Charts/ChartWrapper.tsx | 4 +- .../components/Charts/ConvictionBarChart.tsx | 12 +-- apps/web/components/CommunityCard.tsx | 10 +- apps/web/components/ConnectWalletButton.tsx | 27 +++--- apps/web/components/EthAddress.tsx | 38 ++++---- apps/web/components/Forms/CommunityForm.tsx | 25 ++--- apps/web/components/Forms/FormInput.tsx | 2 +- apps/web/components/Forms/PoolForm.tsx | 24 +++-- apps/web/components/Forms/ProposalForm.tsx | 17 +++- apps/web/components/IncreasePower.tsx | 70 +++++++------- apps/web/components/NavBar.tsx | 2 +- apps/web/components/PoolCard.tsx | 14 ++- apps/web/components/PoolGovernance.tsx | 2 +- apps/web/components/PoolMetrics.tsx | 2 +- apps/web/components/ProposalCard.tsx | 16 ++-- apps/web/components/Proposals.tsx | 95 +++++++++++-------- apps/web/components/RegisterMember.tsx | 35 ++++--- apps/web/components/Statistic.tsx | 2 +- apps/web/components/ThemeButton.tsx | 2 +- apps/web/components/TokenGardenFaucet.tsx | 20 ++-- apps/web/components/TransactionModal.tsx | 6 +- apps/web/contexts/pubsub.context.tsx | 14 +-- apps/web/globals.ts | 2 +- apps/web/hooks/useCollectQueryParams.ts | 6 +- .../useContractWriteWithConfirmations.ts | 24 ++++- apps/web/hooks/useSubgraphQuery.ts | 36 +++---- apps/web/hooks/useSubgraphQueryMultiChain.ts | 3 +- apps/web/hooks/useTransactionNotification.tsx | 7 +- apps/web/package.json | 2 +- apps/web/prettier.config.js | 3 +- apps/web/providers/urql.tsx | 5 +- apps/web/services/getTitlesFromUrlSegments.ts | 10 +- apps/web/styles/globals.css | 2 +- apps/web/tailwind.config.js | 2 +- apps/web/types/index.ts | 8 +- apps/web/utils/contracts.ts | 50 +++++++--- apps/web/utils/encodeFunctionParams.ts | 2 +- apps/web/utils/ipfsUtils.ts | 63 ++++++------ pnpm-lock.yaml | 78 ++------------- 53 files changed, 526 insertions(+), 557 deletions(-) diff --git a/apps/web/.eslintrc.js b/apps/web/.eslintrc.js index 92e08a265..d86a8a457 100644 --- a/apps/web/.eslintrc.js +++ b/apps/web/.eslintrc.js @@ -76,26 +76,14 @@ module.exports = { ], "prefer-const": "off", "@typescript-eslint/consistent-type-definitions": "off", - curly: ["error", "multi-line"], "no-unused-expressions": "error", "no-unsafe-optional-chaining": "error", - "comma-dangle": ["error", "always-multiline"], - semi: ["error", "always"], - "brace-style": ["error"], - "@typescript-eslint/indent": ["error", 2], - "@typescript-eslint/quotes": ["error", "double"], "import/extensions": "off", - "no-multiple-empty-lines": ["error", { max: 1 }], - "no-trailing-spaces": "error", - "no-multi-spaces": "error", + "@typescript-eslint/quotes": ["error", "double"], "@typescript-eslint/no-use-before-define": "off", "jsx-a11y/no-static-element-interactions": "off", - "no-irregular-whitespace": "error", - "object-property-newline": [ - "error", - { allowAllPropertiesOnSameLine: true }, - ], - "semi-spacing": "error", "react/no-array-index-key": "warn", + indent: "off", + "@typescript-eslint/indent": "off", }, }; diff --git a/apps/web/actions/getProposals.ts b/apps/web/actions/getProposals.ts index 5a90a5d61..bcd54f0d5 100644 --- a/apps/web/actions/getProposals.ts +++ b/apps/web/actions/getProposals.ts @@ -45,17 +45,19 @@ export async function getProposals( const transformProposals = async function (_strategy: LightCVStrategy) { const proposalsData = await fetchIPFSDataBatch(_strategy.proposals); - const transformedProposals = proposalsData.map((data, index) => { - const p = _strategy.proposals[index]; - return { - ...p, - voterStakedPointsPct: 0, - stakedAmount: _strategy.proposals[index].stakedAmount, - title: data.title, - type: _strategy.config?.proposalType as number, - status: _strategy.proposals[index].proposalStatus, - }; - }).sort((a, b) => +a.proposalNumber - +b.proposalNumber); // Sort by proposal number ascending + const transformedProposals = proposalsData + .map((data, index) => { + const p = _strategy.proposals[index]; + return { + ...p, + voterStakedPointsPct: 0, + stakedAmount: _strategy.proposals[index].stakedAmount, + title: data.title, + type: _strategy.config?.proposalType as number, + status: _strategy.proposals[index].proposalStatus, + }; + }) + .sort((a, b) => +a.proposalNumber - +b.proposalNumber); // Sort by proposal number ascending return transformedProposals; }; diff --git a/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/[poolId]/[proposalId]/page.tsx b/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/[poolId]/[proposalId]/page.tsx index f4664cdef..cb0ed915d 100644 --- a/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/[poolId]/[proposalId]/page.tsx +++ b/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/[poolId]/[proposalId]/page.tsx @@ -244,14 +244,14 @@ export default function Page({ Proposal passed and executed successfully
- : ( - )} + } ); diff --git a/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/[poolId]/create-proposal/page.tsx b/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/[poolId]/create-proposal/page.tsx index a537f9dc8..879f866f4 100644 --- a/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/[poolId]/create-proposal/page.tsx +++ b/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/[poolId]/create-proposal/page.tsx @@ -45,8 +45,8 @@ export default function Page({ const tokenGarden = data.tokenGarden; const maxRatioDivPrecision = - (Number(strategyObj.config?.maxRatio) / CV_SCALE_PRECISION) * - MAX_RATIO_CONSTANT; + (Number(strategyObj.config?.maxRatio) / CV_SCALE_PRECISION) * + MAX_RATIO_CONSTANT; const spendingLimitPct = maxRatioDivPrecision * 100; const poolAmountSpendingLimit = poolAmount * maxRatioDivPrecision; @@ -60,7 +60,7 @@ export default function Page({

- Create a Proposal in Pool + Create a Proposal in Pool

{metadata.title}

diff --git a/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/[poolId]/page.tsx b/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/[poolId]/page.tsx index 8d24091d0..d5e85473e 100644 --- a/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/[poolId]/page.tsx +++ b/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/[poolId]/page.tsx @@ -66,7 +66,7 @@ export default function Page({ }, [error]); const [ipfsResult, setIpfsResult] = - useState>>(); + useState>>(); const metadata = data?.cvstrategies?.[0]?.metadata; @@ -93,7 +93,11 @@ export default function Page({ useEffect(() => { const newProposalId = searchParams[QUERY_PARAMS.poolPage.newPropsoal]; - if (newProposalId && data && !strategyObj?.proposals.some(c => c.proposalNumber === newProposalId)) { + if ( + newProposalId && + data && + !strategyObj?.proposals.some((c) => c.proposalNumber === newProposalId) + ) { refetch(); } }, [searchParams, strategyObj?.proposals]); @@ -121,7 +125,7 @@ export default function Page({ const isEnabled = data.cvstrategies?.[0]?.isEnabled as boolean; const spendingLimitPct = - (Number(strategyObj?.config?.maxRatio || 0) / CV_SCALE_PRECISION) * 100; + (Number(strategyObj?.config?.maxRatio || 0) / CV_SCALE_PRECISION) * 100; return (
@@ -135,18 +139,12 @@ export default function Page({

{ipfsResult.description}

- } - > + }> {poolTypes[proposalType] === "funding" && ( - } - > + }> } /> - } - /> + } />
- {!isEnabled ? ( + {!isEnabled ?
Waiting for council approval
- ) : ( - pool image - )} + }
{isEnabled && ( diff --git a/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/create-pool/page.tsx b/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/create-pool/page.tsx index acef00e4e..f8bfced16 100644 --- a/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/create-pool/page.tsx +++ b/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/create-pool/page.tsx @@ -24,25 +24,23 @@ export default function Page({ let alloAddr = result?.allos[0]?.id as Address; let communityName = result?.registryCommunity?.communityName as string; - return result ? ( -
-
-
-

- Create a Pool in {communityName} community -

-
- -
-
- ) : ( -
- -
- ); + return result ? +
+
+
+

+ Create a Pool in {communityName} community +

+
+ +
+
+ :
+ +
; } diff --git a/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/page.tsx b/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/page.tsx index 51f487721..3c6018884 100644 --- a/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/page.tsx +++ b/apps/web/app/(app)/gardens/[chain]/[garden]/[community]/page.tsx @@ -100,23 +100,23 @@ export default function Page({ } = result?.registryCommunity ?? {}; const communityStakedTokens = - members?.reduce( - (acc: bigint, member) => acc + BigInt(member?.stakedTokens), - 0n, - ) ?? 0; + members?.reduce( + (acc: bigint, member) => acc + BigInt(member?.stakedTokens), + 0n, + ) ?? 0; strategies = strategies ?? []; const signalingPools = strategies.filter( (strategy) => poolTypes[strategy.config?.proposalType] === "signaling" && - strategy.isEnabled, + strategy.isEnabled, ); const fundingPools = strategies.filter( (strategy) => poolTypes[strategy.config?.proposalType] === "funding" && - strategy.isEnabled, + strategy.isEnabled, ); const activePools = strategies?.filter((strategy) => strategy?.isEnabled); @@ -172,8 +172,8 @@ export default function Page({ } else { return ( BigInt(registerStakeAmount) + - BigInt(registerStakeAmount) / - (BigInt(SCALE_PRECISION) / BigInt(communityFee)) + BigInt(registerStakeAmount) / + (BigInt(SCALE_PRECISION) / BigInt(communityFee)) ); } } else { @@ -199,24 +199,15 @@ export default function Page({
- + } count={activePools.length ?? 0} /> - } - > + }> @@ -228,10 +219,7 @@ export default function Page({ data-tip={`Registration amount: ${parseToken(registrationAmount)} ${tokenGarden.symbol}\nCommunity fee: ${parseToken(parsedCommunityFee())} ${tokenGarden.symbol}`} > } > - Create Pool + Create Pool

- Funding pools ({fundingPools.length}) + Funding pools ({fundingPools.length})

{fundingPools.map((pool) => ( @@ -299,7 +287,7 @@ export default function Page({

- Signaling pools ({signalingPools.length}) + Signaling pools ({signalingPools.length})

{signalingPools.map((pool) => ( @@ -315,7 +303,7 @@ export default function Page({

- Pools in Review ({poolsInReview.length}) + Pools in Review ({poolsInReview.length})

{poolsInReview.map((pool) => ( @@ -332,15 +320,11 @@ export default function Page({

Covenant

- {covenantIpfsHash ? ( - covenant ? ( + {covenantIpfsHash ? + covenant ?

{covenant}

- ) : ( - - ) - ) : ( -

No covenant was submitted.

- )} + : + :

No covenant was submitted.

}
- {!isProd && tokenGarden && ( - - )} + {!isProd && tokenGarden && }
); } diff --git a/apps/web/app/(app)/gardens/[chain]/[garden]/page.tsx b/apps/web/app/(app)/gardens/[chain]/[garden]/page.tsx index cbe899f86..b024331eb 100644 --- a/apps/web/app/(app)/gardens/[chain]/[garden]/page.tsx +++ b/apps/web/app/(app)/gardens/[chain]/[garden]/page.tsx @@ -61,7 +61,8 @@ export default function Page({ result?.tokenGarden?.communities?.filter((com) => com.isValid) ?? []; useEffect(() => { - const newCommunityId = searchParams[QUERY_PARAMS.gardenPage.newCommunity]?.toLowerCase(); + const newCommunityId = + searchParams[QUERY_PARAMS.gardenPage.newCommunity]?.toLowerCase(); if ( newCommunityId && @@ -109,19 +110,15 @@ export default function Page({
-

{tokenGarden?.name}

{" "} - +

{tokenGarden?.name}

- Discover communities in the - - {" "} - {tokenGarden?.name} Garden - - , where you connect with people and support - proposals bounded by a shared + Discover communities in the + {tokenGarden?.name} Garden, + where you connect with people and support proposals bounded by a + shared covenant.

@@ -131,10 +128,7 @@ export default function Page({ icon={} count={communities?.length ?? 0} /> - +
@@ -143,7 +137,7 @@ export default function Page({

- Create your own community + Create your own community

@@ -157,7 +151,7 @@ export default function Page({ tooltip={tooltipMessage} icon={} > - Create a community + Create a community
- {!isProd && tokenGarden && ( - - )} + {!isProd && tokenGarden && }
); } diff --git a/apps/web/app/(app)/gardens/page.tsx b/apps/web/app/(app)/gardens/page.tsx index e84c3ba02..39e0e24ef 100644 --- a/apps/web/app/(app)/gardens/page.tsx +++ b/apps/web/app/(app)/gardens/page.tsx @@ -58,9 +58,7 @@ export default function Page() { ); } return ( -

- No Gardens -

+

No Gardens

); }, [fetching, tokenGardens?.length]); @@ -74,10 +72,10 @@ export default function Page() {

- Explore and Join Gardens Ecosystems + Explore and Join Gardens Ecosystems

- A place where you help shape digital economies + A place where you help shape digital economies

diff --git a/apps/web/app/api/ably-auth/route.ts b/apps/web/app/api/ably-auth/route.ts index 8e2a48663..6425b10a4 100644 --- a/apps/web/app/api/ably-auth/route.ts +++ b/apps/web/app/api/ably-auth/route.ts @@ -19,15 +19,10 @@ export async function POST() { try { const tokenRequestData = { capability: JSON.stringify({ - [CHANGE_EVENT_CHANNEL_NAME]: [ - "publish", - "subscribe", - "presence", - ], + [CHANGE_EVENT_CHANNEL_NAME]: ["publish", "subscribe", "presence"], }), }; - const tokenDetails = - await ably.auth.createTokenRequest(tokenRequestData); + const tokenDetails = await ably.auth.createTokenRequest(tokenRequestData); return NextResponse.json(tokenDetails); } catch (error) { console.error(error); diff --git a/apps/web/components/ActivatePoints.tsx b/apps/web/components/ActivatePoints.tsx index 93a56d75a..c046f167a 100644 --- a/apps/web/components/ActivatePoints.tsx +++ b/apps/web/components/ActivatePoints.tsx @@ -30,48 +30,44 @@ export function ActivatePoints({ const chainId = useChainIdFromPath(); const { publish } = usePubSubContext(); - const { - write: writeActivatePoints, - error: errorActivatePoints, - } = useContractWriteWithConfirmations({ - chainId, - address: strategyAddress, - contractName: "CV Strategy", - abi: abiWithErrors(cvStrategyABI), - functionName: "activatePoints", - fallbackErrorMessage: "Error activating points. Please try again.", - onConfirmations: () => { - publish({ - topic: "member", - id: connectedAccount, - type: "update", - function: "activatePoints", - containerId: communityAddress, - chainId, - }); - }, - }); + const { write: writeActivatePoints, error: errorActivatePoints } = + useContractWriteWithConfirmations({ + chainId, + address: strategyAddress, + contractName: "CV Strategy", + abi: abiWithErrors(cvStrategyABI), + functionName: "activatePoints", + fallbackErrorMessage: "Error activating points. Please try again.", + onConfirmations: () => { + publish({ + topic: "member", + id: connectedAccount, + type: "update", + function: "activatePoints", + containerId: communityAddress, + chainId, + }); + }, + }); - const { - write: writeDeactivatePoints, - error: errorDeactivatePoints, - } = useContractWriteWithConfirmations({ - address: strategyAddress, - abi: abiWithErrors(cvStrategyABI), - contractName: "CV Strategy", - functionName: "deactivatePoints", - fallbackErrorMessage: "Error deactivating points. Please try again.", - onConfirmations: () => { - publish({ - topic: "member", - id: connectedAccount, - containerId: communityAddress, - type: "update", - function: "deactivatePoints", - chainId, - }); - }, - }); + const { write: writeDeactivatePoints, error: errorDeactivatePoints } = + useContractWriteWithConfirmations({ + address: strategyAddress, + abi: abiWithErrors(cvStrategyABI), + contractName: "CV Strategy", + functionName: "deactivatePoints", + fallbackErrorMessage: "Error deactivating points. Please try again.", + onConfirmations: () => { + publish({ + topic: "member", + id: connectedAccount, + containerId: communityAddress, + type: "update", + function: "deactivatePoints", + chainId, + }); + }, + }); useErrorDetails(errorActivatePoints, "activatePoints"); useErrorDetails(errorDeactivatePoints, "deactivatePoints"); diff --git a/apps/web/components/Badge.tsx b/apps/web/components/Badge.tsx index 6338ca56b..3c97d8f8f 100644 --- a/apps/web/components/Badge.tsx +++ b/apps/web/components/Badge.tsx @@ -46,15 +46,15 @@ export function Badge({ // Determine the appropriate styles based on whether it's a proposal status badge or a pool type badge const styles = isStatusBadge ? `${PROPOSAL_STATUS_STYLES[status] ?? "bg-secondary-soft"}` - : ispoolTypeDefined ? - `${POOL_TYPE_STYLES[type] ?? "bg-tertiary-soft text-tertiary-content"}` - : "bg-tertiary-soft text-tertiary-content"; + : ispoolTypeDefined ? + `${POOL_TYPE_STYLES[type] ?? "bg-tertiary-soft text-tertiary-content"}` + : "bg-tertiary-soft text-tertiary-content"; // Determine the label content const content = isStatusBadge ? proposalStatus[status] - : ispoolTypeDefined ? poolTypes[type] ?? label - : label; + : ispoolTypeDefined ? poolTypes[type] ?? label + : label; //For type => conditionally set the icon based on type === poolTypes[type] const iconIncluded = diff --git a/apps/web/components/Breadcrumbs.tsx b/apps/web/components/Breadcrumbs.tsx index e2184ec16..fda199a4b 100644 --- a/apps/web/components/Breadcrumbs.tsx +++ b/apps/web/components/Breadcrumbs.tsx @@ -74,7 +74,7 @@ export function Breadcrumbs() { {label} - : diff --git a/apps/web/components/Button.tsx b/apps/web/components/Button.tsx index 6436014b5..95c446240 100644 --- a/apps/web/components/Button.tsx +++ b/apps/web/components/Button.tsx @@ -5,10 +5,10 @@ import { Size } from "@/types"; type ButtonProps = { type?: - | "button" - | "submit" - | "reset" - | React.ButtonHTMLAttributes["type"]; + | "button" + | "submit" + | "reset" + | React.ButtonHTMLAttributes["type"]; btnStyle?: BtnStyle; color?: Color; onClick?: React.DOMAttributes["onClick"]; @@ -83,8 +83,8 @@ export function Button({ ); return disabled ? -
- {buttonElement} -
+
+ {buttonElement} +
: buttonElement; } diff --git a/apps/web/components/Charts/ChartWrapper.tsx b/apps/web/components/Charts/ChartWrapper.tsx index 61d966370..c92c13521 100644 --- a/apps/web/components/Charts/ChartWrapper.tsx +++ b/apps/web/components/Charts/ChartWrapper.tsx @@ -54,7 +54,7 @@ export const ChartWrapper = ({
- :
} + :
}

{item.name}

@@ -72,7 +72,7 @@ export const ChartWrapper = ({ {growing ? - : }{" "} + : }{" "}

diff --git a/apps/web/components/Charts/ConvictionBarChart.tsx b/apps/web/components/Charts/ConvictionBarChart.tsx index a200fc7d5..bbd941915 100644 --- a/apps/web/components/Charts/ConvictionBarChart.tsx +++ b/apps/web/components/Charts/ConvictionBarChart.tsx @@ -163,7 +163,7 @@ export const ConvictionBarChart = ({ message: proposalSupportPct == 0 ? "Proposal waiting for support" - : "Scenario not found", + : "Scenario not found", growing: null, }; @@ -191,7 +191,7 @@ export const ConvictionBarChart = ({ const markLineTh: MarkLineComponentOption = isSignalingType || compact ? {} - : { + : { ...markLine, data: [ { @@ -268,8 +268,8 @@ export const ConvictionBarChart = ({ }, z: supportGtConv ? 1 - : convEqSupport ? 1 - : 2, + : convEqSupport ? 1 + : 2, barWidth: 23, data: [proposalSupportPct], }, @@ -294,7 +294,7 @@ export const ConvictionBarChart = ({ }, isSignalingType ? {} - : { + : { type: "bar", name: "Threshold", barWidth: 23, @@ -319,7 +319,7 @@ export const ConvictionBarChart = ({ option={option} style={{ height: "100%", width: "100%" }} /> - : + {`${name} - {"Chain

@@ -110,7 +115,7 @@ export function ConnectWallet() {

{chain.name} - : + : Network mismatch } @@ -149,7 +154,7 @@ export function ConnectWallet() { {" "} {!tokenUrlAddress ? "Unknow garden" - : Number(token?.formatted).toFixed(0)}{" "} + : Number(token?.formatted).toFixed(0)}{" "} {token?.symbol === "ETH" ? "" : token?.symbol}
@@ -160,15 +165,15 @@ export function ConnectWallet() { {chain.id !== urlChainId && urlChainId && !isNaN(urlChainId) && ( - - )} + + )} } + : }
); -}; \ No newline at end of file +}; diff --git a/apps/web/components/Forms/FormInput.tsx b/apps/web/components/Forms/FormInput.tsx index e5f4590ed..a0de8c599 100644 --- a/apps/web/components/Forms/FormInput.tsx +++ b/apps/web/components/Forms/FormInput.tsx @@ -70,7 +70,7 @@ export function FormInput({ })} {...otherProps} /> - :