@vechain/vebetterdao-contracts
Version:
Vebetter DAO smart contracts, including their addresses, ABIs, and interfaces.
1,550 lines • 97 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "X2EarnAppsV1",
"sourceName": "contracts/deprecated/V1/X2EarnAppsV1.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [],
"name": "CheckpointUnorderedInsertion",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "uint48",
"name": "clock",
"type": "uint48"
}
],
"name": "ERC5805FutureLookup",
"type": "error"
},
{
"inputs": [],
"name": "ERC6372InconsistentClock",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "bits",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "SafeCastOverflowedUintDowncast",
"type": "error"
},
{
"inputs": [],
"name": "UUPSUnauthorizedCallContext",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "UUPSUnsupportedProxiableUUID",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "X2EarnAppAlreadyExists",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "X2EarnInvalidAddress",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "percentage",
"type": "uint256"
}
],
"name": "X2EarnInvalidAllocationPercentage",
"type": "error"
},
{
"inputs": [],
"name": "X2EarnInvalidStartIndex",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "X2EarnMaxModeratorsReached",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "X2EarnMaxRewardDistributorsReached",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "X2EarnNonexistentApp",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "moderator",
"type": "address"
}
],
"name": "X2EarnNonexistentModerator",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "distributorAddress",
"type": "address"
}
],
"name": "X2EarnNonexistentRewardDistributor",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "X2EarnUnauthorizedUser",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "id",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
},
{
"indexed": false,
"internalType": "string",
"name": "name",
"type": "string"
},
{
"indexed": false,
"internalType": "bool",
"name": "appAvailableForAllocationVoting",
"type": "bool"
}
],
"name": "AppAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "oldAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AppAdminUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "string",
"name": "oldMetadataURI",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "newMetadataURI",
"type": "string"
}
],
"name": "AppMetadataURIUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "oldBaseURI",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "newBaseURI",
"type": "string"
}
],
"name": "BaseURIUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "moderator",
"type": "address"
}
],
"name": "ModeratorAddedToApp",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "moderator",
"type": "address"
}
],
"name": "ModeratorRemovedFromApp",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "distributorAddress",
"type": "address"
}
],
"name": "RewardDistributorAddedToApp",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "distributorAddress",
"type": "address"
}
],
"name": "RewardDistributorRemovedFromApp",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "oldPercentage",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newPercentage",
"type": "uint256"
}
],
"name": "TeamAllocationPercentageUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "oldTeamWalletAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newTeamWalletAddress",
"type": "address"
}
],
"name": "TeamWalletAddressUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bool",
"name": "isAvailable",
"type": "bool"
}
],
"name": "VotingEligibilityUpdated",
"type": "event"
},
{
"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "GOVERNANCE_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_MODERATORS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_REWARD_DISTRIBUTORS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADE_INTERFACE_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_teamWalletAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_admin",
"type": "address"
},
{
"internalType": "string",
"name": "_appName",
"type": "string"
},
{
"internalType": "string",
"name": "_appMetadataURI",
"type": "string"
}
],
"name": "addApp",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_appId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_moderator",
"type": "address"
}
],
"name": "addAppModerator",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_appId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_distributor",
"type": "address"
}
],
"name": "addRewardDistributor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "allEligibleApps",
"outputs": [
{
"internalType": "bytes32[]",
"name": "",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "app",
"outputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "id",
"type": "bytes32"
},
{
"internalType": "address",
"name": "teamWalletAddress",
"type": "address"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "metadataURI",
"type": "string"
},
{
"internalType": "uint256",
"name": "createdAtTimestamp",
"type": "uint256"
},
{
"internalType": "bool",
"name": "appAvailableForAllocationVoting",
"type": "bool"
}
],
"internalType": "struct X2EarnAppsDataTypes.AppWithDetailsReturnType",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "appAdmin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "appExists",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "appModerators",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "appURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "apps",
"outputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "id",
"type": "bytes32"
},
{
"internalType": "address",
"name": "teamWalletAddress",
"type": "address"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "metadataURI",
"type": "string"
},
{
"internalType": "uint256",
"name": "createdAtTimestamp",
"type": "uint256"
},
{
"internalType": "bool",
"name": "appAvailableForAllocationVoting",
"type": "bool"
}
],
"internalType": "struct X2EarnAppsDataTypes.AppWithDetailsReturnType[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "appsCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "baseURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "startIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "count",
"type": "uint256"
}
],
"name": "getPaginatedApps",
"outputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "id",
"type": "bytes32"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "uint256",
"name": "createdAtTimestamp",
"type": "uint256"
}
],
"internalType": "struct X2EarnAppsDataTypes.App[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "appName",
"type": "string"
}
],
"name": "hashAppName",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_baseURI",
"type": "string"
},
{
"internalType": "address[]",
"name": "_admins",
"type": "address[]"
},
{
"internalType": "address",
"name": "_upgrader",
"type": "address"
},
{
"internalType": "address",
"name": "_governor",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "isAppAdmin",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "isAppModerator",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "isEligible",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "isEligibleNow",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "isRewardDistributor",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "metadataURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_appId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_moderator",
"type": "address"
}
],
"name": "removeAppModerator",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_appId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_distributor",
"type": "address"
}
],
"name": "removeRewardDistributor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "rewardDistributors",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_appId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_newAdmin",
"type": "address"
}
],
"name": "setAppAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_baseURI",
"type": "string"
}
],
"name": "setBaseURI",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_appId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_percentage",
"type": "uint256"
}
],
"name": "setTeamAllocationPercentage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_appId",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "_isEligible",
"type": "bool"
}
],
"name": "setVotingEligibility",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "teamAllocationPercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "appId",
"type": "bytes32"
}
],
"name": "teamWalletAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_appId",
"type": "bytes32"
},
{
"internalType": "string",
"name": "_newMetadataURI",
"type": "string"
}
],
"name": "updateAppMetadata",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_appId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_newReceiverAddress",
"type": "address"
}
],
"name": "updateTeamWalletAddress",
"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": [],
"name": "version",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613e1362000104600039600081816120730152818161209c01526121e60152613e136000f3fe60806040526004361061022e5760003560e01c806301ffc9a7146102335780630765ef60146102685780630ad0e45f1461028a5780630cb212e1146102aa5780631772503b146102ca578063228cf42f146102f7578063248a9ca31461031a5780632589a49d1461033a5780632b5f38791461035a5780632c35f4281461036f5780632e87d31f1461038f5780632f2ff15d146103bc57806334b0e6b3146103dc57806336568abe146103fc578063416c0f741461041c5780634bf5d7e9146104495780634f1ef2861461045e57806352d1902d1461047157806354933bf01461048657806354fd4d50146104a657806355f804b3146104d0578063607bfb24146104f05780636165267c1461051057806369ad5156146105305780636a0ae325146102f75780636c0360eb146105505780636f4e093f146105655780636f604ab314610585578063785d6e18146105a5578063826b9a4e146105d2578063833d29b4146105f257806383802165146106125780638e3a29dc1461063257806391d148541461065257806391ddadf414610672578063947840171461069e578063a06bb129146106be578063a217fddf146106de578063ad3cb1cc146106f3578063b58a754714610724578063c04cff1914610744578063d2570b9414610766578063d547741f14610786578063d5e66e12146107a6578063db8f0a88146107d3578063e9a1fee4146107f3578063f36c8f5c14610813578063f72c0d8b14610835578063f770337914610857575b600080fd5b34801561023f57600080fd5b5061025361024e3660046133ab565b610879565b60405190151581526020015b60405180910390f35b34801561027457600080fd5b506102886102833660046133d5565b6108b0565b005b34801561029657600080fd5b506102536102a5366004613426565b6108d7565b3480156102b657600080fd5b506102886102c5366004613426565b6109b6565b3480156102d657600080fd5b506102ea6102e5366004613452565b610a10565b60405161025f919061346b565b34801561030357600080fd5b5061030c606481565b60405190815260200161025f565b34801561032657600080fd5b5061030c610335366004613452565b610a39565b34801561034657600080fd5b50610288610355366004613426565b610a59565b34801561036657600080fd5b5061030c610aa4565b34801561037b57600080fd5b506102ea61038a366004613452565b610ab9565b34801561039b57600080fd5b506103af6103aa366004613452565b610adf565b60405161025f91906134cf565b3480156103c857600080fd5b506102886103d7366004613426565b610b42565b3480156103e857600080fd5b5061030c6103f736600461359f565b610b5e565b34801561040857600080fd5b50610288610417366004613426565b610b8e565b34801561042857600080fd5b5061043c610437366004613452565b610bc1565b60405161025f91906135db565b34801561045557600080fd5b506103af610c3e565b61028861046c366004613628565b610cb6565b34801561047d57600080fd5b5061030c610cd5565b34801561049257600080fd5b506102886104a1366004613689565b610cf2565b3480156104b257600080fd5b506040805180820190915260018152603160f81b60208201526103af565b3480156104dc57600080fd5b506102886104eb36600461359f565b610d3d565b3480156104fc57600080fd5b5061025361050b366004613452565b610d51565b34801561051c57600080fd5b5061028861052b366004613426565b610d73565b34801561053c57600080fd5b5061043c61054b366004613452565b610dbe565b34801561055c57600080fd5b506103af610e39565b34801561057157600080fd5b506102886105803660046136ab565b610eda565b34801561059157600080fd5b506103af6105a0366004613452565b61110a565b3480156105b157600080fd5b506105c56105c0366004613452565b6111b1565b60405161025f9190613809565b3480156105de57600080fd5b5061030c6105ed366004613452565b61122c565b3480156105fe57600080fd5b5061028861060d366004613426565b61124c565b34801561061e57600080fd5b5061028861062d366004613426565b611297565b34801561063e57600080fd5b5061025361064d366004613426565b6112e2565b34801561065e57600080fd5b5061025361066d366004613426565b61130e565b34801561067e57600080fd5b50610687611344565b60405165ffffffffffff909116815260200161025f565b3480156106aa57600080fd5b506102536106b9366004613452565b611353565b3480156106ca57600080fd5b506102886106d9366004613426565b6113a4565b3480156106ea57600080fd5b5061030c600081565b3480156106ff57600080fd5b506103af604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561073057600080fd5b5061025361073f366004613426565b6113ef565b34801561075057600080fd5b506107596114c2565b60405161025f919061381c565b34801561077257600080fd5b50610253610781366004613689565b611522565b34801561079257600080fd5b506102886107a1366004613426565b6115c3565b3480156107b257600080fd5b506107c66107c1366004613689565b6115df565b60405161025f9190613854565b3480156107df57600080fd5b506102886107ee3660046138d5565b6117c0565b3480156107ff57600080fd5b5061028861080e366004613959565b6117eb565b34801561081f57600080fd5b5061030c600080516020613d7e83398151915281565b34801561084157600080fd5b5061030c600080516020613d9e83398151915281565b34801561086357600080fd5b5061086c611849565b60405161025f9190613995565b60006001600160e01b03198216637965db0b60e01b14806108aa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080516020613d7e8339815191526108c881611a48565b6108d28383611a55565b505050565b6000806108e2611c01565b600085815260018201602090815260408083208054825181850281018501909352808352949550929390929183018282801561094757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610929575b5050505050905060005b81518110156109aa57846001600160a01b0316828281518110610976576109766139f7565b60200260200101516001600160a01b03160361099857600193505050506108aa565b806109a281613a23565b915050610951565b50600095945050505050565b6000826109c3823361130e565b1580156109d757506109d581336112e2565b155b15610a0057336040516363a704cf60e11b81526004016109f7919061346b565b60405180910390fd5b610a0a8484611c25565b50505050565b600080610a1b611c01565b6000938452600301602052505060409020546001600160a01b031690565b600080610a44611d21565b60009384526020525050604090206001015490565b600082610a66823361130e565b158015610a7a5750610a7881336112e2565b155b15610a9a57336040516363a704cf60e11b81526004016109f7919061346b565b610a0a8484611d45565b600080610aaf611f20565b6001015492915050565b600080610ac4611c01565b6000938452602052505060409020546001600160a01b031690565b6060610aea82610d51565b610b0a5760405163018f58af60e31b8152600481018390526024016109f7565b610b12610e39565b610b1b8361110a565b604051602001610b2c929190613a3c565b6040516020818303038152906040529050919050565b610b4b82610a39565b610b5481611a48565b610a0a8383611f44565b600081604051602001610b719190613a6b565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381163314610bb75760405163334bd91960e11b815260040160405180910390fd5b6108d28282611fe5565b60606000610bcd611c01565b60008481526002820160209081526040918290208054835181840281018401909452808452939450919290830182828015610c3157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c13575b5050505050915050919050565b6060610c4861205d565b65ffffffffffff16610c58611344565b65ffffffffffff1614610c7e576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b610cbe612068565b610cc78261210f565b610cd18282612127565b5050565b6000610cdf6121db565b50600080516020613dbe83398151915290565b600082610cff823361130e565b158015610d135750610d1181336112e2565b155b15610d3357336040516363a704cf60e11b81526004016109f7919061346b565b610a0a8484612224565b6000610d4881611a48565b610cd1826122d8565b600080610d5c611f20565b600093845260205250506040902060020154151590565b600082610d80823361130e565b158015610d945750610d9281336112e2565b155b15610db457336040516363a704cf60e11b81526004016109f7919061346b565b610a0a848461232b565b60606000610dca611c01565b60008481526001820160209081526040918290208054835181840281018401909452808452939450919290830182828015610c31576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610c13575050505050915050919050565b60606000610e456123ed565b9050806000018054610e5690613a87565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8290613a87565b8015610ecf5780601f10610ea457610100808354040283529160200191610ecf565b820191906000526020600020905b815481529060010190602001808311610eb257829003601f168201915b505050505091505090565b6000610ee4612411565b805490915060ff600160401b82041615906001600160401b0316600081158015610f0b5750825b90506000826001600160401b03166001148015610f275750303b155b905081158015610f35575080155b15610f535760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610f7c57845460ff60401b1916600160401b1785555b610f84612435565b610f8c612435565b610f94612435565b610f9d89612445565b610fa5612435565b610fad612456565b610fb5612456565b60005b88518110156110865760006001600160a01b0316898281518110610fde57610fde6139f7565b60200260200101516001600160a01b03160361104d5760405162461bcd60e51b815260206004820152602860248201527f58324561726e417070733a2061646d696e20616464726573732063616e6e6f74604482015267206265207a65726f60c01b60648201526084016109f7565b6110736000801b8a8381518110611066576110666139f7565b6020026020010151611f44565b508061107e81613a23565b915050610fb8565b5061109f600080516020613d9e83398151915288611f44565b506110b8600080516020613d7e83398151915287611f44565b5083156110ff57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b60606000611116611c01565b6000848152600582016020526040902080549192509061113590613a87565b80601f016020809104026020016040519081016040528092919081815260200182805461116190613a87565b8015610c315780601f1061118357610100808354040283529160200191610c31565b820191906000526020600020905b815481529060010190602001808311611191575093979650505050505050565b6111b9613343565b60006111c48361245e565b90506040518060c00160405280826000015181526020016111e485610a10565b6001600160a01b03168152602001826020015181526020016112058561110a565b8152602001826040015181526020016112218360000151611353565b151590529392505050565b600080611237611c01565b60009384526004016020525050604090205490565b600082611259823361130e565b15801561126d575061126b81336112e2565b155b1561128d57336040516363a704cf60e11b81526004016109f7919061346b565b610a0a8484612569565b6000826112a4823361130e565b1580156112b857506112b681336112e2565b155b156112d857336040516363a704cf60e11b81526004016109f7919061346b565b610a0a848461264a565b6000806112ed611c01565b600094855260205250506040909120546001600160a01b0391821691161490565b600080611319611d21565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600061134e61205d565b905090565b600061135e82610d51565b61136a57506000919050565b6000611374612749565b600084815260028201602052604090209091506113909061276d565b6001600160d01b0316600114915050919050565b6000826113b1823361130e565b1580156113c557506113c381336112e2565b155b156113e557336040516363a704cf60e11b81526004016109f7919061346b565b610a0a84846127b5565b6000806113fa611c01565b600085815260028201602090815260408083208054825181850281018501909352808352949550929390929183018282801561145f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611441575b5050505050905060005b81518110156109aa57846001600160a01b031682828151811061148e5761148e6139f7565b60200260200101516001600160a01b0316036114b057600193505050506108aa565b806114ba81613a23565b915050611469565b606060006114ce612749565b805460408051602080840282018101909252828152929350839190830182828015610ecf57602002820191906000526020600020905b81548152602001906001019080831161150457505050505091505090565b600061152d83610d51565b611539575060006108aa565b6000611543612749565b9050600061154f611344565b90508065ffffffffffff1684111561158b57604051637669fc0f60e11b81526004810185905265ffffffffffff821660248201526044016109f7565b6115ad61159785612983565b60008781526002850160205260409020906129ba565b6001600160d01b03166001149250505092915050565b6115cc82610a39565b6115d581611a48565b610a0a8383611fe5565b606060006115eb611f20565b600181015490915084811161161357604051635eb538c960e11b815260040160405180910390fd5b600061161f8587613ac1565b90508181111561162c5750805b60006116388783613ad4565b6001600160401b0381111561164f5761164f6134e2565b60405190808252806020026020018201604052801561168857816020015b611675613387565b81526020019060019003908161166d5790505b509050865b828110156117b5578460000160008660010183815481106116b0576116b06139f7565b90600052602060002001548152602001908152602001600020604051806060016040529081600082015481526020016001820180546116ee90613a87565b80601f016020809104026020016040519081016040528092919081815260200182805461171a90613a87565b80156117675780601f1061173c57610100808354040283529160200191611767565b820191906000526020600020905b81548152906001019060200180831161174a57829003601f168201915b505050505081526020016002820154815250508289836117879190613ad4565b81518110611797576117976139f7565b602002602001018190525080806117ad90613a23565b91505061168d565b509695505050505050565b600080516020613d7e8339815191526117d881611a48565b6117e485858585612a62565b5050505050565b6000826117f8823361130e565b15801561180c575061180a81336112e2565b155b801561181f575061181d81336108d7565b155b1561183f57336040516363a704cf60e11b81526004016109f7919061346b565b610a0a8484612bd5565b60606000611855611f20565b60018101549091506000816001600160401b03811115611877576118776134e2565b6040519080825280602002602001820160405280156118b057816020015b61189d613343565b8152602001906001900390816118955790505b50905060005b82811015611a405760008460000160008660010184815481106118db576118db6139f7565b906000526020600020015481526020019081526020016000206040518060600160405290816000820154815260200160018201805461191990613a87565b80601f016020809104026020016040519081016040528092919081815260200182805461194590613a87565b80156119925780601f1061196757610100808354040283529160200191611992565b820191906000526020600020905b81548152906001019060200180831161197557829003601f168201915b5050505050815260200160028201548152505090506040518060c00160405280826000015181526020016119c98360000151610a10565b6001600160a01b03168152602001826020015181526020016119ee836000015161110a565b815260200182604001518152602001611a0a8360000151611353565b1515815250838381518110611a2157611a216139f7565b6020026020010181905250508080611a3890613a23565b9150506118b6565b509392505050565b611a528133612cf8565b50565b611a5e82610d51565b611a7e5760405163018f58af60e31b8152600481018390526024016109f7565b6000611a88612749565b60008481526002820160205260409020909150611abd9083611ab357611aae6000612d31565b612d65565b611aae6001612d31565b505081611b8a576000838152600180830160205260408220548354909291611ae491613ad4565b90506000836000018281548110611afd57611afd6139f7565b9060005260206000200154905080846000018481548110611b2057611b206139f7565b600091825260208083209091019290925582815260018601909152604090208390558354849080611b5357611b53613ae7565b6001900381819060005260206000200160009055905583600101600087815260200190815260200160002060009055505050611bc0565b8054600181810183556000838152602090209091018490558154611bae9190613ad4565b60008481526001830160205260409020555b827f67a3d5f523bbd1855235e1573461f352e4f47a2e67434dac8ac4cf04be557c5183604051611bf4911515815260200190565b60405180910390a2505050565b7f5830f0e95c01712d916c34d9e2fa42e9f749b325b67bce7382d70bb99c62350090565b6001600160a01b038116611c4e5780604051630ea81b3f60e21b81526004016109f7919061346b565b611c5782610d51565b611c775760405163018f58af60e31b8152600481018390526024016109f7565b6000611c81611c01565b6000848152600182016020526040902054909150606411611cb8576040516377ffca9f60e01b8152600481018490526024016109f7565b600083815260018281016020908152604080842080549384018155845292200180546001600160a01b0319166001600160a01b0385161790555183907f25050ac96acd2401160d6a87fc508fb2b6e5404bbd0537ddfb451e0119a9baa790611bf490859061346b565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b6001600160a01b038116611d6e5780604051630ea81b3f60e21b81526004016109f7919061346b565b611d7782610d51565b611d975760405163018f58af60e31b8152600481018390526024016109f7565b611da182826108d7565b611dc2578181604051632c84ac2760e21b81526004016109f7929190613afd565b6000611dcc611c01565b600084815260018201602052604081209192505b81548110156117e457836001600160a01b0316828281548110611e0557611e056139f7565b6000918252602090912001546001600160a01b031603611f0e5781548290611e2f90600190613ad4565b81548110611e3f57611e3f6139f7565b9060005260206000200160009054906101000a90046001600160a01b0316828281548110611e6f57611e6f6139f7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081805480611ead57611ead613ae7565b600082815260209020810160001990810180546001600160a01b031916905501905560405185907f82f635984e0b60385ea0976cdf92f1e5528f83bf7b8ee457f4c6fae2dd198abb90611f0190879061346b565b60405180910390a26117e4565b80611f1881613a23565b915050611de0565b7fb6909058bd527140b8d55a44344c5e42f1f148f1b3b16df7641882df8dd7290090565b600080611f4f611d21565b9050611f5b848461130e565b611fdb576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611f913390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506108aa565b60009150506108aa565b600080611ff0611d21565b9050611ffc848461130e565b15611fdb576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506108aa565b600061134e43612983565b30600160016