UNPKG

@river-build/generated

Version:

## How to generate contract types

1,506 lines (1,504 loc) 60.5 kB
/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; import type { PromiseOrValue } from "../common"; import type { MembershipFacet, MembershipFacetInterface, } from "../MembershipFacet"; const _abi = [ { type: "function", name: "expiresAt", inputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "getMembershipCurrency", inputs: [], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "getMembershipDuration", inputs: [], outputs: [ { name: "", type: "uint64", internalType: "uint64", }, ], stateMutability: "view", }, { type: "function", name: "getMembershipFreeAllocation", inputs: [], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "getMembershipImage", inputs: [], outputs: [ { name: "", type: "string", internalType: "string", }, ], stateMutability: "view", }, { type: "function", name: "getMembershipLimit", inputs: [], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "getMembershipPrice", inputs: [], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "getMembershipPricingModule", inputs: [], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "getMembershipRenewalPrice", inputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "getProtocolFee", inputs: [], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "getSpaceFactory", inputs: [], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "joinSpace", inputs: [ { name: "receiver", type: "address", internalType: "address", }, ], outputs: [], stateMutability: "payable", }, { type: "function", name: "joinSpaceWithReferral", inputs: [ { name: "receiver", type: "address", internalType: "address", }, { name: "referral", type: "tuple", internalType: "struct IMembershipBase.ReferralTypes", components: [ { name: "partner", type: "address", internalType: "address", }, { name: "userReferral", type: "address", internalType: "address", }, { name: "referralCode", type: "string", internalType: "string", }, ], }, ], outputs: [], stateMutability: "payable", }, { type: "function", name: "renewMembership", inputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], outputs: [], stateMutability: "payable", }, { type: "function", name: "revenue", inputs: [], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "setMembershipFreeAllocation", inputs: [ { name: "newAllocation", type: "uint256", internalType: "uint256", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "setMembershipImage", inputs: [ { name: "newImage", type: "string", internalType: "string", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "setMembershipLimit", inputs: [ { name: "newLimit", type: "uint256", internalType: "uint256", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "setMembershipPrice", inputs: [ { name: "newPrice", type: "uint256", internalType: "uint256", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "setMembershipPricingModule", inputs: [ { name: "pricingModule", type: "address", internalType: "address", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "withdraw", inputs: [ { name: "account", type: "address", internalType: "address", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "event", name: "Approval", inputs: [ { name: "owner", type: "address", indexed: true, internalType: "address", }, { name: "approved", type: "address", indexed: true, internalType: "address", }, { name: "tokenId", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "ApprovalForAll", inputs: [ { name: "owner", type: "address", indexed: true, internalType: "address", }, { name: "operator", type: "address", indexed: true, internalType: "address", }, { name: "approved", type: "bool", indexed: false, internalType: "bool", }, ], anonymous: false, }, { type: "event", name: "Banned", inputs: [ { name: "moderator", type: "address", indexed: true, internalType: "address", }, { name: "tokenId", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "ConsecutiveTransfer", inputs: [ { name: "fromTokenId", type: "uint256", indexed: true, internalType: "uint256", }, { name: "toTokenId", type: "uint256", indexed: false, internalType: "uint256", }, { name: "from", type: "address", indexed: true, internalType: "address", }, { name: "to", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "DefaultBpsFeeUpdated", inputs: [ { name: "defaultBpsFee", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "EntitlementCheckResultPosted", inputs: [ { name: "transactionId", type: "bytes32", indexed: true, internalType: "bytes32", }, { name: "result", type: "uint8", indexed: false, internalType: "enum IEntitlementGatedBase.NodeVoteStatus", }, ], anonymous: false, }, { type: "event", name: "Initialized", inputs: [ { name: "version", type: "uint32", indexed: false, internalType: "uint32", }, ], anonymous: false, }, { type: "event", name: "InterfaceAdded", inputs: [ { name: "interfaceId", type: "bytes4", indexed: true, internalType: "bytes4", }, ], anonymous: false, }, { type: "event", name: "InterfaceRemoved", inputs: [ { name: "interfaceId", type: "bytes4", indexed: true, internalType: "bytes4", }, ], anonymous: false, }, { type: "event", name: "MaxBpsFeeUpdated", inputs: [ { name: "maxBpsFee", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "MaxPartnerFeeSet", inputs: [ { name: "fee", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "MembershipCurrencyUpdated", inputs: [ { name: "currency", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "MembershipFeeRecipientUpdated", inputs: [ { name: "recipient", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "MembershipFreeAllocationUpdated", inputs: [ { name: "allocation", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "MembershipLimitUpdated", inputs: [ { name: "limit", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "MembershipPriceUpdated", inputs: [ { name: "price", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "MembershipTokenIssued", inputs: [ { name: "recipient", type: "address", indexed: true, internalType: "address", }, { name: "tokenId", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "MembershipTokenRejected", inputs: [ { name: "recipient", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "MembershipWithdrawal", inputs: [ { name: "recipient", type: "address", indexed: true, internalType: "address", }, { name: "amount", type: "uint256", indexed: false, internalType: "uint256", }, ], 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: "PartnerRegistered", inputs: [ { name: "account", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "PartnerRemoved", inputs: [ { name: "account", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "PartnerUpdated", inputs: [ { name: "account", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "Paused", inputs: [ { name: "account", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "PermissionsAddedToChannelRole", inputs: [ { name: "updater", type: "address", indexed: true, internalType: "address", }, { name: "roleId", type: "uint256", indexed: true, internalType: "uint256", }, { name: "channelId", type: "bytes32", indexed: true, internalType: "bytes32", }, ], anonymous: false, }, { type: "event", name: "PermissionsRemovedFromChannelRole", inputs: [ { name: "updater", type: "address", indexed: true, internalType: "address", }, { name: "roleId", type: "uint256", indexed: true, internalType: "uint256", }, { name: "channelId", type: "bytes32", indexed: true, internalType: "bytes32", }, ], anonymous: false, }, { type: "event", name: "PermissionsUpdatedForChannelRole", inputs: [ { name: "updater", type: "address", indexed: true, internalType: "address", }, { name: "roleId", type: "uint256", indexed: true, internalType: "uint256", }, { name: "channelId", type: "bytes32", indexed: true, internalType: "bytes32", }, ], anonymous: false, }, { type: "event", name: "Prepay__Prepaid", inputs: [ { name: "supply", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "ReferralRegistered", inputs: [ { name: "referralCode", type: "bytes32", indexed: false, internalType: "bytes32", }, { name: "basisPoints", type: "uint256", indexed: false, internalType: "uint256", }, { name: "recipient", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "ReferralRemoved", inputs: [ { name: "referralCode", type: "bytes32", indexed: false, internalType: "bytes32", }, ], anonymous: false, }, { type: "event", name: "ReferralUpdated", inputs: [ { name: "referralCode", type: "bytes32", indexed: false, internalType: "bytes32", }, { name: "basisPoints", type: "uint256", indexed: false, internalType: "uint256", }, { name: "recipient", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "RegistryFeeSet", inputs: [ { name: "fee", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "RoleCreated", inputs: [ { name: "creator", type: "address", indexed: true, internalType: "address", }, { name: "roleId", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "RoleRemoved", inputs: [ { name: "remover", type: "address", indexed: true, internalType: "address", }, { name: "roleId", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "RoleUpdated", inputs: [ { name: "updater", type: "address", indexed: true, internalType: "address", }, { name: "roleId", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "SubscriptionUpdate", inputs: [ { name: "tokenId", type: "uint256", indexed: true, internalType: "uint256", }, { name: "expiration", type: "uint64", indexed: false, internalType: "uint64", }, ], anonymous: false, }, { type: "event", name: "Transfer", inputs: [ { name: "from", type: "address", indexed: true, internalType: "address", }, { name: "to", type: "address", indexed: true, internalType: "address", }, { name: "tokenId", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "Unbanned", inputs: [ { name: "moderator", type: "address", indexed: true, internalType: "address", }, { name: "tokenId", type: "uint256", indexed: true, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "Unpaused", inputs: [ { name: "account", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "error", name: "ApprovalCallerNotOwnerNorApproved", inputs: [], }, { type: "error", name: "ApprovalQueryForNonexistentToken", inputs: [], }, { type: "error", name: "BalanceQueryForZeroAddress", inputs: [], }, { type: "error", name: "Banning__AlreadyBanned", inputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], }, { type: "error", name: "Banning__CannotBanOwner", inputs: [], }, { type: "error", name: "Banning__CannotBanSelf", inputs: [], }, { type: "error", name: "Banning__InvalidTokenId", inputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], }, { type: "error", name: "Banning__NotBanned", inputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], }, { type: "error", name: "Dispatcher__TransactionAlreadyExists", inputs: [], }, { type: "error", name: "ERC5643__DurationZero", inputs: [], }, { type: "error", name: "ERC5643__InvalidTokenId", inputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], }, { type: "error", name: "ERC5643__NotApprovedOrOwner", inputs: [], }, { type: "error", name: "ERC5643__SubscriptionNotRenewable", inputs: [ { name: "tokenId", type: "uint256", internalType: "uint256", }, ], }, { type: "error", name: "EntitlementGated_InvalidAddress", inputs: [], }, { type: "error", name: "EntitlementGated_InvalidEntitlement", inputs: [], }, { type: "error", name: "EntitlementGated_NodeAlreadyVoted", inputs: [], }, { type: "error", name: "EntitlementGated_NodeNotFound", inputs: [], }, { type: "error", name: "EntitlementGated_OnlyEntitlementChecker", inputs: [], }, { type: "error", name: "EntitlementGated_RequestIdNotFound", inputs: [], }, { type: "error", name: "EntitlementGated_TransactionCheckAlreadyCompleted", inputs: [], }, { type: "error", name: "EntitlementGated_TransactionCheckAlreadyRegistered", inputs: [], }, { type: "error", name: "EntitlementGated_TransactionNotRegistered", inputs: [], }, { type: "error", name: "Entitlement__InvalidValue", inputs: [], }, { type: "error", name: "Entitlement__NotAllowed", inputs: [], }, { type: "error", name: "Entitlement__NotMember", inputs: [], }, { type: "error", name: "Entitlement__ValueAlreadyExists", inputs: [], }, { type: "error", name: "Initializable_InInitializingState", inputs: [], }, { type: "error", name: "Introspection_AlreadySupported", inputs: [], }, { type: "error", name: "Introspection_NotSupported", inputs: [], }, { type: "error", name: "Membership__AlreadyMember", inputs: [], }, { type: "error", name: "Membership__Banned", inputs: [], }, { type: "error", name: "Membership__InsufficientAllowance", inputs: [], }, { type: "error", name: "Membership__InsufficientPayment", inputs: [], }, { type: "error", name: "Membership__InvalidAddress", inputs: [], }, { type: "error", name: "Membership__InvalidCurrency", inputs: [], }, { type: "error", name: "Membership__InvalidDuration", inputs: [], }, { type: "error", name: "Membership__InvalidFeeRecipient", inputs: [], }, { type: "error", name: "Membership__InvalidFreeAllocation", inputs: [], }, { type: "error", name: "Membership__InvalidLimit", inputs: [], }, { type: "error", name: "Membership__InvalidMaxSupply", inputs: [], }, { type: "error", name: "Membership__InvalidPayment", inputs: [], }, { type: "error", name: "Membership__InvalidPrice", inputs: [], }, { type: "error", name: "Membership__InvalidPricingModule", inputs: [], }, { type: "error", name: "Membership__InvalidTokenId", inputs: [], }, { type: "error", name: "Membership__InvalidTransactionType", inputs: [], }, { type: "error", name: "Membership__MaxSupplyReached", inputs: [], }, { type: "error", name: "Membership__NotExpired", inputs: [], }, { type: "error", name: "Membership__PriceTooLow", inputs: [], }, { type: "error", name: "MintERC2309QuantityExceedsLimit", inputs: [], }, { type: "error", name: "MintToZeroAddress", inputs: [], }, { type: "error", name: "MintZeroQuantity", inputs: [], }, { type: "error", name: "Ownable__NotOwner", inputs: [ { name: "account", type: "address", internalType: "address", }, ], }, { type: "error", name: "Ownable__ZeroAddress", inputs: [], }, { type: "error", name: "OwnerQueryForNonexistentToken", inputs: [], }, { type: "error", name: "OwnershipNotInitializedForExtraData", inputs: [], }, { type: "error", name: "PartnerRegistry__InvalidPartnerFee", inputs: [ { name: "fee", type: "uint256", internalType: "uint256", }, ], }, { type: "error", name: "PartnerRegistry__InvalidRecipient", inputs: [], }, { type: "error", name: "PartnerRegistry__NotPartnerAccount", inputs: [ { name: "account", type: "address", internalType: "address", }, ], }, { type: "error", name: "PartnerRegistry__PartnerAlreadyRegistered", inputs: [ { name: "account", type: "address", internalType: "address", }, ], }, { type: "error", name: "PartnerRegistry__PartnerNotActive", inputs: [ { name: "account", type: "address", internalType: "address", }, ], }, { type: "error", name: "PartnerRegistry__PartnerNotRegistered", inputs: [ { name: "account", type: "address", internalType: "address", }, ], }, { type: "error", name: "PartnerRegistry__RegistryFeeNotPaid", inputs: [ { name: "fee", type: "uint256", internalType: "uint256", }, ], }, { type: "error", name: "Pausable__NotPaused", inputs: [], }, { type: "error", name: "Pausable__Paused", inputs: [], }, { type: "error", name: "Prepay__InvalidAddress", inputs: [], }, { type: "error", name: "Prepay__InvalidAmount", inputs: [], }, { type: "error", name: "Prepay__InvalidMembership", inputs: [], }, { type: "error", name: "Prepay__InvalidSupplyAmount", inputs: [], }, { type: "error", name: "Reentrancy", inputs: [], }, { type: "error", name: "Referrals__InvalidBasisPoints", inputs: [], }, { type: "error", name: "Referrals__InvalidBpsFee", inputs: [], }, { type: "error", name: "Referrals__InvalidRecipient", inputs: [], }, { type: "error", name: "Referrals__InvalidReferralCode", inputs: [], }, { type: "error", name: "Referrals__ReferralAlreadyExists", inputs: [], }, { type: "error", name: "Roles__EntitlementAlreadyExists", inputs: [], }, { type: "error", name: "Roles__EntitlementDoesNotExist", inputs: [], }, { type: "error", name: "Roles__InvalidEntitlementAddress", inputs: [], }, { type: "error", name: "Roles__InvalidPermission", inputs: [], }, { type: "error", name: "Roles__PermissionAlreadyExists", inputs: [], }, { type: "error", name: "Roles__PermissionDoesNotExist", inputs: [], }, { type: "error", name: "Roles__RoleDoesNotExist", inputs: [], }, { type: "error", name: "TransferCallerNotOwnerNorApproved", inputs: [], }, { type: "error", name: "TransferFromIncorrectOwner", inputs: [], }, { type: "error", name: "TransferToNonERC721ReceiverImplementer", inputs: [], }, { type: "error", name: "TransferToZeroAddress", inputs: [], }, { type: "error", name: "URIQueryForNonexistentToken", inputs: [], }, ] as const; const _bytecode = "0x60806040523480156200001157600080fd5b506200001c62000022565b620000ca565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156200006f576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff9081161015620000c757805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b613d8580620000da6000396000f3fe60806040526004361061012a5760003560e01c8063706b8e09116100ab57806393b13cb71161006f57806393b13cb71461031e57806395d600c81461034057806397fb7c1e14610355578063a5a4103114610375578063df9a9fe61461038a578063e847abdd146103aa57600080fd5b8063706b8e09146102a157806379dda585146102b65780637c9669ac146102cb5780638120f0ba146102de5780638c625b061461030b57600080fd5b80635803909f116100f25780635803909f146102015780635becd24a14610221578063657e45e814610241578063686f76841461026e57806369d5f38a1461028157600080fd5b80630ef1be5f1461012f5780631278076a1461015157806317c95709146101795780633e9491a2146101ce57806351cff8d9146101e1575b600080fd5b34801561013b57600080fd5b5061014f61014a36600461333c565b6103bf565b005b34801561015d57600080fd5b50610166610442565b6040519081526020015b60405180910390f35b34801561018557600080fd5b506101666101943660046133ad565b60009081527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce0060205260409020546001600160401b031690565b3480156101da57600080fd5b5047610166565b3480156101ed57600080fd5b5061014f6101fc3660046133db565b610459565b34801561020d57600080fd5b5061016661021c3660046133ad565b61051a565b34801561022d57600080fd5b5061014f61023c3660046133ad565b610533565b34801561024d57600080fd5b506102566105bd565b6040516001600160a01b039091168152602001610170565b61014f61027c36600461348d565b6105c7565b34801561028d57600080fd5b5061014f61029c3660046133ad565b61060c565b3480156102ad57600080fd5b506101666106ba565b3480156102c257600080fd5b506102566106c4565b61014f6102d93660046133ad565b6106ce565b3480156102ea57600080fd5b506102f36107f5565b6040516001600160401b039091168152602001610170565b61014f6103193660046133db565b6107ff565b34801561032a57600080fd5b50610333610842565b60405161017091906135c7565b34801561034c57600080fd5b5061016661084c565b34801561036157600080fd5b5061014f6103703660046133ad565b610864565b34801561038157600080fd5b506101666108c9565b34801561039657600080fd5b5061014f6103a53660046133db565b6108de565b3480156103b657600080fd5b5061025661095f565b6103c7610969565b6001600160a01b0316336001600160a01b0316146103ff576040516365f4906560e01b81523360048201526024015b60405180910390fd5b61043e82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0692505050565b5050565b600061045461044f610a31565b610a67565b905090565b610461610969565b6001600160a01b0316336001600160a01b031614610494576040516365f4906560e01b81523360048201526024016103f6565b3068929eee149b4bd2126854036104b35763ab143c066000526004601cfd5b3068929eee149b4bd21268556001600160a01b0381166104dd576104dd635fbd571760e01b610bdd565b4760008190036104f7576104f7635894b54560e11b610bdd565b61050a610502610be7565b308484610c15565b503868929eee149b4bd212685550565b600061052d82610528610a31565b610c61565b92915050565b61053b610969565b6001600160a01b0316336001600160a01b03161461056e576040516365f4906560e01b81523360048201526024016103f6565b6000610586600080516020613d458339815191525490565b9050801580159061059657508082115b156105ab576105ab63c3983b9160e01b610bdd565b6105b482610cb7565b61043e82610d37565b6000610454610be7565b3068929eee149b4bd2126854036105e65763ab143c066000526004601cfd5b3068929eee149b4bd21268556105fc8282610dc6565b3868929eee149b4bd21268555050565b610614610969565b6001600160a01b0316336001600160a01b031614610647576040516365f4906560e01b81523360048201526024016103f6565b61065081610e91565b610658610f16565b6001600160a01b03166391b7f5ed826040518263ffffffff1660e01b815260040161068591815260200190565b600060405180830381600087803b15801561069f57600080fd5b505af11580156106b3573d6000803e3d6000fd5b5050505050565b6000610454610f44565b6000610454610ff3565b3068929eee149b4bd2126854036106ed5763ab143c066000526004601cfd5b3068929eee149b4bd2126855600061070482611021565b90506001600160a01b03811661072457610724635fbd571760e01b610bdd565b60008281527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce0060205260409020546001600160401b031661076361102c565b6001600160401b031661077642836135f0565b1061078b5761078b63dce9a1d360e01b610bdd565b600061079984610528610a31565b905080156107d25760006107ad8483611097565b905060006107bb82846135f0565b905080156107cf576107cd858261111f565b505b50505b6107e3846107de61102c565b611208565b5050503868929eee149b4bd212685550565b600061045461102c565b3068929eee149b4bd21268540361081e5763ab143c066000526004601cfd5b3068929eee149b4bd2126855610833816112d1565b3868929eee149b4bd212685550565b6060610454611379565b6000610454600080516020613d458339815191525490565b61086c610969565b6001600160a01b0316336001600160a01b03161461089f576040516365f4906560e01b81523360048201526024016103f6565b6108b0816108ab610a31565b61141b565b6108c681600080516020613d4583398151915255565b50565b60006104546108d961044f610a31565b611433565b6108e6610969565b6001600160a01b0316336001600160a01b031614610919576040516365f4906560e01b81523360048201526024016103f6565b61092281611587565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60880546001600160a01b0319166001600160a01b03831617905550565b6000610454610f16565b6000807fd2f24d4f172e4e84e48e7c4125b6e904c29e5eba33ad4938fee51dd5dbd4b600805460018201546040516331a9108f60e11b815260048101919091529192506001600160a01b031690636352211e90602401602060405180830381865afa1580156109dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a009190613603565b91505090565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60c61043e828261369c565b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0154600080516020613d05833981519152540390565b600080610a72610f44565b9050610a7c610f16565b604051635cf4ee9160e01b815260048101839052602481018590526001600160a01b039190911690635cf4ee9190604401602060405180830381865afa158015610aca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aee919061375b565b91506000610afa6106c4565b90506000816001600160a01b0316631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b60919061375b565b905080841015610bd557816001600160a01b0316630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcc919061375b565b95945050505050565b505050919050565b8060005260046000fd5b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb604546001600160a01b031690565b8015610c5b5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03851601610c4f57610c4a828261162d565b610c5b565b610c5b84848484611640565b50505050565b60008281527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6096020526040812054600080516020613d65833981519152908015610cae57915061052d9050565b610bcc84610a67565b610cbf6106c4565b6001600160a01b0316632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d20919061375b565b8111156108c6576108c663c3983b9160e01b610bdd565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6078190557fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d805460ff19166001179055604051600080516020613d658339815191529082907fab14a23e88fb272313490d4f20d63098e64fd38304c0e07a377db98c2b39b92f90600090a25050565b610dcf82611693565b6000610dd96116f6565b90508015610de957610de9611751565b610df38383611785565b600082604051602001610e069190613774565b60408051601f198184030181529190529050631a1bdda160e21b6000610e3786610e32843383886117dd565b61180f565b9050600080610e47883385611913565b9150915080610e87578115610e7d578515610e6557610e6583611b34565b610e6f8389611c34565b610e7888611c82565b610e87565b610e878389611d1f565b5050505050505050565b6000610e9b6106c4565b6001600160a01b0316630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc919061375b565b90508082101561043e5761043e631a23d64760e11b610bdd565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb608546001600160a01b031690565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d54600090600080516020613d658339815191529060ff1615610f8a5760070154919050565b610f926106c4565b6001600160a01b0316632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a00919061375b565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb606546001600160a01b031690565b600061052d82611d7a565b60006110366106c4565b6001600160a01b0316638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045491906137af565b60006110a282611433565b905061052d6110af610be7565b846110b86106c4565b6001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111199190613603565b84610c15565b6000600080516020613d6583398151915281611139610be7565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03821601611184578382600a01600082825461117491906137d8565b9091555084935061052d92505050565b60006111996001600160a01b03831630611e33565b90506111a782873088610c15565b60006111bc6001600160a01b03841630611e33565b905060006111ca83836135f0565b90508681146111e3576111e3635894b54560e11b610bdd565b8085600a0160008282546111f791906137d8565b909155509098975050505050505050565b60008281527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce006020819052604082205490916001600160401b039091169081810361125e5761125784426137eb565b905061126b565b61126884836137eb565b90505b60008581526020848152604091829020805467ffffffffffffffff19166001600160401b038516908117909155915191825286917f2ec2be2c4b90c2cf13ecb6751a24daed6bb741ae5ed3f7371aabf9402f6d62e8910160405180910390a25050505050565b6112da81611693565b60006112e46116f6565b905080156112f4576112f4611751565b6000638c625b0660e01b9050600061132184610e32843388604051806020016040528060008152506117dd565b9050600080611331863385611913565b915091508061137157811561136757841561134f5761134f83611e5f565b6113598387611c34565b61136286611c82565b611371565b6113718387611d1f565b505050505050565b6060600080516020613d65833981519152600c01805461139890613620565b80601f01602080910402602001604051908101604052809291908181526020018280546113c490613620565b80156114115780601f106113e657610100808354040283529160200191611411565b820191906000526020600020905b8154815290600101906020018083116113f457829003601f168201915b5050505050905090565b8082101561043e5761043e636664d51760e11b610bdd565b60008061143e6106c4565b90506000816001600160a01b0316631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a4919061375b565b90508084101561151857816001600160a01b0316630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611510919061375b565b949350505050565b61151084836001600160a01b0316639f6542aa6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561155a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157e919061380b565b61ffff16611ef6565b6001600160a01b0381166115a5576115a5630e88bf4b60e01b610bdd565b6115ad610ff3565b6040516346fc05eb60e11b81526001600160a01b0383811660048301529190911690638df80bd690602401602060405180830381865afa1580156115f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116199190613844565b6108c6576108c6630e88bf4b60e01b610bdd565b61043e6001600160a01b03831682611f72565b816001600160a01b0316836001600160a01b03160315610c5b57306001600160a01b0384160361167e57610c4a6001600160a01b0385168383611f8e565b610c5b6001600160a01b038516848484611fde565b6001600160a01b0381166116b1576116b1635fbd571760e01b610bdd565b60006116c9600080516020613d458339815191525490565b905080158015906116e15750806116de610a31565b10155b1561043e5761043e637efcdb4960e01b610bdd565b600080611701610a31565b9050600061170d610f44565b9050600061171961203c565b90508282111561172d576000935050505090565b80156117475761173d6001612066565b6000935050505090565b6001935050505090565b600061175e61044f610a31565b9050600061176b826120a4565b90508034101561043e5761043e635894b54560e11b610bdd565b60208101516001600160a01b03161561043e57816001600160a01b031681602001516001600160a01b031614806117c8575060208101516001600160a01b031633145b1561043e5761043e635fbd571760e01b610bdd565b6060848484846040516020016117f6949392919061385f565b6040516020818303038152906040529050949350505050565b6040516bffffffffffffffffffffffff19606084901b16602082015243603482015260009081906054016040516020818303038152906040528051906020012090506118cf816118a38387611863866120d8565b604080516020808201959095526001600160a01b039390931683820152606080840192909252805180840390920182526080909201909152805191012090565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b915060006118dc8361210d565b5111156118f3576118f363f82e65c360e01b610bdd565b6118fd82846121de565b341561190c5761190c82612225565b5092915050565b6000806000611942604051806040016040528060098152602001684a6f696e537061636560b81b815250612272565b9050600061194f87612414565b825190915060005b81811015611b27576000848281518110611973576119736138a5565b6020026020010151905080604001511561198d5750611b1f565b60005b816080015151811015611b1c576000826080015182815181106119b5576119b56138a5565b60200260200101519050806001600160a01b0316630cf0b5336000801b88604051806040016040528060098152602001684a6f696e537061636560b81b815250604051602001611a0591906138bb565b604051602081830303815290604052611a1d906138d7565b6040518463ffffffff1660e01b8152600401611a3b939291906138fb565b602060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7c9190613844565b15611a9657506001975060009650611b2c95505050505050565b806001600160a01b0316632e1b61e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af89190613844565b15611b1357611b0e8c8c8c84876000015161267e565b600197505b50600101611990565b50505b600101611957565b505050505b935093915050565b6000611b4161044f610a31565b90506000611b4e826120a4565b9050600080600080611b5f8761210d565b806020019051810190611b7291906139a5565b929650909450925090506001600160e01b03198416631a1bdda160e21b14611ba457611ba463da6153bd60e01b610bdd565b600081806020019051810190611bba9190613a2d565b9050600080611bc9868a611097565b90506000611bdc8785600001518c6127cc565b90506000611bf488866020015187604001518e6128a1565b90508082611c02858d6135f0565b611c0c91906135f0565b611c1691906135f0565b9350505050611c298986868a858d612988565b505050505050505050565b60008281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0160205260409020548015611c7d57611c728382612bbb565b611c7d610502610be7565b505050565b6000611c8c612c12565b9050611cce81611c9d61044f610a31565b60009182527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb609602052604090912055565b611cd9826001612c28565b611ce5816107de61102c565b60405181906001600160a01b038416907f2f40b0474996b72a4251e00fb9170cdd960deea1dc749772cbbab61395b9b57690600090a35050565b611d3882604051806020016040528060008152506121de565b611d428282611c34565b6040516001600160a01b038216907f86fd446d5c04e892d58b448a924dcd9c3ece3a5e0d2960b8c35cd475a5595a1f90600090a25050565b60008181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df04602052604081205490600080516020613d0583398151915290600160e01b83169003611e195781600003611e135780548310611def57604051636f96cda160e11b815260040160405180910390fd5b5b600019909201600081815260048401602052604090205490929091508115611df0575b50919050565b50604051636f96cda160e11b815260040160405180910390fd5b6000816014526370a0823160601b60005260208060246010865afa601f3d111660205102905092915050565b6000611e6c61044f610a31565b90506000611e79826120a4565b90506000806000611e898661210d565b806020019051810190611e9c91906139a5565b50919450925090506001600160e01b031983166346312d8360e11b14611ecc57611ecc63da6153bd60e01b610bdd565b6000611ed88387611097565b90506000611ee682876135f0565b9050610e8788858589858c612988565b6000612710821115611f545760405162461bcd60e51b815260206004820152602160248201527f426173697320706f696e74732063616e6e6f74206578636565642031305f30306044820152600360fc1b60648201526084016103f6565b612710611f618385613ad6565b611f6b9190613aed565b9392505050565b60003860003884865af161043e5763b12d13eb6000526004601cfd5b816014528060345263a9059cbb60601b60005260206000604460106000875af18060016000511416611fd357803d853b151710611fd3576390b8ec186000526004601cfd5b506000603452505050565b60405181606052826040528360601b602c526323b872dd60601b600c52602060006064601c6000895af1806001600051141661202d57803d873b15171061202d57637939f4246000526004601cfd5b50600060605260405250505050565b60007f097b4f25b64e012d0cf55f67e9b34fe5d57f15b11b95baa4ddd136b424967c005b54919050565b7f097b4f25b64e012d0cf55f67e9b34fe5d57f15b11b95baa4ddd136b424967c0080548290829060009061209b9084906135f0565b90915550505050565b6000806120af61203c565b905080156120c05750600092915050565b826000036120d15750600092915050565b5090919050565b6000818152600080516020613d258339815191526020819052604082208054908361210283613b0f565b909155509392505050565b60008181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e02602052604090208054606091600080516020613d258339815191529161215890613620565b80601f016020809104026020016040519081016040528092919081815260200182805461218490613620565b80156121d15780601f106121a6576101008083540402835291602001916121d1565b820191906000526020600020905b8154815290600101906020018083116121b457829003601f168201915b5050505050915050919050565b60008281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0260205260409020600080516020613d2583398151915290610c5b838261369c565b60008181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e01602052604081208054600080516020613d258339815191529234929161209b9084906137d8565b6060600061227e612c42565b80519091506000816001600160401b0381111561229d5761229d6133f8565b60405190808252806020026020018201604052801561230257816020015b6122ef6040518060a00160405280600081526020016060815260200160001515815260200160608152602001606081525090565b8152602001906001900390816122bb5790505b5085516020870120909150600090815b84811015612408576000806000806123428a8681518110612335576123356138a5565b6020026020010151612c6d565b935093509350935060005b82518110156123f75786838281518110612369576123696138a5565b602002602001015180519060200120036123ef576040518060a001604052808c888151811061239a5761239a6138a5565b602002602001015181526020018681526020018515158152602001848152602001838152508989815181106123d1576123d16138a5565b602002602001018190525087806123e790613b0f565b9850506123f7565b60010161234d565b505060019093019250612312915050565b50508152949350505050565b60606000600080516020613d658339815191526006015460405162468b7360e31b81526001600160a01b038581166004830152909116915060009082906302345b9890602401600060405180830381865afa158015612477573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249f9190810190613b28565b905080516000036125a057604051631f04207360e31b81526001600160a01b0385811660048301526000919084169063f821039890602401602060405180830381865afa1580156124f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125189190613603565b90506001600160a01b0381161561259e5760405162468b7360e31b81526001600160a01b03808316600483015291955085918416906302345b9890602401600060405180830381865afa158015612573573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261259b9190810190613b28565b91505b505b805160006125af8260016137d8565b6001600160401b038111156125c6576125c66133f8565b6040519080825280602002602001820160405280156125ef578160200160208202803683370190505b50905060005b828110156126495783818151811061260f5761260f6138a5565b6020026020010151828281518110612629576126296138a5565b6001600160a01b03909216602092830291909101909101526001016125f5565b508581838151811061265d5761265d6138a5565b6001600160a01b039092166020928302919091019091015295945050505050565b6001600160a01b03851661269c5761269c63133de07160e31b610bdd565b6001600160a01b0382166126ba576126ba634bb7c20560e01b610bdd565b60008381527f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e0160209081526040808320805460ff191660011781556003810180546001600160a01b0319166001600160a01b03888116919091179091558251908916938101939093527f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e0093909290910160408051601f198184030181529082905284546310df028560e11b83529092506001600160a01b0316906321be050a903490612790908c908b908a908890600401613bd9565b6000604051808303818588803b1580156127a957600080fd5b505af11580156127bd573d6000803e3d6000fd5b50505050505050505050505050565b60006001600160a01b0383166127e457506000611f6b565b60006127ee610ff3565b604051630b969ea960e31b81526001600160a01b0386811660048301529190911690635cb4f54890602401608060405180830381865afa158015612836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285a9190613c06565b90508060400151600003612872576000915050611f6b565b612880838260400151611ef6565b915061289961288d610be7565b86836020015185610c15565b509392505050565b600082516000146129125760006128b784612d8f565b60408101519091506001600160a01b031615806128d657506020810151155b156128e5576000915050611510565b6128f3838260200151611ef6565b915061290c612900610be7565b87836040015185610c15565b50611510565b6001600160a01b0384161561151057846001600160a01b0316846001600160a01b03160361294257506000611510565b6129738261296e7faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008015490565b611ef6565b9050611510612980610be7565b868684610c15565b811561299a57612998858361111f565b505b6129a48684612bbb565b6129bd86604051806020016040528060008152506121de565b60006129c7610ff3565b604051628956cd60e71b81526b0526976657241697264726f760a41b60048201526001600160a01b0391909116906344ab668090602401602060405180830381865afa158015612a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3f9190613603565b90506000816001600160a01b031663dc69fdde600085604051602001612a6791815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612a93929190613c7f565b602060405180830381865afa158015612ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad4919061375b565b6040516340c10f1960e01b81526001600160a01b03888116600483015260248201839052919250908316906340c10f1990604401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b50505050816001600160a01b03166340c10f19612b51610969565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b158015612b9957600080fd5b505af1158015612bad573d6000803e3d6000fd5b505050505050505050505050565b60008281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526