Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 2,496 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Execute | 23569434 | 55 days ago | IN | 0 ETH | 0.00077429 | ||||
| Queue | 23555112 | 57 days ago | IN | 0 ETH | 0.00144679 | ||||
| Cast Vote | 23553215 | 58 days ago | IN | 0 ETH | 0.00015768 | ||||
| Cast Vote | 23552785 | 58 days ago | IN | 0 ETH | 0.00023891 | ||||
| Cast Vote | 23552339 | 58 days ago | IN | 0 ETH | 0.00002996 | ||||
| Cast Vote | 23552339 | 58 days ago | IN | 0 ETH | 0.00008387 | ||||
| Cast Vote | 23552187 | 58 days ago | IN | 0 ETH | 0.00010615 | ||||
| Cast Vote | 23549462 | 58 days ago | IN | 0 ETH | 0.00090972 | ||||
| Cast Vote | 23549000 | 58 days ago | IN | 0 ETH | 0.00023543 | ||||
| Cast Vote | 23548809 | 58 days ago | IN | 0 ETH | 0.00027426 | ||||
| Cast Vote | 23548800 | 58 days ago | IN | 0 ETH | 0.00028994 | ||||
| Cast Vote | 23548669 | 58 days ago | IN | 0 ETH | 0.00039815 | ||||
| Cast Vote | 23548543 | 58 days ago | IN | 0 ETH | 0.00048289 | ||||
| Cast Vote | 23547941 | 58 days ago | IN | 0 ETH | 0.00010932 | ||||
| Cast Vote | 23547918 | 58 days ago | IN | 0 ETH | 0.00011493 | ||||
| Cast Vote | 23547807 | 58 days ago | IN | 0 ETH | 0.00008848 | ||||
| Cast Vote | 23547791 | 58 days ago | IN | 0 ETH | 0.00002792 | ||||
| Cast Vote | 23547790 | 58 days ago | IN | 0 ETH | 0.00002876 | ||||
| Cast Vote | 23547790 | 58 days ago | IN | 0 ETH | 0.00008507 | ||||
| Cast Vote | 23547774 | 58 days ago | IN | 0 ETH | 0.000084 | ||||
| Cast Vote | 23547713 | 58 days ago | IN | 0 ETH | 0.00006183 | ||||
| Cast Vote | 23547615 | 58 days ago | IN | 0 ETH | 0.00017881 | ||||
| Cast Vote | 23547402 | 58 days ago | IN | 0 ETH | 0.00003245 | ||||
| Cast Vote | 23547371 | 58 days ago | IN | 0 ETH | 0.00003898 | ||||
| Cast Vote | 23547363 | 58 days ago | IN | 0 ETH | 0.00002972 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x019F9485...D7b8Bd2C8 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
CHNGovernance
Compiler Version
v0.5.16+commit.9c3226ce
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;
import "./CHNGovernanceStorage.sol";
contract CHNGovernance is CHNGovernanceStorage {
event AcceptAdmin(address indexed guardian);
event Abdicate(address indexed guardian);
event QueueSetTimelockPendingAdmin(address indexed guardian, address indexed newPendingAdmin, uint indexed eta);
event ExecuteSetTimelockPendingAdmin(address indexed guardian, address indexed newPendingAdmin, uint indexed eta);
constructor(address timelock_, address chnStaking_, uint256 poolId_, address guardian_, uint256[] memory configs) public {
timelock = TimelockInterface(timelock_);
chnTokenStaking = CHNTokenStaking(chnStaking_);
poolId = poolId_;
guardian = guardian_;
quorumVotes = configs[0];
proposalThreshold = configs[1];
proposalMaxOperations = configs[2];
votingDelay = configs[3];
votingPeriod = configs[4];
}
function changeStakingContract(address staking, uint256 pid) public {
require(address(timelock) == msg.sender, "GovernorAlpha: Only Timelock");
chnTokenStaking = CHNTokenStaking(staking);
poolId = pid;
}
function changeQuorumVotes(uint256 value) public {
require(address(timelock) == msg.sender, "GovernorAlpha: Only Timelock");
quorumVotes = value;
}
function changeProposalThreshold(uint256 value) public {
require(address(timelock) == msg.sender, "GovernorAlpha: Only Timelock");
proposalThreshold = value;
}
function changeProposalMaxOperations(uint256 value) public {
require(address(timelock) == msg.sender, "GovernorAlpha: Only Timelock");
proposalMaxOperations = value;
}
function changeVotingDelay(uint256 value) public {
require(address(timelock) == msg.sender, "GovernorAlpha: Only Timelock");
votingDelay = value;
}
function changeVotingPeriod(uint256 value) public {
require(address(timelock) == msg.sender, "GovernorAlpha: Only Timelock");
votingPeriod = value;
}
function getVotingPower(address user, uint blockNumber) public view returns (uint256) {
return chnTokenStaking.getPriorVotes(poolId, user, blockNumber);
}
function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) public returns (uint) {
require(getVotingPower(msg.sender, sub256(block.number, 1)) >= proposalThreshold, "GovernorAlpha::propose: proposer votes below proposal threshold");
require(targets.length == values.length && targets.length == signatures.length && targets.length == calldatas.length, "GovernorAlpha::propose: proposal function information arity mismatch");
require(targets.length != 0, "GovernorAlpha::propose: must provide actions");
require(targets.length <= proposalMaxOperations, "GovernorAlpha::propose: too many actions");
uint latestProposalId = latestProposalIds[msg.sender];
if (latestProposalId != 0) {
ProposalState proposersLatestProposalState = state(latestProposalId);
require(proposersLatestProposalState != ProposalState.Active, "GovernorAlpha::propose: found an already active proposal");
require(proposersLatestProposalState != ProposalState.Pending, "GovernorAlpha::propose: found an already pending proposal");
}
uint startBlock = add256(block.number, votingDelay);
uint endBlock = add256(startBlock, votingPeriod);
proposalCount++;
Proposal memory newProposal = Proposal({
id: proposalCount,
proposer: msg.sender,
eta: 0,
targets: targets,
values: values,
signatures: signatures,
calldatas: calldatas,
startBlock: startBlock,
endBlock: endBlock,
forVotes: 0,
againstVotes: 0,
canceled: false,
executed: false
});
proposals[newProposal.id] = newProposal;
latestProposalIds[newProposal.proposer] = newProposal.id;
emit ProposalCreated(newProposal.id, msg.sender, targets, values, signatures, calldatas, startBlock, endBlock, description);
return newProposal.id;
}
function queue(uint proposalId) public {
require(state(proposalId) == ProposalState.Succeeded, "GovernorAlpha::queue: proposal can only be queued if it is succeeded");
Proposal storage proposal = proposals[proposalId];
uint eta = add256(block.timestamp, timelock.delay());
for (uint i = 0; i < proposal.targets.length; i++) {
_queueOrRevert(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], eta);
}
proposal.eta = eta;
emit ProposalQueued(proposalId, eta);
}
function _queueOrRevert(address target, uint value, string memory signature, bytes memory data, uint eta) internal {
require(!timelock.queuedTransactions(keccak256(abi.encode(target, value, signature, data, eta))), "GovernorAlpha::_queueOrRevert: proposal action already queued at eta");
timelock.queueTransaction(target, value, signature, data, eta);
}
function execute(uint proposalId) public payable {
require(state(proposalId) == ProposalState.Queued, "GovernorAlpha::execute: proposal can only be executed if it is queued");
Proposal storage proposal = proposals[proposalId];
proposal.executed = true;
for (uint i = 0; i < proposal.targets.length; i++) {
timelock.executeTransaction.value(proposal.values[i])(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);
}
emit ProposalExecuted(proposalId);
}
function cancel(uint proposalId) public {
ProposalState state = state(proposalId);
require(state != ProposalState.Executed, "GovernorAlpha::cancel: cannot cancel executed proposal");
Proposal storage proposal = proposals[proposalId];
require(msg.sender == guardian || getVotingPower(proposal.proposer, proposal.startBlock) < proposalThreshold, "GovernorAlpha::cancel: proposer above threshold");
proposal.canceled = true;
for (uint i = 0; i < proposal.targets.length; i++) {
timelock.cancelTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);
}
emit ProposalCanceled(proposalId);
}
function getActions(uint proposalId) public view returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas) {
Proposal storage p = proposals[proposalId];
return (p.targets, p.values, p.signatures, p.calldatas);
}
function getReceipt(uint proposalId, address voter) public view returns (Receipt memory) {
return proposals[proposalId].receipts[voter];
}
function state(uint proposalId) public view returns (ProposalState) {
require(proposalCount >= proposalId && proposalId > 0, "GovernorAlpha::state: invalid proposal id");
Proposal storage proposal = proposals[proposalId];
if (proposal.canceled) {
return ProposalState.Canceled;
} else if (block.number <= proposal.startBlock) {
return ProposalState.Pending;
} else if (block.number <= proposal.endBlock) {
return ProposalState.Active;
} else if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < quorumVotes) {
return ProposalState.Defeated;
} else if (proposal.eta == 0) {
return ProposalState.Succeeded;
} else if (proposal.executed) {
return ProposalState.Executed;
} else if (block.timestamp >= add256(proposal.eta, timelock.GRACE_PERIOD())) {
return ProposalState.Expired;
} else {
return ProposalState.Queued;
}
}
function castVote(uint proposalId, bool support) public {
return _castVote(msg.sender, proposalId, support);
}
function castVoteBySig(uint proposalId, bool support, uint8 v, bytes32 r, bytes32 s) public {
bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
bytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support));
bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
address signatory = ecrecover(digest, v, r, s);
require(signatory != address(0), "GovernorAlpha::castVoteBySig: invalid signature");
return _castVote(signatory, proposalId, support);
}
function _castVote(address voter, uint proposalId, bool support) internal {
require(state(proposalId) == ProposalState.Active, "GovernorAlpha::_castVote: voting is closed");
Proposal storage proposal = proposals[proposalId];
Receipt storage receipt = proposal.receipts[voter];
require(receipt.hasVoted == false, "GovernorAlpha::_castVote: voter already voted");
uint256 votes = getVotingPower(voter, proposal.startBlock);
if (support) {
proposal.forVotes = add256(proposal.forVotes, votes);
} else {
proposal.againstVotes = add256(proposal.againstVotes, votes);
}
receipt.hasVoted = true;
receipt.support = support;
receipt.votes = votes;
emit VoteCast(voter, proposalId, support, votes);
}
function __acceptAdmin() public {
require(msg.sender == guardian, "GovernorAlpha::__acceptAdmin: sender must be gov guardian");
timelock.acceptAdmin();
emit AcceptAdmin(msg.sender);
}
function __abdicate() public {
require(msg.sender == guardian, "GovernorAlpha::__abdicate: sender must be gov guardian");
guardian = address(0);
emit Abdicate(msg.sender);
}
function __queueSetTimelockPendingAdmin(address newPendingAdmin, uint eta) public {
require(msg.sender == guardian, "GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian");
timelock.queueTransaction(address(timelock), 0, "setPendingAdmin(address)", abi.encode(newPendingAdmin), eta);
emit QueueSetTimelockPendingAdmin(msg.sender, newPendingAdmin, eta);
}
function __executeSetTimelockPendingAdmin(address newPendingAdmin, uint eta) public {
require(msg.sender == guardian, "GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian");
timelock.executeTransaction(address(timelock), 0, "setPendingAdmin(address)", abi.encode(newPendingAdmin), eta);
emit ExecuteSetTimelockPendingAdmin(msg.sender, newPendingAdmin, eta);
}
function add256(uint256 a, uint256 b) internal pure returns (uint) {
uint c = a + b;
require(c >= a, "addition overflow");
return c;
}
function sub256(uint256 a, uint256 b) internal pure returns (uint) {
require(b <= a, "subtraction underflow");
return a - b;
}
function getChainId() internal pure returns (uint) {
uint chainId;
assembly { chainId := chainid() }
return chainId;
}
}pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;
interface TimelockInterface {
function delay() external view returns (uint);
function GRACE_PERIOD() external view returns (uint);
function acceptAdmin() external;
function queuedTransactions(bytes32 hash) external view returns (bool);
function queueTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external returns (bytes32);
function cancelTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external;
function executeTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external payable returns (bytes memory);
}
interface CHNTokenStaking {
function getPriorVotes(uint256 pid, address user, uint blockNumber) external view returns (uint256);
}
contract CHNGovernanceStorage {
/// @notice The name of this contract
string public constant name = "Chain Governor";
/// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed
uint256 public quorumVotes;
/// @notice The number of votes required in order for a voter to become a proposer
uint256 public proposalThreshold;
/// @notice The maximum number of actions that can be included in a proposal
uint256 public proposalMaxOperations;
/// @notice The delay before voting on a proposal may take place, once proposed
uint256 public votingDelay;
/// @notice The duration of voting on a proposal, in blocks
uint256 public votingPeriod;
TimelockInterface public timelock;
CHNTokenStaking public chnTokenStaking;
uint256 public poolId; // pool id of staking contract
/// @notice The address of the Governor Guardian
address public guardian;
/// @notice The total number of proposals
uint public proposalCount;
struct Proposal {
/// @notice Unique id for looking up a proposal
uint id;
/// @notice Creator of the proposal
address proposer;
/// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds
uint eta;
/// @notice the ordered list of target addresses for calls to be made
address[] targets;
/// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made
uint[] values;
/// @notice The ordered list of function signatures to be called
string[] signatures;
/// @notice The ordered list of calldata to be passed to each call
bytes[] calldatas;
/// @notice The block at which voting begins: holders must delegate their votes prior to this block
uint startBlock;
/// @notice The block at which voting ends: votes must be cast prior to this block
uint endBlock;
/// @notice Current number of votes in favor of this proposal
uint forVotes;
/// @notice Current number of votes in opposition to this proposal
uint againstVotes;
/// @notice Flag marking whether the proposal has been canceled
bool canceled;
/// @notice Flag marking whether the proposal has been executed
bool executed;
/// @notice Receipts of ballots for the entire set of voters
mapping (address => Receipt) receipts;
}
/// @notice Ballot receipt record for a voter
struct Receipt {
/// @notice Whether or not a vote has been cast
bool hasVoted;
/// @notice Whether or not the voter supports the proposal
bool support;
/// @notice The number of votes the voter had, which were cast
uint256 votes;
}
/// @notice Possible states that a proposal may be in
enum ProposalState {
Pending,
Active,
Canceled,
Defeated,
Succeeded,
Queued,
Expired,
Executed
}
/// @notice The official record of all proposals ever proposed
mapping (uint => Proposal) public proposals;
/// @notice The latest proposal for each proposer
mapping (address => uint) public latestProposalIds;
/// @notice The EIP-712 typehash for the contract's domain
bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");
/// @notice The EIP-712 typehash for the ballot struct used by the contract
bytes32 public constant BALLOT_TYPEHASH = keccak256("Ballot(uint256 proposalId,bool support)");
/// @notice An event emitted when a new proposal is created
event ProposalCreated(uint id, address proposer, address[] targets, uint[] values, string[] signatures, bytes[] calldatas, uint startBlock, uint endBlock, string description);
/// @notice An event emitted when a vote has been cast on a proposal
event VoteCast(address voter, uint proposalId, bool support, uint votes);
/// @notice An event emitted when a proposal has been canceled
event ProposalCanceled(uint id);
/// @notice An event emitted when a proposal has been queued in the Timelock
event ProposalQueued(uint id, uint eta);
/// @notice An event emitted when a proposal has been executed in the Timelock
event ProposalExecuted(uint id);
}{
"evmVersion": "istanbul",
"optimizer": {
"enabled": true,
"runs": 1000000,
"details": {
"yul": true,
"deduplicate": true,
"cse": true,
"constantOptimizer": true
}
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"timelock_","type":"address"},{"internalType":"address","name":"chnStaking_","type":"address"},{"internalType":"uint256","name":"poolId_","type":"uint256"},{"internalType":"address","name":"guardian_","type":"address"},{"internalType":"uint256[]","name":"configs","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"guardian","type":"address"}],"name":"Abdicate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"guardian","type":"address"}],"name":"AcceptAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"guardian","type":"address"},{"indexed":true,"internalType":"address","name":"newPendingAdmin","type":"address"},{"indexed":true,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteSetTimelockPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"guardian","type":"address"},{"indexed":true,"internalType":"address","name":"newPendingAdmin","type":"address"},{"indexed":true,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueSetTimelockPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"VoteCast","type":"event"},{"constant":true,"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"__abdicate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"__acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"__executeSetTimelockPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"__queueSetTimelockPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"castVote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"changeProposalMaxOperations","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"changeProposalThreshold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"changeQuorumVotes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"staking","type":"address"},{"internalType":"uint256","name":"pid","type":"uint256"}],"name":"changeStakingContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"changeVotingDelay","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"changeVotingPeriod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"chnTokenStaking","outputs":[{"internalType":"contract CHNTokenStaking","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint256","name":"votes","type":"uint256"}],"internalType":"struct CHNGovernanceStorage.Receipt","name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotingPower","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"latestProposalIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"poolId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalMaxOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum CHNGovernanceStorage.ProposalState","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timelock","outputs":[{"internalType":"contract TimelockInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]Contract Creation Code
0x60806040523480156200001157600080fd5b50604051620040443803806200404483398101604081905262000034916200010d565b600580546001600160a01b038088166001600160a01b0319928316179092556006805487841690831617905560078590556008805492851692909116919091179055805181906000906200008457fe5b602002602001015160008190555080600181518110620000a057fe5b602002602001015160018190555080600281518110620000bc57fe5b602002602001015160028190555080600381518110620000d857fe5b602002602001015160038190555080600481518110620000f457fe5b602002602001015160048190555050505050506200025c565b600080600080600060a0868803121562000125578081fd5b8551620001328162000243565b80955050602080870151620001478162000243565b604088015160608901519196509450620001618162000243565b60808801519093506001600160401b038111156200017d578283fd5b80880189601f8201126200018f578384fd5b80519150620001a8620001a28362000223565b620001fc565b82815283810190828501858502840186018d1015620001c5578687fd5b8693505b84841015620001e9578051835260019390930192918501918501620001c9565b5080955050505050509295509295909350565b6040518181016001600160401b03811182821017156200021b57600080fd5b604052919050565b60006001600160401b0382111562000239578081fd5b5060209081020190565b6001600160a01b03811681146200025957600080fd5b50565b613dd8806200026c6000396000f3fe6080604052600436106102345760003560e01c80635832cf5911610138578063d33219b4116100b0578063deaaa7cc1161007f578063e4cfde5411610064578063e4cfde5414610605578063f9dabc5514610625578063fe0d94c11461064557610234565b8063deaaa7cc146105c3578063e23a9a52146105d857610234565b8063d33219b414610559578063da35c6641461056e578063da95691a14610583578063ddf0b009146105a357610234565b80638ff400f411610107578063a8f0a82e116100ec578063a8f0a82e1461050f578063b58131b01461052f578063b9a619611461054457610234565b80638ff400f4146104cf57806391500671146104ef57610234565b80635832cf5914610470578063760fbc13146104905780637b9cbf67146104a55780637bdbe4d0146104ba57610234565b806324bc1a64116101cb5780633e0dc34e1161019a57806340e58ee51161017f57806340e58ee51461040e578063452a93201461042e5780634634c61f1461045057610234565b80633e0dc34e146103cc5780633e4f49e6146103e157610234565b806324bc1a64146103525780632c4548cf14610367578063328dd982146103875780633932abb1146103b757610234565b806315373e3d1161020757806315373e3d146102dd57806317977c61146102fd57806320606b701461031d57806321f43e421461033257610234565b8063013cf08b1461023957806302a251a31461027757806302d8a8201461029957806306fdde03146102bb575b600080fd5b34801561024557600080fd5b50610259610254366004612d23565b610658565b60405161026e99989796959493929190613c67565b60405180910390f35b34801561028357600080fd5b5061028c6106c0565b60405161026e919061326e565b3480156102a557600080fd5b506102b96102b4366004612b83565b6106c6565b005b3480156102c757600080fd5b506102d061076b565b60405161026e91906132f2565b3480156102e957600080fd5b506102b96102f8366004612d67565b6107a4565b34801561030957600080fd5b5061028c610318366004612b68565b6107b3565b34801561032957600080fd5b5061028c6107c5565b34801561033e57600080fd5b506102b961034d366004612b83565b6107dc565b34801561035e57600080fd5b5061028c610952565b34801561037357600080fd5b506102b9610382366004612d23565b610958565b34801561039357600080fd5b506103a76103a2366004612d23565b6109ae565b60405161026e9493929190613217565b3480156103c357600080fd5b5061028c610c86565b3480156103d857600080fd5b5061028c610c8c565b3480156103ed57600080fd5b506104016103fc366004612d23565b610c92565b60405161026e91906132de565b34801561041a57600080fd5b506102b9610429366004612d23565b610e4f565b34801561043a57600080fd5b506104436110b7565b60405161026e91906130a6565b34801561045c57600080fd5b506102b961046b366004612d96565b6110d3565b34801561047c57600080fd5b506102b961048b366004612d23565b6112b5565b34801561049c57600080fd5b506102b961130b565b3480156104b157600080fd5b506104436113b1565b3480156104c657600080fd5b5061028c6113cd565b3480156104db57600080fd5b5061028c6104ea366004612b83565b6113d3565b3480156104fb57600080fd5b506102b961050a366004612b83565b611489565b34801561051b57600080fd5b506102b961052a366004612d23565b6115dd565b34801561053b57600080fd5b5061028c611633565b34801561055057600080fd5b506102b9611639565b34801561056557600080fd5b50610443611739565b34801561057a57600080fd5b5061028c611755565b34801561058f57600080fd5b5061028c61059e366004612bad565b61175b565b3480156105af57600080fd5b506102b96105be366004612d23565b611bc7565b3480156105cf57600080fd5b5061028c611ebf565b3480156105e457600080fd5b506105f86105f3366004612d3b565b611ecb565b60405161026e9190613b75565b34801561061157600080fd5b506102b9610620366004612d23565b611f39565b34801561063157600080fd5b506102b9610640366004612d23565b611f8f565b6102b9610653366004612d23565b611fe5565b600a60208190526000918252604090912080546001820154600283015460078401546008850154600986015496860154600b90960154949673ffffffffffffffffffffffffffffffffffffffff90941695929491939092909160ff8082169161010090041689565b60045481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061387c565b60405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9390931692909217909155600755565b6040518060400160405280600e81526020017f436861696e20476f7665726e6f7200000000000000000000000000000000000081525081565b6107af338383612219565b5050565b600b6020526000908152604090205481565b6040516107d190612fe2565b604051809103902081565b60085473ffffffffffffffffffffffffffffffffffffffff16331461082d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613468565b60055460405173ffffffffffffffffffffffffffffffffffffffff90911690630825f38f9082906000906108659087906020016130a6565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161089494939291906130c7565b600060405180830381600087803b1580156108ae57600080fd5b505af11580156108c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109089190810190612cad565b50604051819073ffffffffffffffffffffffffffffffffffffffff84169033907f6912fbd96b1ad063d5747a1b9433e227f05190a443b8d78653ef13689d83d6d090600090a45050565b60005481565b60055473ffffffffffffffffffffffffffffffffffffffff1633146109a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061387c565b600255565b6060806060806000600a600087815260200190815260200160002090508060030181600401826005018360060183805480602002602001604051908101604052809291908181526020018280548015610a3d57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a12575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610a8f57602002820191906000526020600020905b815481526020019060010190808311610a7b575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610b805760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015610b6c5780601f10610b4157610100808354040283529160200191610b6c565b820191906000526020600020905b815481529060010190602001808311610b4f57829003601f168201915b505050505081526020019060010190610ab7565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610c705760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015610c5c5780601f10610c3157610100808354040283529160200191610c5c565b820191906000526020600020905b815481529060010190602001808311610c3f57829003601f168201915b505050505081526020019060010190610ba7565b5050505090509450945094509450509193509193565b60035481565b60075481565b60008160095410158015610ca65750600082115b610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906134eb565b6000828152600a60205260409020600b81015460ff1615610d01576002915050610e4a565b80600701544311610d16576000915050610e4a565b80600801544311610d2b576001915050610e4a565b80600a01548160090154111580610d4757506000548160090154105b15610d56576003915050610e4a565b6002810154610d69576004915050610e4a565b600b810154610100900460ff1615610d85576007915050610e4a565b6002810154600554604080517fc1a287e20000000000000000000000000000000000000000000000000000000081529051610e34939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b158015610df757600080fd5b505afa158015610e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2f9190810190612c95565b6123bb565b4210610e44576006915050610e4a565b60059150505b919050565b6000610e5a82610c92565b90506007816007811115610e6a57fe5b1415610ea2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613a27565b6000828152600a6020526040902060085473ffffffffffffffffffffffffffffffffffffffff16331480610f00575060018054908201546007830154610efe9173ffffffffffffffffffffffffffffffffffffffff16906113d3565b105b610f36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061373f565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b600382015481101561107a5760055460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610fa557fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610fda57fe5b9060005260206000200154856005018581548110610ff457fe5b9060005260206000200186600601868154811061100d57fe5b9060005260206000200187600201546040518663ffffffff1660e01b815260040161103c9594939291906131d0565b600060405180830381600087803b15801561105657600080fd5b505af115801561106a573d6000803e3d6000fd5b505060019092019150610f669050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c836040516110aa919061326e565b60405180910390a1505050565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60006040516110e190612fe2565b60408051918290038220828201909152600e82527f436861696e20476f7665726e6f720000000000000000000000000000000000006020909201919091527f8a978a11f76c43af6b43f115dd55c000b4382d9f05d80ca2971564bf6c703d7c6111486123fa565b3060405160200161115c9493929190613277565b604051602081830303815290604052805190602001209050600060405161118290613057565b60405190819003812061119b91899089906020016132a8565b604051602081830303815290604052805190602001209050600082826040516020016111c8929190612fac565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161120594939291906132c0565b6020604051602081039080840390855afa158015611227573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906139ca565b6112aa818a8a612219565b505050505050505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061387c565b600455565b60085473ffffffffffffffffffffffffffffffffffffffff16331461135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613b18565b600880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405133907fd11e8cdeeb58b92f9f1d805a329d8a50f6651c7cd62c84aa5e724063f14786a490600090a2565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6006546007546040517fc418441c00000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163c418441c91611430919087908790600401613c3b565b60206040518083038186803b15801561144857600080fd5b505afa15801561145c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114809190810190612c95565b90505b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff1633146114da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906135a5565b60055460405173ffffffffffffffffffffffffffffffffffffffff90911690633a66f9019082906000906115129087906020016130a6565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161154194939291906130c7565b602060405180830381600087803b15801561155b57600080fd5b505af115801561156f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115939190810190612c95565b50604051819073ffffffffffffffffffffffffffffffffffffffff84169033907f23de49979a1289947e1e39451d8d20ad656a4809680ecbba6fdb560b5b51cd7290600090a45050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461162e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061387c565b600055565b60015481565b60085473ffffffffffffffffffffffffffffffffffffffff16331461168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613305565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e18b6816040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116f457600080fd5b505af1158015611708573d6000803e3d6000fd5b50506040513392507fce0b9b30b1b49e92f89a5f13582d8953787518fc538ec05dbeee71abdba947e29150600090a2565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b600060015461176f336104ea4360016123ff565b10156117a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061396d565b845186511480156117b9575083518651145b80156117c6575082518651145b6117fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906136bc565b8551611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613910565b60025486511115611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613628565b336000908152600b6020526040902054801561192257600061189282610c92565b905060018160078111156118a257fe5b14156118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061379c565b60008160078111156118e857fe5b1415611920576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906138b3565b505b6000611930436003546123bb565b90506000611940826004546123bb565b60098054600101905590506119536125ed565b604051806101a0016040528060095481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a8152602001898152602001888152602001848152602001838152602001600081526020016000815260200160001515815260200160001515815250905080600a6000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611a5d92919061266f565b5060808201518051611a799160048401916020909101906126f9565b5060a08201518051611a95916005840191602090910190612740565b5060c08201518051611ab1916006840191602090910190612799565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff0219169083151502179055509050508060000151600b6000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e604051611bb199989796959493929190613b9a565b60405180910390a1519998505050505050505050565b6004611bd282610c92565b6007811115611bdd57fe5b14611c14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613362565b6000818152600a6020908152604080832060055482517f6a42b8f80000000000000000000000000000000000000000000000000000000081529251919493611c9493429373ffffffffffffffffffffffffffffffffffffffff90931692636a42b8f892600480840193919291829003018186803b158015610df757600080fd5b905060005b6003830154811015611e8557611e7d836003018281548110611cb757fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169184908110611cec57fe5b9060005260206000200154856005018481548110611d0657fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015611db25780601f10611d8757610100808354040283529160200191611db2565b820191906000526020600020905b815481529060010190602001808311611d9557829003601f168201915b5050505050866006018581548110611dc657fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015611e725780601f10611e4757610100808354040283529160200191611e72565b820191906000526020600020905b815481529060010190602001808311611e5557829003601f168201915b505050505086612441565b600101611c99565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892906110aa9085908490613cc0565b6040516107d190613057565b611ed36127f2565b506000918252600a6020908152604080842073ffffffffffffffffffffffffffffffffffffffff939093168452600c9092018152918190208151606081018352815460ff8082161515835261010090910416151593810193909352600101549082015290565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061387c565b600355565b60055473ffffffffffffffffffffffffffffffffffffffff163314611fe0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061387c565b600155565b6005611ff082610c92565b6007811115611ffb57fe5b14612032576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906133e5565b6000818152600a60205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b60038201548110156121dd5760055460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f9190849081106120af57fe5b90600052602060002001548460030184815481106120c957fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff90921691869081106120fe57fe5b906000526020600020015486600501868154811061211857fe5b9060005260206000200187600601878154811061213157fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016121609594939291906131d0565b6000604051808303818588803b15801561217957600080fd5b505af115801561218d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526121d49190810190612cad565b50600101612070565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161220d919061326e565b60405180910390a15050565b600161222483610c92565b600781111561222f57fe5b14612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613a84565b6000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff16156122d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613548565b60006122e68684600701546113d3565b90508315612306576122fc8360090154826123bb565b600984015561231a565b61231483600a0154826123bb565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911681177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c46906123ab908890889088908690613141565b60405180910390a1505050505050565b600082820183811015611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613685565b465b90565b60008282111561243b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613ae1565b50900390565b60055460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b065379061247c9088908890889088908890602001613176565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016124ae919061326e565b60206040518083038186803b1580156124c657600080fd5b505afa1580156124da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124fe9190810190612c79565b15612535576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906137f9565b6005546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f901906125939088908890889088908890600401613176565b602060405180830381600087803b1580156125ad57600080fd5b505af11580156125c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125e59190810190612c95565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b8280548282559060005260206000209081019282156126e9579160200282015b828111156126e957825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061268f565b506126f5929150612812565b5090565b828054828255906000526020600020908101928215612734579160200282015b82811115612734578251825591602001919060010190612719565b506126f592915061284e565b82805482825590600052602060002090810192821561278d579160200282015b8281111561278d578251805161277d918491602090910190612868565b5091602001919060010190612760565b506126f59291506128d5565b8280548282559060005260206000209081019282156127e6579160200282015b828111156127e657825180516127d6918491602090910190612868565b50916020019190600101906127b9565b506126f59291506128f8565b604080516060810182526000808252602082018190529181019190915290565b6123fc91905b808211156126f55780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612818565b6123fc91905b808211156126f55760008155600101612854565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106128a957805160ff1916838001178555612734565b828001600101855582156127345791820182811115612734578251825591602001919060010190612719565b6123fc91905b808211156126f55760006128ef828261291b565b506001016128db565b6123fc91905b808211156126f5576000612912828261291b565b506001016128fe565b50805460018160011615610100020316600290046000825580601f10612941575061295f565b601f01602090049060005260206000209081019061295f919061284e565b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461148357600080fd5b600082601f830112612996578081fd5b81356129a96129a482613cf5565b613cce565b8181529150602080830190848101818402860182018710156129ca57600080fd5b60005b848110156129f1576129df8883612962565b845292820192908201906001016129cd565b505050505092915050565b600082601f830112612a0c578081fd5b8135612a1a6129a482613cf5565b8181529150602080830190840160005b83811015612a5757612a428760208435890101612b1a565b83526020928301929190910190600101612a2a565b5050505092915050565b600082601f830112612a71578081fd5b8135612a7f6129a482613cf5565b8181529150602080830190840160005b83811015612a5757612aa78760208435890101612b1a565b83526020928301929190910190600101612a8f565b600082601f830112612acc578081fd5b8135612ada6129a482613cf5565b818152915060208083019084810181840286018201871015612afb57600080fd5b60005b848110156129f157813584529282019290820190600101612afe565b600082601f830112612b2a578081fd5b8135612b386129a482613d15565b9150808252836020828501011115612b4f57600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215612b79578081fd5b6114808383612962565b60008060408385031215612b95578081fd5b612b9f8484612962565b946020939093013593505050565b600080600080600060a08688031215612bc4578081fd5b853567ffffffffffffffff80821115612bdb578283fd5b612be789838a01612986565b96506020880135915080821115612bfc578283fd5b612c0889838a01612abc565b95506040880135915080821115612c1d578283fd5b612c2989838a01612a61565b94506060880135915080821115612c3e578283fd5b612c4a89838a016129fc565b93506080880135915080821115612c5f578283fd5b50612c6c88828901612b1a565b9150509295509295909350565b600060208284031215612c8a578081fd5b815161148081613d87565b600060208284031215612ca6578081fd5b5051919050565b600060208284031215612cbe578081fd5b815167ffffffffffffffff811115612cd4578182fd5b80830184601f820112612ce5578283fd5b80519150612cf56129a483613d15565b828152856020848401011115612d09578384fd5b612d1a836020830160208501613d57565b95945050505050565b600060208284031215612d34578081fd5b5035919050565b60008060408385031215612d4d578182fd5b82359150612d5e8460208501612962565b90509250929050565b60008060408385031215612d79578182fd5b823591506020830135612d8b81613d87565b809150509250929050565b600080600080600060a08688031215612dad578283fd5b853594506020860135612dbf81613d87565b9350604086013560ff81168114612dd4578384fd5b94979396509394606081013594506080013592915050565b6000815180845260208401935060208301825b82811015612e3357815173ffffffffffffffffffffffffffffffffffffffff16865260209586019590910190600101612dff565b5093949350505050565b600081518084526020840193508360208202850160208501845b84811015612e85578383038852612e6f838351612ec2565b6020988901989093509190910190600101612e57565b50909695505050505050565b6000815180845260208401935060208301825b82811015612e33578151865260209586019590910190600101612ea4565b60008151808452612eda816020860160208601613d57565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600081546001811660008114612f295760018114612f6557612fa4565b607f600283041685527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082166020860152604085019250612fa4565b6002820480865284600052602060002060005b82811015612f9a5781546020828a010152600182019150602081019050612f78565b8701602001945050505b505092915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430190565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8616825284602083015260a06040830152601860a08301527f73657450656e64696e6741646d696e286164647265737329000000000000000060c083015260e0606083015261313060e0830185612ec2565b905082608083015295945050505050565b73ffffffffffffffffffffffffffffffffffffffff949094168452602084019290925215156040830152606082015260800190565b600073ffffffffffffffffffffffffffffffffffffffff8716825285602083015260a060408301526131ab60a0830186612ec2565b82810360608401526131bd8186612ec2565b9150508260808301529695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8716825285602083015260a0604083015261320560a0830186612f0c565b82810360608401526131bd8186612f0c565b60006080825261322a6080830187612dec565b828103602084015261323c8187612e91565b838103604085015261324e8187612e3d565b91505082810360608401526132638185612e3d565b979650505050505050565b90815260200190565b9384526020840192909252604083015273ffffffffffffffffffffffffffffffffffffffff16606082015260800190565b92835260208301919091521515604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b60208101600883106132ec57fe5b91905290565b6000602082526114806020830184612ec2565b60208082526039908201527f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736560408201527f6e646572206d75737420626520676f7620677561726469616e00000000000000606082015260800190565b60208082526044908201527f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206360408201527f616e206f6e6c792062652071756575656420696620697420697320737563636560608201527f6564656400000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526045908201527f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c60408201527f2063616e206f6e6c79206265206578656375746564206966206974206973207160608201527f7565756564000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252604c908201527f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c60408201527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060608201527f676f7620677561726469616e0000000000000000000000000000000000000000608082015260a00190565b60208082526029908201527f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707260408201527f6f706f73616c2069640000000000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722060408201527f616c726561647920766f74656400000000000000000000000000000000000000606082015260800190565b6020808252604a908201527f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6360408201527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f60608201527f7620677561726469616e00000000000000000000000000000000000000000000608082015260a00190565b60208082526028908201527f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7960408201527f20616374696f6e73000000000000000000000000000000000000000000000000606082015260800190565b60208082526011908201527f6164646974696f6e206f766572666c6f77000000000000000000000000000000604082015260600190565b60208082526044908201527f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c60408201527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60608201527f6174636800000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602f908201527f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722060408201527f61626f7665207468726573686f6c640000000000000000000000000000000000606082015260800190565b60208082526038908201527f476f7665726e6f72416c7068613a3a70726f706f73653a20666f756e6420616e60408201527f20616c7265616479206163746976652070726f706f73616c0000000000000000606082015260800190565b60208082526044908201527f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207060408201527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460608201527f2065746100000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252601c908201527f476f7665726e6f72416c7068613a204f6e6c792054696d656c6f636b00000000604082015260600190565b60208082526039908201527f476f7665726e6f72416c7068613a3a70726f706f73653a20666f756e6420616e60408201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000606082015260800190565b6020808252602c908201527f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f60408201527f7669646520616374696f6e730000000000000000000000000000000000000000606082015260800190565b6020808252603f908201527f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657260408201527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400606082015260800190565b6020808252602f908201527f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e60408201527f76616c6964207369676e61747572650000000000000000000000000000000000606082015260800190565b60208082526036908201527f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636160408201527f6e63656c2065786563757465642070726f706f73616c00000000000000000000606082015260800190565b6020808252602a908201527f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6760408201527f20697320636c6f73656400000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f7375627472616374696f6e20756e646572666c6f770000000000000000000000604082015260600190565b60208082526036908201527f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e646560408201527f72206d75737420626520676f7620677561726469616e00000000000000000000606082015260800190565b8151151581526020808301511515908201526040918201519181019190915260600190565b60006101208b835273ffffffffffffffffffffffffffffffffffffffff8b166020840152806040840152613bd08184018b612dec565b8381036060850152613be2818b612e91565b9150508281036080840152613bf78189612e3d565b83810360a0850152613c098189612e3d565b9150508560c08401528460e0840152828103610100840152613c2b8185612ec2565b9c9b505050505050505050505050565b92835273ffffffffffffffffffffffffffffffffffffffff919091166020830152604082015260600190565b98895273ffffffffffffffffffffffffffffffffffffffff97909716602089015260408801959095526060870193909352608086019190915260a085015260c0840152151560e083015215156101008201526101200190565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715613ced57600080fd5b604052919050565b600067ffffffffffffffff821115613d0b578081fd5b5060209081020190565b600067ffffffffffffffff821115613d2b578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015613d72578181015183820152602001613d5a565b83811115613d81576000848401525b50505050565b801515811461295f57600080fdfea365627a7a723158203c1862f21ea4cd36330f7853ba8f78ebaebd93acfc54d408ba3e8528987d48cc6c6578706572696d656e74616cf564736f6c6343000510004000000000000000000000000008edf0f2af8672029eb445742b3b4072c6158df300000000000000000000000023445c63feef8d85956dc0f19ade87606d0e19a90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fde1cb0c3522451705d9c64a74994801fe8af4cd00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000052b7d2dcc80cd2e4000000000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001e
Deployed Bytecode
0x6080604052600436106102345760003560e01c80635832cf5911610138578063d33219b4116100b0578063deaaa7cc1161007f578063e4cfde5411610064578063e4cfde5414610605578063f9dabc5514610625578063fe0d94c11461064557610234565b8063deaaa7cc146105c3578063e23a9a52146105d857610234565b8063d33219b414610559578063da35c6641461056e578063da95691a14610583578063ddf0b009146105a357610234565b80638ff400f411610107578063a8f0a82e116100ec578063a8f0a82e1461050f578063b58131b01461052f578063b9a619611461054457610234565b80638ff400f4146104cf57806391500671146104ef57610234565b80635832cf5914610470578063760fbc13146104905780637b9cbf67146104a55780637bdbe4d0146104ba57610234565b806324bc1a64116101cb5780633e0dc34e1161019a57806340e58ee51161017f57806340e58ee51461040e578063452a93201461042e5780634634c61f1461045057610234565b80633e0dc34e146103cc5780633e4f49e6146103e157610234565b806324bc1a64146103525780632c4548cf14610367578063328dd982146103875780633932abb1146103b757610234565b806315373e3d1161020757806315373e3d146102dd57806317977c61146102fd57806320606b701461031d57806321f43e421461033257610234565b8063013cf08b1461023957806302a251a31461027757806302d8a8201461029957806306fdde03146102bb575b600080fd5b34801561024557600080fd5b50610259610254366004612d23565b610658565b60405161026e99989796959493929190613c67565b60405180910390f35b34801561028357600080fd5b5061028c6106c0565b60405161026e919061326e565b3480156102a557600080fd5b506102b96102b4366004612b83565b6106c6565b005b3480156102c757600080fd5b506102d061076b565b60405161026e91906132f2565b3480156102e957600080fd5b506102b96102f8366004612d67565b6107a4565b34801561030957600080fd5b5061028c610318366004612b68565b6107b3565b34801561032957600080fd5b5061028c6107c5565b34801561033e57600080fd5b506102b961034d366004612b83565b6107dc565b34801561035e57600080fd5b5061028c610952565b34801561037357600080fd5b506102b9610382366004612d23565b610958565b34801561039357600080fd5b506103a76103a2366004612d23565b6109ae565b60405161026e9493929190613217565b3480156103c357600080fd5b5061028c610c86565b3480156103d857600080fd5b5061028c610c8c565b3480156103ed57600080fd5b506104016103fc366004612d23565b610c92565b60405161026e91906132de565b34801561041a57600080fd5b506102b9610429366004612d23565b610e4f565b34801561043a57600080fd5b506104436110b7565b60405161026e91906130a6565b34801561045c57600080fd5b506102b961046b366004612d96565b6110d3565b34801561047c57600080fd5b506102b961048b366004612d23565b6112b5565b34801561049c57600080fd5b506102b961130b565b3480156104b157600080fd5b506104436113b1565b3480156104c657600080fd5b5061028c6113cd565b3480156104db57600080fd5b5061028c6104ea366004612b83565b6113d3565b3480156104fb57600080fd5b506102b961050a366004612b83565b611489565b34801561051b57600080fd5b506102b961052a366004612d23565b6115dd565b34801561053b57600080fd5b5061028c611633565b34801561055057600080fd5b506102b9611639565b34801561056557600080fd5b50610443611739565b34801561057a57600080fd5b5061028c611755565b34801561058f57600080fd5b5061028c61059e366004612bad565b61175b565b3480156105af57600080fd5b506102b96105be366004612d23565b611bc7565b3480156105cf57600080fd5b5061028c611ebf565b3480156105e457600080fd5b506105f86105f3366004612d3b565b611ecb565b60405161026e9190613b75565b34801561061157600080fd5b506102b9610620366004612d23565b611f39565b34801561063157600080fd5b506102b9610640366004612d23565b611f8f565b6102b9610653366004612d23565b611fe5565b600a60208190526000918252604090912080546001820154600283015460078401546008850154600986015496860154600b90960154949673ffffffffffffffffffffffffffffffffffffffff90941695929491939092909160ff8082169161010090041689565b60045481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061387c565b60405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9390931692909217909155600755565b6040518060400160405280600e81526020017f436861696e20476f7665726e6f7200000000000000000000000000000000000081525081565b6107af338383612219565b5050565b600b6020526000908152604090205481565b6040516107d190612fe2565b604051809103902081565b60085473ffffffffffffffffffffffffffffffffffffffff16331461082d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613468565b60055460405173ffffffffffffffffffffffffffffffffffffffff90911690630825f38f9082906000906108659087906020016130a6565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161089494939291906130c7565b600060405180830381600087803b1580156108ae57600080fd5b505af11580156108c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109089190810190612cad565b50604051819073ffffffffffffffffffffffffffffffffffffffff84169033907f6912fbd96b1ad063d5747a1b9433e227f05190a443b8d78653ef13689d83d6d090600090a45050565b60005481565b60055473ffffffffffffffffffffffffffffffffffffffff1633146109a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061387c565b600255565b6060806060806000600a600087815260200190815260200160002090508060030181600401826005018360060183805480602002602001604051908101604052809291908181526020018280548015610a3d57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a12575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610a8f57602002820191906000526020600020905b815481526020019060010190808311610a7b575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610b805760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015610b6c5780601f10610b4157610100808354040283529160200191610b6c565b820191906000526020600020905b815481529060010190602001808311610b4f57829003601f168201915b505050505081526020019060010190610ab7565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610c705760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015610c5c5780601f10610c3157610100808354040283529160200191610c5c565b820191906000526020600020905b815481529060010190602001808311610c3f57829003601f168201915b505050505081526020019060010190610ba7565b5050505090509450945094509450509193509193565b60035481565b60075481565b60008160095410158015610ca65750600082115b610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906134eb565b6000828152600a60205260409020600b81015460ff1615610d01576002915050610e4a565b80600701544311610d16576000915050610e4a565b80600801544311610d2b576001915050610e4a565b80600a01548160090154111580610d4757506000548160090154105b15610d56576003915050610e4a565b6002810154610d69576004915050610e4a565b600b810154610100900460ff1615610d85576007915050610e4a565b6002810154600554604080517fc1a287e20000000000000000000000000000000000000000000000000000000081529051610e34939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b158015610df757600080fd5b505afa158015610e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2f9190810190612c95565b6123bb565b4210610e44576006915050610e4a565b60059150505b919050565b6000610e5a82610c92565b90506007816007811115610e6a57fe5b1415610ea2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613a27565b6000828152600a6020526040902060085473ffffffffffffffffffffffffffffffffffffffff16331480610f00575060018054908201546007830154610efe9173ffffffffffffffffffffffffffffffffffffffff16906113d3565b105b610f36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061373f565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b600382015481101561107a5760055460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610fa557fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610fda57fe5b9060005260206000200154856005018581548110610ff457fe5b9060005260206000200186600601868154811061100d57fe5b9060005260206000200187600201546040518663ffffffff1660e01b815260040161103c9594939291906131d0565b600060405180830381600087803b15801561105657600080fd5b505af115801561106a573d6000803e3d6000fd5b505060019092019150610f669050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c836040516110aa919061326e565b60405180910390a1505050565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60006040516110e190612fe2565b60408051918290038220828201909152600e82527f436861696e20476f7665726e6f720000000000000000000000000000000000006020909201919091527f8a978a11f76c43af6b43f115dd55c000b4382d9f05d80ca2971564bf6c703d7c6111486123fa565b3060405160200161115c9493929190613277565b604051602081830303815290604052805190602001209050600060405161118290613057565b60405190819003812061119b91899089906020016132a8565b604051602081830303815290604052805190602001209050600082826040516020016111c8929190612fac565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161120594939291906132c0565b6020604051602081039080840390855afa158015611227573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906139ca565b6112aa818a8a612219565b505050505050505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061387c565b600455565b60085473ffffffffffffffffffffffffffffffffffffffff16331461135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613b18565b600880547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405133907fd11e8cdeeb58b92f9f1d805a329d8a50f6651c7cd62c84aa5e724063f14786a490600090a2565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6006546007546040517fc418441c00000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163c418441c91611430919087908790600401613c3b565b60206040518083038186803b15801561144857600080fd5b505afa15801561145c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114809190810190612c95565b90505b92915050565b60085473ffffffffffffffffffffffffffffffffffffffff1633146114da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906135a5565b60055460405173ffffffffffffffffffffffffffffffffffffffff90911690633a66f9019082906000906115129087906020016130a6565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161154194939291906130c7565b602060405180830381600087803b15801561155b57600080fd5b505af115801561156f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115939190810190612c95565b50604051819073ffffffffffffffffffffffffffffffffffffffff84169033907f23de49979a1289947e1e39451d8d20ad656a4809680ecbba6fdb560b5b51cd7290600090a45050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461162e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061387c565b600055565b60015481565b60085473ffffffffffffffffffffffffffffffffffffffff16331461168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613305565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e18b6816040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116f457600080fd5b505af1158015611708573d6000803e3d6000fd5b50506040513392507fce0b9b30b1b49e92f89a5f13582d8953787518fc538ec05dbeee71abdba947e29150600090a2565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b600060015461176f336104ea4360016123ff565b10156117a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061396d565b845186511480156117b9575083518651145b80156117c6575082518651145b6117fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906136bc565b8551611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613910565b60025486511115611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613628565b336000908152600b6020526040902054801561192257600061189282610c92565b905060018160078111156118a257fe5b14156118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061379c565b60008160078111156118e857fe5b1415611920576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906138b3565b505b6000611930436003546123bb565b90506000611940826004546123bb565b60098054600101905590506119536125ed565b604051806101a0016040528060095481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a8152602001898152602001888152602001848152602001838152602001600081526020016000815260200160001515815260200160001515815250905080600a6000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611a5d92919061266f565b5060808201518051611a799160048401916020909101906126f9565b5060a08201518051611a95916005840191602090910190612740565b5060c08201518051611ab1916006840191602090910190612799565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff0219169083151502179055509050508060000151600b6000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e604051611bb199989796959493929190613b9a565b60405180910390a1519998505050505050505050565b6004611bd282610c92565b6007811115611bdd57fe5b14611c14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613362565b6000818152600a6020908152604080832060055482517f6a42b8f80000000000000000000000000000000000000000000000000000000081529251919493611c9493429373ffffffffffffffffffffffffffffffffffffffff90931692636a42b8f892600480840193919291829003018186803b158015610df757600080fd5b905060005b6003830154811015611e8557611e7d836003018281548110611cb757fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169184908110611cec57fe5b9060005260206000200154856005018481548110611d0657fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015611db25780601f10611d8757610100808354040283529160200191611db2565b820191906000526020600020905b815481529060010190602001808311611d9557829003601f168201915b5050505050866006018581548110611dc657fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015611e725780601f10611e4757610100808354040283529160200191611e72565b820191906000526020600020905b815481529060010190602001808311611e5557829003601f168201915b505050505086612441565b600101611c99565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892906110aa9085908490613cc0565b6040516107d190613057565b611ed36127f2565b506000918252600a6020908152604080842073ffffffffffffffffffffffffffffffffffffffff939093168452600c9092018152918190208151606081018352815460ff8082161515835261010090910416151593810193909352600101549082015290565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061387c565b600355565b60055473ffffffffffffffffffffffffffffffffffffffff163314611fe0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061387c565b600155565b6005611ff082610c92565b6007811115611ffb57fe5b14612032576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906133e5565b6000818152600a60205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b60038201548110156121dd5760055460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f9190849081106120af57fe5b90600052602060002001548460030184815481106120c957fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff90921691869081106120fe57fe5b906000526020600020015486600501868154811061211857fe5b9060005260206000200187600601878154811061213157fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016121609594939291906131d0565b6000604051808303818588803b15801561217957600080fd5b505af115801561218d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526121d49190810190612cad565b50600101612070565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161220d919061326e565b60405180910390a15050565b600161222483610c92565b600781111561222f57fe5b14612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613a84565b6000828152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff16156122d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613548565b60006122e68684600701546113d3565b90508315612306576122fc8360090154826123bb565b600984015561231a565b61231483600a0154826123bb565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911681177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c46906123ab908890889088908690613141565b60405180910390a1505050505050565b600082820183811015611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613685565b465b90565b60008282111561243b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613ae1565b50900390565b60055460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b065379061247c9088908890889088908890602001613176565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016124ae919061326e565b60206040518083038186803b1580156124c657600080fd5b505afa1580156124da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124fe9190810190612c79565b15612535576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610717906137f9565b6005546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f901906125939088908890889088908890600401613176565b602060405180830381600087803b1580156125ad57600080fd5b505af11580156125c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125e59190810190612c95565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b8280548282559060005260206000209081019282156126e9579160200282015b828111156126e957825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061268f565b506126f5929150612812565b5090565b828054828255906000526020600020908101928215612734579160200282015b82811115612734578251825591602001919060010190612719565b506126f592915061284e565b82805482825590600052602060002090810192821561278d579160200282015b8281111561278d578251805161277d918491602090910190612868565b5091602001919060010190612760565b506126f59291506128d5565b8280548282559060005260206000209081019282156127e6579160200282015b828111156127e657825180516127d6918491602090910190612868565b50916020019190600101906127b9565b506126f59291506128f8565b604080516060810182526000808252602082018190529181019190915290565b6123fc91905b808211156126f55780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612818565b6123fc91905b808211156126f55760008155600101612854565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106128a957805160ff1916838001178555612734565b828001600101855582156127345791820182811115612734578251825591602001919060010190612719565b6123fc91905b808211156126f55760006128ef828261291b565b506001016128db565b6123fc91905b808211156126f5576000612912828261291b565b506001016128fe565b50805460018160011615610100020316600290046000825580601f10612941575061295f565b601f01602090049060005260206000209081019061295f919061284e565b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461148357600080fd5b600082601f830112612996578081fd5b81356129a96129a482613cf5565b613cce565b8181529150602080830190848101818402860182018710156129ca57600080fd5b60005b848110156129f1576129df8883612962565b845292820192908201906001016129cd565b505050505092915050565b600082601f830112612a0c578081fd5b8135612a1a6129a482613cf5565b8181529150602080830190840160005b83811015612a5757612a428760208435890101612b1a565b83526020928301929190910190600101612a2a565b5050505092915050565b600082601f830112612a71578081fd5b8135612a7f6129a482613cf5565b8181529150602080830190840160005b83811015612a5757612aa78760208435890101612b1a565b83526020928301929190910190600101612a8f565b600082601f830112612acc578081fd5b8135612ada6129a482613cf5565b818152915060208083019084810181840286018201871015612afb57600080fd5b60005b848110156129f157813584529282019290820190600101612afe565b600082601f830112612b2a578081fd5b8135612b386129a482613d15565b9150808252836020828501011115612b4f57600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215612b79578081fd5b6114808383612962565b60008060408385031215612b95578081fd5b612b9f8484612962565b946020939093013593505050565b600080600080600060a08688031215612bc4578081fd5b853567ffffffffffffffff80821115612bdb578283fd5b612be789838a01612986565b96506020880135915080821115612bfc578283fd5b612c0889838a01612abc565b95506040880135915080821115612c1d578283fd5b612c2989838a01612a61565b94506060880135915080821115612c3e578283fd5b612c4a89838a016129fc565b93506080880135915080821115612c5f578283fd5b50612c6c88828901612b1a565b9150509295509295909350565b600060208284031215612c8a578081fd5b815161148081613d87565b600060208284031215612ca6578081fd5b5051919050565b600060208284031215612cbe578081fd5b815167ffffffffffffffff811115612cd4578182fd5b80830184601f820112612ce5578283fd5b80519150612cf56129a483613d15565b828152856020848401011115612d09578384fd5b612d1a836020830160208501613d57565b95945050505050565b600060208284031215612d34578081fd5b5035919050565b60008060408385031215612d4d578182fd5b82359150612d5e8460208501612962565b90509250929050565b60008060408385031215612d79578182fd5b823591506020830135612d8b81613d87565b809150509250929050565b600080600080600060a08688031215612dad578283fd5b853594506020860135612dbf81613d87565b9350604086013560ff81168114612dd4578384fd5b94979396509394606081013594506080013592915050565b6000815180845260208401935060208301825b82811015612e3357815173ffffffffffffffffffffffffffffffffffffffff16865260209586019590910190600101612dff565b5093949350505050565b600081518084526020840193508360208202850160208501845b84811015612e85578383038852612e6f838351612ec2565b6020988901989093509190910190600101612e57565b50909695505050505050565b6000815180845260208401935060208301825b82811015612e33578151865260209586019590910190600101612ea4565b60008151808452612eda816020860160208601613d57565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600081546001811660008114612f295760018114612f6557612fa4565b607f600283041685527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082166020860152604085019250612fa4565b6002820480865284600052602060002060005b82811015612f9a5781546020828a010152600182019150602081019050612f78565b8701602001945050505b505092915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430190565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8616825284602083015260a06040830152601860a08301527f73657450656e64696e6741646d696e286164647265737329000000000000000060c083015260e0606083015261313060e0830185612ec2565b905082608083015295945050505050565b73ffffffffffffffffffffffffffffffffffffffff949094168452602084019290925215156040830152606082015260800190565b600073ffffffffffffffffffffffffffffffffffffffff8716825285602083015260a060408301526131ab60a0830186612ec2565b82810360608401526131bd8186612ec2565b9150508260808301529695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8716825285602083015260a0604083015261320560a0830186612f0c565b82810360608401526131bd8186612f0c565b60006080825261322a6080830187612dec565b828103602084015261323c8187612e91565b838103604085015261324e8187612e3d565b91505082810360608401526132638185612e3d565b979650505050505050565b90815260200190565b9384526020840192909252604083015273ffffffffffffffffffffffffffffffffffffffff16606082015260800190565b92835260208301919091521515604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b60208101600883106132ec57fe5b91905290565b6000602082526114806020830184612ec2565b60208082526039908201527f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736560408201527f6e646572206d75737420626520676f7620677561726469616e00000000000000606082015260800190565b60208082526044908201527f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206360408201527f616e206f6e6c792062652071756575656420696620697420697320737563636560608201527f6564656400000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526045908201527f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c60408201527f2063616e206f6e6c79206265206578656375746564206966206974206973207160608201527f7565756564000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252604c908201527f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c60408201527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060608201527f676f7620677561726469616e0000000000000000000000000000000000000000608082015260a00190565b60208082526029908201527f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707260408201527f6f706f73616c2069640000000000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722060408201527f616c726561647920766f74656400000000000000000000000000000000000000606082015260800190565b6020808252604a908201527f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6360408201527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f60608201527f7620677561726469616e00000000000000000000000000000000000000000000608082015260a00190565b60208082526028908201527f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7960408201527f20616374696f6e73000000000000000000000000000000000000000000000000606082015260800190565b60208082526011908201527f6164646974696f6e206f766572666c6f77000000000000000000000000000000604082015260600190565b60208082526044908201527f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c60408201527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60608201527f6174636800000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602f908201527f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722060408201527f61626f7665207468726573686f6c640000000000000000000000000000000000606082015260800190565b60208082526038908201527f476f7665726e6f72416c7068613a3a70726f706f73653a20666f756e6420616e60408201527f20616c7265616479206163746976652070726f706f73616c0000000000000000606082015260800190565b60208082526044908201527f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207060408201527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460608201527f2065746100000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252601c908201527f476f7665726e6f72416c7068613a204f6e6c792054696d656c6f636b00000000604082015260600190565b60208082526039908201527f476f7665726e6f72416c7068613a3a70726f706f73653a20666f756e6420616e60408201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000606082015260800190565b6020808252602c908201527f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f60408201527f7669646520616374696f6e730000000000000000000000000000000000000000606082015260800190565b6020808252603f908201527f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657260408201527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400606082015260800190565b6020808252602f908201527f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e60408201527f76616c6964207369676e61747572650000000000000000000000000000000000606082015260800190565b60208082526036908201527f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636160408201527f6e63656c2065786563757465642070726f706f73616c00000000000000000000606082015260800190565b6020808252602a908201527f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6760408201527f20697320636c6f73656400000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f7375627472616374696f6e20756e646572666c6f770000000000000000000000604082015260600190565b60208082526036908201527f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e646560408201527f72206d75737420626520676f7620677561726469616e00000000000000000000606082015260800190565b8151151581526020808301511515908201526040918201519181019190915260600190565b60006101208b835273ffffffffffffffffffffffffffffffffffffffff8b166020840152806040840152613bd08184018b612dec565b8381036060850152613be2818b612e91565b9150508281036080840152613bf78189612e3d565b83810360a0850152613c098189612e3d565b9150508560c08401528460e0840152828103610100840152613c2b8185612ec2565b9c9b505050505050505050505050565b92835273ffffffffffffffffffffffffffffffffffffffff919091166020830152604082015260600190565b98895273ffffffffffffffffffffffffffffffffffffffff97909716602089015260408801959095526060870193909352608086019190915260a085015260c0840152151560e083015215156101008201526101200190565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715613ced57600080fd5b604052919050565b600067ffffffffffffffff821115613d0b578081fd5b5060209081020190565b600067ffffffffffffffff821115613d2b578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015613d72578181015183820152602001613d5a565b83811115613d81576000848401525b50505050565b801515811461295f57600080fdfea365627a7a723158203c1862f21ea4cd36330f7853ba8f78ebaebd93acfc54d408ba3e8528987d48cc6c6578706572696d656e74616cf564736f6c63430005100040
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.