Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0.058567458945817872 ETH
Eth Value
$233.91 (@ $3,993.89/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,467 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Cast Vote | 12240004 | 1332 days ago | IN | 0 ETH | 0.00301658 | ||||
Cast Vote | 12239482 | 1332 days ago | IN | 0 ETH | 0.00370608 | ||||
Cast Vote | 12239336 | 1332 days ago | IN | 0 ETH | 0.00299503 | ||||
Cast Vote | 12239176 | 1332 days ago | IN | 0 ETH | 0.00380935 | ||||
Cast Vote | 12238933 | 1332 days ago | IN | 0 ETH | 0.00422492 | ||||
Cast Vote | 12236170 | 1332 days ago | IN | 0 ETH | 0.00235487 | ||||
Cast Vote | 12236115 | 1332 days ago | IN | 0 ETH | 0.0024703 | ||||
Execute | 12140390 | 1347 days ago | IN | 0 ETH | 0.06429135 | ||||
Queue | 12127223 | 1349 days ago | IN | 0 ETH | 0.02936656 | ||||
Cast Vote | 12126254 | 1349 days ago | IN | 0 ETH | 0.00536639 | ||||
Cast Vote | 12125670 | 1349 days ago | IN | 0 ETH | 0.0096595 | ||||
Cast Vote | 12120283 | 1350 days ago | IN | 0 ETH | 0.0096595 | ||||
Cast Vote | 12119894 | 1350 days ago | IN | 0 ETH | 0.00556673 | ||||
Cast Vote | 12117858 | 1351 days ago | IN | 0 ETH | 0.0096595 | ||||
Cast Vote | 12117727 | 1351 days ago | IN | 0 ETH | 0.00896502 | ||||
Cast Vote | 12117248 | 1351 days ago | IN | 0 ETH | 0.00694436 | ||||
Cast Vote | 12116681 | 1351 days ago | IN | 0 ETH | 0.00757608 | ||||
Cast Vote | 12116639 | 1351 days ago | IN | 0 ETH | 0.00912286 | ||||
Cast Vote | 12116578 | 1351 days ago | IN | 0 ETH | 0.01287933 | ||||
Cast Vote | 12115576 | 1351 days ago | IN | 0 ETH | 0.0096595 | ||||
Cast Vote | 12115411 | 1351 days ago | IN | 0 ETH | 0.01073909 | ||||
Cast Vote | 12115152 | 1351 days ago | IN | 0 ETH | 0.00833368 | ||||
Cast Vote | 12115107 | 1351 days ago | IN | 0 ETH | 0.0096595 | ||||
Cast Vote | 12115096 | 1351 days ago | IN | 0 ETH | 0.00912286 | ||||
Cast Vote | 12115080 | 1351 days ago | IN | 0 ETH | 0.00768433 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
GovernorAlpha
Compiler Version
v0.5.16+commit.9c3226ce
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-03-04 */ pragma solidity ^0.5.16; pragma experimental ABIEncoderV2; contract GovernorAlpha { /// @notice The name of this contract string public constant name = "Compound Governor Alpha"; /// @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 function quorumVotes() public pure returns (uint) { return 400000e18; } // 400,000 = 4% of Comp /// @notice The number of votes required in order for a voter to become a proposer function proposalThreshold() public pure returns (uint) { return 100000e18; } // 100,000 = 1% of Comp /// @notice The maximum number of actions that can be included in a proposal function proposalMaxOperations() public pure returns (uint) { return 10; } // 10 actions /// @notice The delay before voting on a proposal may take place, once proposed function votingDelay() public pure returns (uint) { return 1; } // 1 block /// @notice The duration of voting on a proposal, in blocks function votingPeriod() public pure returns (uint) { return 17280; } // ~3 days in blocks (assuming 15s blocks) /// @notice The address of the Compound Protocol Timelock TimelockInterface public timelock; /// @notice The address of the Compound governance token CompInterface public comp; /// @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 uint96 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); constructor(address timelock_, address comp_, address guardian_) public { timelock = TimelockInterface(timelock_); comp = CompInterface(comp_); guardian = guardian_; } function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) public returns (uint) { require(comp.getPriorVotes(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: one live proposal per proposer, found an already active proposal"); require(proposersLatestProposalState != ProposalState.Pending, "GovernorAlpha::propose: one live proposal per proposer, 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 || comp.getPriorVotes(proposal.proposer, sub256(block.number, 1)) < 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"); uint96 votes = comp.getPriorVotes(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(); } function __abdicate() public { require(msg.sender == guardian, "GovernorAlpha::__abdicate: sender must be gov guardian"); guardian = address(0); } 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); } 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); } 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; } } 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 CompInterface { function getPriorVotes(address account, uint blockNumber) external view returns (uint96); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"timelock_","type":"address"},{"internalType":"address","name":"comp_","type":"address"},{"internalType":"address","name":"guardian_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":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":true,"inputs":[],"name":"comp","outputs":[{"internalType":"contract CompInterface","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":"uint96","name":"votes","type":"uint96"}],"internalType":"struct GovernorAlpha.Receipt","name":"","type":"tuple"}],"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":"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":"pure","type":"function"},{"constant":true,"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","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":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum GovernorAlpha.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":"pure","type":"function"},{"constant":true,"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200391d3803806200391d83398101604081905262000034916200008a565b600080546001600160a01b039485166001600160a01b0319918216179091556001805493851693821693909317909255600280549190931691161790556200010a565b80516200008481620000f0565b92915050565b600080600060608486031215620000a057600080fd5b6000620000ae868662000077565b9350506020620000c18682870162000077565b9250506040620000d48682870162000077565b9150509250925092565b60006001600160a01b03821662000084565b620000fb81620000de565b81146200010757600080fd5b50565b613803806200011a6000396000f3fe60806040526004361061019c5760003560e01c8063452a9320116100ec578063d33219b41161008a578063ddf0b00911610064578063ddf0b00914610463578063deaaa7cc14610483578063e23a9a5214610498578063fe0d94c1146104c55761019c565b8063d33219b414610419578063da35c6641461042e578063da95691a146104435761019c565b80637bdbe4d0116100c65780637bdbe4d0146103ba57806391500671146103cf578063b58131b0146103ef578063b9a61961146104045761019c565b8063452a9320146103635780634634c61f14610385578063760fbc13146103a55761019c565b806320606b7011610159578063328dd98211610133578063328dd982146102d15780633932abb1146103015780633e4f49e61461031657806340e58ee5146103435761019c565b806320606b701461028757806321f43e421461029c57806324bc1a64146102bc5761019c565b8063013cf08b146101a157806302a251a3146101df57806306fdde0314610201578063109d0af81461022357806315373e3d1461024557806317977c6114610267575b600080fd5b3480156101ad57600080fd5b506101c16101bc366004612449565b6104d8565b6040516101d6999897969594939291906135ae565b60405180910390f35b3480156101eb57600080fd5b506101f4610531565b6040516101d691906132db565b34801561020d57600080fd5b50610216610538565b6040516101d69190613397565b34801561022f57600080fd5b5061023861056b565b6040516101d6919061337b565b34801561025157600080fd5b50610265610260366004612497565b61057a565b005b34801561027357600080fd5b506101f461028236600461228c565b610589565b34801561029357600080fd5b506101f461059b565b3480156102a857600080fd5b506102656102b73660046122b2565b6105b2565b3480156102c857600080fd5b506101f4610699565b3480156102dd57600080fd5b506102f16102ec366004612449565b6106a7565b6040516101d6949392919061328e565b34801561030d57600080fd5b506101f4610936565b34801561032257600080fd5b50610336610331366004612449565b61093b565b6040516101d69190613389565b34801561034f57600080fd5b5061026561035e366004612449565b610abd565b34801561036f57600080fd5b50610378610d26565b6040516101d69190613138565b34801561039157600080fd5b506102656103a03660046124c7565b610d35565b3480156103b157600080fd5b50610265610ecc565b3480156103c657600080fd5b506101f4610f08565b3480156103db57600080fd5b506102656103ea3660046122b2565b610f0d565b3480156103fb57600080fd5b506101f4610fe2565b34801561041057600080fd5b50610265610ff0565b34801561042557600080fd5b50610238611075565b34801561043a57600080fd5b506101f4611084565b34801561044f57600080fd5b506101f461045e3660046122ec565b61108a565b34801561046f57600080fd5b5061026561047e366004612449565b6114ac565b34801561048f57600080fd5b506101f4611716565b3480156104a457600080fd5b506104b86104b3366004612467565b611722565b6040516101d691906134f8565b6102656104d3366004612449565b611791565b6004602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b9097015495966001600160a01b0390951695939492939192909160ff8082169161010090041689565b6143805b90565b60405180604001604052806017815260200176436f6d706f756e6420476f7665726e6f7220416c70686160481b81525081565b6001546001600160a01b031681565b610585338383611956565b5050565b60056020526000908152604090205481565b6040516105a790613122565b604051809103902081565b6002546001600160a01b031633146105e55760405162461bcd60e51b81526004016105dc906133d8565b60405180910390fd5b600080546040516001600160a01b0390911691630825f38f9183919061060f908790602001613138565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161063e9493929190613161565b600060405180830381600087803b15801561065857600080fd5b505af115801561066c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106949190810190612414565b505050565b6954b40b1f852bda00000090565b6060806060806000600460008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561072957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161070b575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561077b57602002820191906000526020600020905b815481526020019060010190808311610767575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561084e5760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561083a5780601f1061080f5761010080835404028352916020019161083a565b820191906000526020600020905b81548152906001019060200180831161081d57829003601f168201915b5050505050815260200190600101906107a3565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156109205760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561090c5780601f106108e15761010080835404028352916020019161090c565b820191906000526020600020905b8154815290600101906020018083116108ef57829003601f168201915b505050505081526020019060010190610875565b5050505090509450945094509450509193509193565b600190565b6000816003541015801561094f5750600082115b61096b5760405162461bcd60e51b81526004016105dc906133e8565b6000828152600460205260409020600b81015460ff1615610990576002915050610ab8565b806007015443116109a5576000915050610ab8565b806008015443116109ba576001915050610ab8565b80600a015481600901541115806109db57506109d4610699565b8160090154105b156109ea576003915050610ab8565b60028101546109fd576004915050610ab8565b600b810154610100900460ff1615610a19576007915050610ab8565b6002810154600054604080516360d143f160e11b81529051610aa293926001600160a01b03169163c1a287e2916004808301926020929190829003018186803b158015610a6557600080fd5b505afa158015610a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a9d91908101906123f6565b611b1f565b4210610ab2576006915050610ab8565b60059150505b919050565b6000610ac88261093b565b90506007816007811115610ad857fe5b1415610af65760405162461bcd60e51b81526004016105dc906134b8565b60008281526004602052604090206002546001600160a01b0316331480610bc15750610b20610fe2565b60018054838201546001600160a01b039182169263782d6fe19290911690610b49904390611b4b565b6040518363ffffffff1660e01b8152600401610b669291906131b0565b60206040518083038186803b158015610b7e57600080fd5b505afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bb6919081019061252f565b6001600160601b0316105b610bdd5760405162461bcd60e51b81526004016105dc90613458565b600b8101805460ff1916600117905560005b6003820154811015610ce9576000546003830180546001600160a01b039092169163591fcdfe919084908110610c2157fe5b6000918252602090912001546004850180546001600160a01b039092169185908110610c4957fe5b9060005260206000200154856005018581548110610c6357fe5b90600052602060002001866006018681548110610c7c57fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610cab95949392919061324d565b600060405180830381600087803b158015610cc557600080fd5b505af1158015610cd9573d6000803e3d6000fd5b505060019092019150610bef9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610d1991906132db565b60405180910390a1505050565b6002546001600160a01b031681565b6000604051610d4390613122565b604080519182900382208282019091526017825276436f6d706f756e6420476f7665726e6f7220416c70686160481b6020909201919091527ff5eb22c2e7100465020c98b00537528808db4fec6eb24c550685a92742247bc5610da4611b73565b30604051602001610db894939291906132e9565b6040516020818303038152906040528051906020012090506000604051610dde9061312d565b604051908190038120610df7918990899060200161331e565b60405160208183030381529060405280519060200120905060008282604051602001610e249291906130f1565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610e619493929190613346565b6020604051602081039080840390855afa158015610e83573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610eb65760405162461bcd60e51b81526004016105dc90613498565b610ec1818a8a611956565b505050505050505050565b6002546001600160a01b03163314610ef65760405162461bcd60e51b81526004016105dc906134e8565b600280546001600160a01b0319169055565b600a90565b6002546001600160a01b03163314610f375760405162461bcd60e51b81526004016105dc90613418565b600080546040516001600160a01b0390911691633a66f90191839190610f61908790602001613138565b604051602081830303815290604052856040518563ffffffff1660e01b8152600401610f909493929190613161565b602060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061069491908101906123f6565b69152d02c7e14af680000090565b6002546001600160a01b0316331461101a5760405162461bcd60e51b81526004016105dc906133a8565b6000805460408051630e18b68160e01b815290516001600160a01b0390921692630e18b6819260048084019382900301818387803b15801561105b57600080fd5b505af115801561106f573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60035481565b6000611094610fe2565b600180546001600160a01b03169063782d6fe19033906110b5904390611b4b565b6040518363ffffffff1660e01b81526004016110d2929190613146565b60206040518083038186803b1580156110ea57600080fd5b505afa1580156110fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611122919081019061252f565b6001600160601b0316116111485760405162461bcd60e51b81526004016105dc90613488565b8451865114801561115a575083518651145b8015611167575082518651145b6111835760405162461bcd60e51b81526004016105dc90613448565b85516111a15760405162461bcd60e51b81526004016105dc90613478565b6111a9610f08565b865111156111c95760405162461bcd60e51b81526004016105dc90613428565b3360009081526005602052604090205480156112465760006111ea8261093b565b905060018160078111156111fa57fe5b14156112185760405162461bcd60e51b81526004016105dc906134a8565b600081600781111561122657fe5b14156112445760405162461bcd60e51b81526004016105dc90613408565b505b600061125443610a9d610936565b9050600061126482610a9d610531565b6003805460010190559050611277611cd6565b604051806101a001604052806003548152602001336001600160a01b03168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060046000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301908051906020019061135a929190611d4b565b5060808201518051611376916004840191602090910190611db0565b5060a08201518051611392916005840191602090910190611df7565b5060c082015180516113ae916006840191602090910190611e50565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff02191690831515021790555090505080600001516005600083602001516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161149499989796959493929190613506565b60405180910390a15193505050505b95945050505050565b60046114b78261093b565b60078111156114c257fe5b146114df5760405162461bcd60e51b81526004016105dc906133b8565b600081815260046020818152604080842084548251630d48571f60e31b815292519195946115349442946001600160a01b0390931693636a42b8f8938084019390829003018186803b158015610a6557600080fd5b905060005b60038301548110156116dc576116d483600301828154811061155757fe5b6000918252602090912001546004850180546001600160a01b03909216918490811061157f57fe5b906000526020600020015485600501848154811061159957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116275780601f106115fc57610100808354040283529160200191611627565b820191906000526020600020905b81548152906001019060200180831161160a57829003601f168201915b505050505086600601858154811061163b57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116c95780601f1061169e576101008083540402835291602001916116c9565b820191906000526020600020905b8154815290600101906020018083116116ac57829003601f168201915b505050505086611b77565b600101611539565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610d199085908490613634565b6040516105a79061312d565b61172a611ea9565b5060008281526004602090815260408083206001600160a01b0385168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046001600160601b0316918101919091525b92915050565b600561179c8261093b565b60078111156117a757fe5b146117c45760405162461bcd60e51b81526004016105dc906133c8565b6000818152600460205260408120600b8101805461ff001916610100179055905b600382015481101561191a576000546004830180546001600160a01b0390921691630825f38f91908490811061181757fe5b906000526020600020015484600301848154811061183157fe5b6000918252602090912001546004860180546001600160a01b03909216918690811061185957fe5b906000526020600020015486600501868154811061187357fe5b9060005260206000200187600601878154811061188c57fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118bb95949392919061324d565b6000604051808303818588803b1580156118d457600080fd5b505af11580156118e8573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526119119190810190612414565b506001016117e5565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161194a91906132db565b60405180910390a15050565b60016119618361093b565b600781111561196c57fe5b146119895760405162461bcd60e51b81526004016105dc906134c8565b60008281526004602090815260408083206001600160a01b0387168452600c8101909252909120805460ff16156119d25760405162461bcd60e51b81526004016105dc906133f8565b600154600783015460405163782d6fe160e01b81526000926001600160a01b03169163782d6fe191611a08918a916004016131b0565b60206040518083038186803b158015611a2057600080fd5b505afa158015611a34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a58919081019061252f565b90508315611a8157611a778360090154826001600160601b0316611b1f565b6009840155611a9e565b611a9883600a0154826001600160601b0316611b1f565b600a8401555b8154600160ff199091161761ff00191661010085151502176dffffffffffffffffffffffff00001916620100006001600160601b038316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611b0f9088908890889086906131be565b60405180910390a1505050505050565b600082820183811015611b445760405162461bcd60e51b81526004016105dc90613438565b9392505050565b600082821115611b6d5760405162461bcd60e51b81526004016105dc906134d8565b50900390565b4690565b6000546040516001600160a01b039091169063f2b0653790611ba590889088908890889088906020016131f3565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611bd791906132db565b60206040518083038186803b158015611bef57600080fd5b505afa158015611c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c2791908101906123d8565b15611c445760405162461bcd60e51b81526004016105dc90613468565b600054604051633a66f90160e01b81526001600160a01b0390911690633a66f90190611c7c90889088908890889088906004016131f3565b602060405180830381600087803b158015611c9657600080fd5b505af1158015611caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cce91908101906123f6565b505050505050565b604051806101a001604052806000815260200160006001600160a01b031681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611da0579160200282015b82811115611da057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611d6b565b50611dac929150611ec9565b5090565b828054828255906000526020600020908101928215611deb579160200282015b82811115611deb578251825591602001919060010190611dd0565b50611dac929150611eed565b828054828255906000526020600020908101928215611e44579160200282015b82811115611e445782518051611e34918491602090910190611f07565b5091602001919060010190611e17565b50611dac929150611f74565b828054828255906000526020600020908101928215611e9d579160200282015b82811115611e9d5782518051611e8d918491602090910190611f07565b5091602001919060010190611e70565b50611dac929150611f97565b604080516060810182526000808252602082018190529181019190915290565b61053591905b80821115611dac5780546001600160a01b0319168155600101611ecf565b61053591905b80821115611dac5760008155600101611ef3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f4857805160ff1916838001178555611deb565b82800160010185558215611deb5791820182811115611deb578251825591602001919060010190611dd0565b61053591905b80821115611dac576000611f8e8282611fba565b50600101611f7a565b61053591905b80821115611dac576000611fb18282611fba565b50600101611f9d565b50805460018160011615610100020316600290046000825580601f10611fe05750611ffe565b601f016020900490600052602060002090810190611ffe9190611eed565b50565b803561178b81613788565b600082601f83011261201d57600080fd5b813561203061202b82613669565b613642565b9150818183526020840193506020810190508385602084028201111561205557600080fd5b60005b83811015612081578161206b8882612001565b8452506020928301929190910190600101612058565b5050505092915050565b600082601f83011261209c57600080fd5b81356120aa61202b82613669565b81815260209384019390925082018360005b8381101561208157813586016120d288826121e1565b84525060209283019291909101906001016120bc565b600082601f8301126120f957600080fd5b813561210761202b82613669565b81815260209384019390925082018360005b83811015612081578135860161212f88826121e1565b8452506020928301929190910190600101612119565b600082601f83011261215657600080fd5b813561216461202b82613669565b9150818183526020840193506020810190508385602084028201111561218957600080fd5b60005b83811015612081578161219f88826121cb565b845250602092830192919091019060010161218c565b803561178b8161379c565b805161178b8161379c565b803561178b816137a5565b805161178b816137a5565b600082601f8301126121f257600080fd5b813561220061202b8261368a565b9150808252602083016020830185838301111561221c57600080fd5b61222783828461373c565b50505092915050565b600082601f83011261224157600080fd5b815161224f61202b8261368a565b9150808252602083016020830185838301111561226b57600080fd5b612227838284613748565b803561178b816137ae565b805161178b816137b7565b60006020828403121561229e57600080fd5b60006122aa8484612001565b949350505050565b600080604083850312156122c557600080fd5b60006122d18585612001565b92505060206122e2858286016121cb565b9150509250929050565b600080600080600060a0868803121561230457600080fd5b853567ffffffffffffffff81111561231b57600080fd5b6123278882890161200c565b955050602086013567ffffffffffffffff81111561234457600080fd5b61235088828901612145565b945050604086013567ffffffffffffffff81111561236d57600080fd5b612379888289016120e8565b935050606086013567ffffffffffffffff81111561239657600080fd5b6123a28882890161208b565b925050608086013567ffffffffffffffff8111156123bf57600080fd5b6123cb888289016121e1565b9150509295509295909350565b6000602082840312156123ea57600080fd5b60006122aa84846121c0565b60006020828403121561240857600080fd5b60006122aa84846121d6565b60006020828403121561242657600080fd5b815167ffffffffffffffff81111561243d57600080fd5b6122aa84828501612230565b60006020828403121561245b57600080fd5b60006122aa84846121cb565b6000806040838503121561247a57600080fd5b600061248685856121cb565b92505060206122e285828601612001565b600080604083850312156124aa57600080fd5b60006124b685856121cb565b92505060206122e2858286016121b5565b600080600080600060a086880312156124df57600080fd5b60006124eb88886121cb565b95505060206124fc888289016121b5565b945050604061250d88828901612276565b935050606061251e888289016121cb565b92505060806123cb888289016121cb565b60006020828403121561254157600080fd5b60006122aa8484612281565b60006125598383612588565b505060200190565b6000611b44838361272a565b60006125598383612710565b61258281613709565b82525050565b612582816136d1565b600061259c826136c4565b6125a681856136c8565b93506125b1836136b2565b8060005b838110156125df5781516125c9888261254d565b97506125d4836136b2565b9250506001016125b5565b509495945050505050565b60006125f5826136c4565b6125ff81856136c8565b935083602082028501612611856136b2565b8060005b8581101561264b578484038952815161262e8582612561565b9450612639836136b2565b60209a909a0199925050600101612615565b5091979650505050505050565b6000612663826136c4565b61266d81856136c8565b93508360208202850161267f856136b2565b8060005b8581101561264b578484038952815161269c8582612561565b94506126a7836136b2565b60209a909a0199925050600101612683565b60006126c4826136c4565b6126ce81856136c8565b93506126d9836136b2565b8060005b838110156125df5781516126f1888261256d565b97506126fc836136b2565b9250506001016126dd565b612582816136dc565b61258281610535565b61258261272582610535565b610535565b6000612735826136c4565b61273f81856136c8565b935061274f818560208601613748565b61275881613774565b9093019392505050565b60008154600181166000811461277f57600181146127a5576127e4565b607f600283041661279081876136c8565b60ff19841681529550506020850192506127e4565b600282046127b381876136c8565b95506127be856136b8565b60005b828110156127dd578154888201526001909101906020016127c1565b8701945050505b505092915050565b61258281613710565b6125828161371b565b61258281613726565b60006128146039836136c8565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b60006128736044836136c8565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c79206265207175657565642069662069742069732073756363656020820152631959195960e21b604082015260600192915050565b60006128df6045836136c8565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c7920626520657865637574656420696620697420697320716020820152641d595d595960da1b604082015260600192915050565b600061294c600283610ab8565b61190160f01b815260020192915050565b600061296a604c836136c8565b7f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c81527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208201526b33b7bb1033bab0b93234b0b760a11b604082015260600192915050565b60006129de6018836136c8565b7f73657450656e64696e6741646d696e2861646472657373290000000000000000815260200192915050565b6000612a176029836136c8565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c69642070728152681bdc1bdcd85b081a5960ba1b602082015260400192915050565b6000612a62602d836136c8565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081526c185b1c9958591e481d9bdd1959609a1b602082015260400192915050565b6000612ab16059836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612b36604a836136c8565b7f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6381527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f6020820152693b1033bab0b93234b0b760b11b604082015260600192915050565b6000612ba86028836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981526720616374696f6e7360c01b602082015260400192915050565b6000612bf26011836136c8565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b6000612c1f604383610ab8565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000612c8a602783610ab8565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20738152667570706f72742960c81b602082015260270192915050565b6000612cd36044836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6020820152630c2e8c6d60e31b604082015260600192915050565b6000612d3f602f836136c8565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081526e18589bdd99481d1a1c995cda1bdb19608a1b602082015260400192915050565b6000612d906044836136c8565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c7265616479207175657565642061746020820152632065746160e01b604082015260600192915050565b6000612dfc602c836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81526b7669646520616374696f6e7360a01b602082015260400192915050565b6000612e4a603f836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612ea9602f836136c8565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81526e76616c6964207369676e617475726560881b602082015260400192915050565b6000612efa6058836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b6000612f7f6036836136c8565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f742063618152751b98d95b08195e1958dd5d1959081c1c9bdc1bdcd85b60521b602082015260400192915050565b6000612fd7602a836136c8565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e67815269081a5cc818db1bdcd95960b21b602082015260400192915050565b60006130236015836136c8565b747375627472616374696f6e20756e646572666c6f7760581b815260200192915050565b60006130546036836136c8565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e6465815275391036bab9ba1031329033b7bb1033bab0b93234b0b760511b602082015260400192915050565b805160608301906130b08482612707565b5060208201516130c36020850182612707565b50604082015161106f60408501826130e8565b612582816136f7565b61258281613731565b612582816136fd565b60006130fc8261293f565b91506131088285612719565b6020820191506131188284612719565b5060200192915050565b600061178b82612c12565b600061178b82612c7d565b6020810161178b8284612588565b604081016131548285612579565b611b446020830184612710565b60a0810161316f8287612588565b61317c60208301866127fe565b818103604083015261318d816129d1565b905081810360608301526131a1818561272a565b90506114a36080830184612710565b604081016131548285612588565b608081016131cc8287612588565b6131d96020830186612710565b6131e66040830185612707565b6114a360608301846130df565b60a081016132018288612588565b61320e6020830187612710565b8181036040830152613220818661272a565b90508181036060830152613234818561272a565b90506132436080830184612710565b9695505050505050565b60a0810161325b8288612588565b6132686020830187612710565b818103604083015261327a8186612762565b905081810360608301526132348185612762565b6080808252810161329f8187612591565b905081810360208301526132b381866126b9565b905081810360408301526132c78185612658565b9050818103606083015261324381846125ea565b6020810161178b8284612710565b608081016132f78287612710565b6133046020830186612710565b6133116040830185612710565b6114a36060830184612588565b6060810161332c8286612710565b6133396020830185612710565b6122aa6040830184612707565b608081016133548287612710565b61336160208301866130d6565b61336e6040830185612710565b6114a36060830184612710565b6020810161178b82846127ec565b6020810161178b82846127f5565b60208082528101611b44818461272a565b6020808252810161178b81612807565b6020808252810161178b81612866565b6020808252810161178b816128d2565b6020808252810161178b8161295d565b6020808252810161178b81612a0a565b6020808252810161178b81612a55565b6020808252810161178b81612aa4565b6020808252810161178b81612b29565b6020808252810161178b81612b9b565b6020808252810161178b81612be5565b6020808252810161178b81612cc6565b6020808252810161178b81612d32565b6020808252810161178b81612d83565b6020808252810161178b81612def565b6020808252810161178b81612e3d565b6020808252810161178b81612e9c565b6020808252810161178b81612eed565b6020808252810161178b81612f72565b6020808252810161178b81612fca565b6020808252810161178b81613016565b6020808252810161178b81613047565b6060810161178b828461309f565b6101208101613515828c612710565b613522602083018b612579565b8181036040830152613534818a612591565b9050818103606083015261354881896126b9565b9050818103608083015261355c8188612658565b905081810360a083015261357081876125ea565b905061357f60c0830186612710565b61358c60e0830185612710565b81810361010083015261359f818461272a565b9b9a5050505050505050505050565b61012081016135bd828c612710565b6135ca602083018b612588565b6135d7604083018a612710565b6135e46060830189612710565b6135f16080830188612710565b6135fe60a0830187612710565b61360b60c0830186612710565b61361860e0830185612707565b613626610100830184612707565b9a9950505050505050505050565b604081016131548285612710565b60405181810167ffffffffffffffff8111828210171561366157600080fd5b604052919050565b600067ffffffffffffffff82111561368057600080fd5b5060209081020190565b600067ffffffffffffffff8211156136a157600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061178b826136eb565b151590565b80610ab88161377e565b6001600160a01b031690565b60ff1690565b6001600160601b031690565b600061178b825b600061178b826136d1565b600061178b826136e1565b600061178b82610535565b600061178b826136fd565b82818337506000910152565b60005b8381101561376357818101518382015260200161374b565b8381111561106f5750506000910152565b601f01601f191690565b60088110611ffe57fe5b613791816136d1565b8114611ffe57600080fd5b613791816136dc565b61379181610535565b613791816136f7565b613791816136fd56fea365627a7a723158200b1f3bfa694b28c40703fd331d0cf089eeb7288b820578a7c1e0bc11f6d3d8f26c6578706572696d656e74616cf564736f6c634300051000400000000000000000000000006d903f6003cca6255d85cca4d3b5e5146dc33925000000000000000000000000c00e94cb662c3520282e6f5717214004a7f268880000000000000000000000008b8592e9570e96166336603a1b4bd1e8db20fa20
Deployed Bytecode
0x60806040526004361061019c5760003560e01c8063452a9320116100ec578063d33219b41161008a578063ddf0b00911610064578063ddf0b00914610463578063deaaa7cc14610483578063e23a9a5214610498578063fe0d94c1146104c55761019c565b8063d33219b414610419578063da35c6641461042e578063da95691a146104435761019c565b80637bdbe4d0116100c65780637bdbe4d0146103ba57806391500671146103cf578063b58131b0146103ef578063b9a61961146104045761019c565b8063452a9320146103635780634634c61f14610385578063760fbc13146103a55761019c565b806320606b7011610159578063328dd98211610133578063328dd982146102d15780633932abb1146103015780633e4f49e61461031657806340e58ee5146103435761019c565b806320606b701461028757806321f43e421461029c57806324bc1a64146102bc5761019c565b8063013cf08b146101a157806302a251a3146101df57806306fdde0314610201578063109d0af81461022357806315373e3d1461024557806317977c6114610267575b600080fd5b3480156101ad57600080fd5b506101c16101bc366004612449565b6104d8565b6040516101d6999897969594939291906135ae565b60405180910390f35b3480156101eb57600080fd5b506101f4610531565b6040516101d691906132db565b34801561020d57600080fd5b50610216610538565b6040516101d69190613397565b34801561022f57600080fd5b5061023861056b565b6040516101d6919061337b565b34801561025157600080fd5b50610265610260366004612497565b61057a565b005b34801561027357600080fd5b506101f461028236600461228c565b610589565b34801561029357600080fd5b506101f461059b565b3480156102a857600080fd5b506102656102b73660046122b2565b6105b2565b3480156102c857600080fd5b506101f4610699565b3480156102dd57600080fd5b506102f16102ec366004612449565b6106a7565b6040516101d6949392919061328e565b34801561030d57600080fd5b506101f4610936565b34801561032257600080fd5b50610336610331366004612449565b61093b565b6040516101d69190613389565b34801561034f57600080fd5b5061026561035e366004612449565b610abd565b34801561036f57600080fd5b50610378610d26565b6040516101d69190613138565b34801561039157600080fd5b506102656103a03660046124c7565b610d35565b3480156103b157600080fd5b50610265610ecc565b3480156103c657600080fd5b506101f4610f08565b3480156103db57600080fd5b506102656103ea3660046122b2565b610f0d565b3480156103fb57600080fd5b506101f4610fe2565b34801561041057600080fd5b50610265610ff0565b34801561042557600080fd5b50610238611075565b34801561043a57600080fd5b506101f4611084565b34801561044f57600080fd5b506101f461045e3660046122ec565b61108a565b34801561046f57600080fd5b5061026561047e366004612449565b6114ac565b34801561048f57600080fd5b506101f4611716565b3480156104a457600080fd5b506104b86104b3366004612467565b611722565b6040516101d691906134f8565b6102656104d3366004612449565b611791565b6004602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b9097015495966001600160a01b0390951695939492939192909160ff8082169161010090041689565b6143805b90565b60405180604001604052806017815260200176436f6d706f756e6420476f7665726e6f7220416c70686160481b81525081565b6001546001600160a01b031681565b610585338383611956565b5050565b60056020526000908152604090205481565b6040516105a790613122565b604051809103902081565b6002546001600160a01b031633146105e55760405162461bcd60e51b81526004016105dc906133d8565b60405180910390fd5b600080546040516001600160a01b0390911691630825f38f9183919061060f908790602001613138565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161063e9493929190613161565b600060405180830381600087803b15801561065857600080fd5b505af115801561066c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106949190810190612414565b505050565b6954b40b1f852bda00000090565b6060806060806000600460008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561072957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161070b575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561077b57602002820191906000526020600020905b815481526020019060010190808311610767575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561084e5760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561083a5780601f1061080f5761010080835404028352916020019161083a565b820191906000526020600020905b81548152906001019060200180831161081d57829003601f168201915b5050505050815260200190600101906107a3565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156109205760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561090c5780601f106108e15761010080835404028352916020019161090c565b820191906000526020600020905b8154815290600101906020018083116108ef57829003601f168201915b505050505081526020019060010190610875565b5050505090509450945094509450509193509193565b600190565b6000816003541015801561094f5750600082115b61096b5760405162461bcd60e51b81526004016105dc906133e8565b6000828152600460205260409020600b81015460ff1615610990576002915050610ab8565b806007015443116109a5576000915050610ab8565b806008015443116109ba576001915050610ab8565b80600a015481600901541115806109db57506109d4610699565b8160090154105b156109ea576003915050610ab8565b60028101546109fd576004915050610ab8565b600b810154610100900460ff1615610a19576007915050610ab8565b6002810154600054604080516360d143f160e11b81529051610aa293926001600160a01b03169163c1a287e2916004808301926020929190829003018186803b158015610a6557600080fd5b505afa158015610a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a9d91908101906123f6565b611b1f565b4210610ab2576006915050610ab8565b60059150505b919050565b6000610ac88261093b565b90506007816007811115610ad857fe5b1415610af65760405162461bcd60e51b81526004016105dc906134b8565b60008281526004602052604090206002546001600160a01b0316331480610bc15750610b20610fe2565b60018054838201546001600160a01b039182169263782d6fe19290911690610b49904390611b4b565b6040518363ffffffff1660e01b8152600401610b669291906131b0565b60206040518083038186803b158015610b7e57600080fd5b505afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bb6919081019061252f565b6001600160601b0316105b610bdd5760405162461bcd60e51b81526004016105dc90613458565b600b8101805460ff1916600117905560005b6003820154811015610ce9576000546003830180546001600160a01b039092169163591fcdfe919084908110610c2157fe5b6000918252602090912001546004850180546001600160a01b039092169185908110610c4957fe5b9060005260206000200154856005018581548110610c6357fe5b90600052602060002001866006018681548110610c7c57fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610cab95949392919061324d565b600060405180830381600087803b158015610cc557600080fd5b505af1158015610cd9573d6000803e3d6000fd5b505060019092019150610bef9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610d1991906132db565b60405180910390a1505050565b6002546001600160a01b031681565b6000604051610d4390613122565b604080519182900382208282019091526017825276436f6d706f756e6420476f7665726e6f7220416c70686160481b6020909201919091527ff5eb22c2e7100465020c98b00537528808db4fec6eb24c550685a92742247bc5610da4611b73565b30604051602001610db894939291906132e9565b6040516020818303038152906040528051906020012090506000604051610dde9061312d565b604051908190038120610df7918990899060200161331e565b60405160208183030381529060405280519060200120905060008282604051602001610e249291906130f1565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610e619493929190613346565b6020604051602081039080840390855afa158015610e83573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610eb65760405162461bcd60e51b81526004016105dc90613498565b610ec1818a8a611956565b505050505050505050565b6002546001600160a01b03163314610ef65760405162461bcd60e51b81526004016105dc906134e8565b600280546001600160a01b0319169055565b600a90565b6002546001600160a01b03163314610f375760405162461bcd60e51b81526004016105dc90613418565b600080546040516001600160a01b0390911691633a66f90191839190610f61908790602001613138565b604051602081830303815290604052856040518563ffffffff1660e01b8152600401610f909493929190613161565b602060405180830381600087803b158015610faa57600080fd5b505af1158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061069491908101906123f6565b69152d02c7e14af680000090565b6002546001600160a01b0316331461101a5760405162461bcd60e51b81526004016105dc906133a8565b6000805460408051630e18b68160e01b815290516001600160a01b0390921692630e18b6819260048084019382900301818387803b15801561105b57600080fd5b505af115801561106f573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60035481565b6000611094610fe2565b600180546001600160a01b03169063782d6fe19033906110b5904390611b4b565b6040518363ffffffff1660e01b81526004016110d2929190613146565b60206040518083038186803b1580156110ea57600080fd5b505afa1580156110fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611122919081019061252f565b6001600160601b0316116111485760405162461bcd60e51b81526004016105dc90613488565b8451865114801561115a575083518651145b8015611167575082518651145b6111835760405162461bcd60e51b81526004016105dc90613448565b85516111a15760405162461bcd60e51b81526004016105dc90613478565b6111a9610f08565b865111156111c95760405162461bcd60e51b81526004016105dc90613428565b3360009081526005602052604090205480156112465760006111ea8261093b565b905060018160078111156111fa57fe5b14156112185760405162461bcd60e51b81526004016105dc906134a8565b600081600781111561122657fe5b14156112445760405162461bcd60e51b81526004016105dc90613408565b505b600061125443610a9d610936565b9050600061126482610a9d610531565b6003805460010190559050611277611cd6565b604051806101a001604052806003548152602001336001600160a01b03168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060046000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301908051906020019061135a929190611d4b565b5060808201518051611376916004840191602090910190611db0565b5060a08201518051611392916005840191602090910190611df7565b5060c082015180516113ae916006840191602090910190611e50565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff02191690831515021790555090505080600001516005600083602001516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161149499989796959493929190613506565b60405180910390a15193505050505b95945050505050565b60046114b78261093b565b60078111156114c257fe5b146114df5760405162461bcd60e51b81526004016105dc906133b8565b600081815260046020818152604080842084548251630d48571f60e31b815292519195946115349442946001600160a01b0390931693636a42b8f8938084019390829003018186803b158015610a6557600080fd5b905060005b60038301548110156116dc576116d483600301828154811061155757fe5b6000918252602090912001546004850180546001600160a01b03909216918490811061157f57fe5b906000526020600020015485600501848154811061159957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116275780601f106115fc57610100808354040283529160200191611627565b820191906000526020600020905b81548152906001019060200180831161160a57829003601f168201915b505050505086600601858154811061163b57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116c95780601f1061169e576101008083540402835291602001916116c9565b820191906000526020600020905b8154815290600101906020018083116116ac57829003601f168201915b505050505086611b77565b600101611539565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610d199085908490613634565b6040516105a79061312d565b61172a611ea9565b5060008281526004602090815260408083206001600160a01b0385168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046001600160601b0316918101919091525b92915050565b600561179c8261093b565b60078111156117a757fe5b146117c45760405162461bcd60e51b81526004016105dc906133c8565b6000818152600460205260408120600b8101805461ff001916610100179055905b600382015481101561191a576000546004830180546001600160a01b0390921691630825f38f91908490811061181757fe5b906000526020600020015484600301848154811061183157fe5b6000918252602090912001546004860180546001600160a01b03909216918690811061185957fe5b906000526020600020015486600501868154811061187357fe5b9060005260206000200187600601878154811061188c57fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118bb95949392919061324d565b6000604051808303818588803b1580156118d457600080fd5b505af11580156118e8573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526119119190810190612414565b506001016117e5565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161194a91906132db565b60405180910390a15050565b60016119618361093b565b600781111561196c57fe5b146119895760405162461bcd60e51b81526004016105dc906134c8565b60008281526004602090815260408083206001600160a01b0387168452600c8101909252909120805460ff16156119d25760405162461bcd60e51b81526004016105dc906133f8565b600154600783015460405163782d6fe160e01b81526000926001600160a01b03169163782d6fe191611a08918a916004016131b0565b60206040518083038186803b158015611a2057600080fd5b505afa158015611a34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a58919081019061252f565b90508315611a8157611a778360090154826001600160601b0316611b1f565b6009840155611a9e565b611a9883600a0154826001600160601b0316611b1f565b600a8401555b8154600160ff199091161761ff00191661010085151502176dffffffffffffffffffffffff00001916620100006001600160601b038316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611b0f9088908890889086906131be565b60405180910390a1505050505050565b600082820183811015611b445760405162461bcd60e51b81526004016105dc90613438565b9392505050565b600082821115611b6d5760405162461bcd60e51b81526004016105dc906134d8565b50900390565b4690565b6000546040516001600160a01b039091169063f2b0653790611ba590889088908890889088906020016131f3565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611bd791906132db565b60206040518083038186803b158015611bef57600080fd5b505afa158015611c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c2791908101906123d8565b15611c445760405162461bcd60e51b81526004016105dc90613468565b600054604051633a66f90160e01b81526001600160a01b0390911690633a66f90190611c7c90889088908890889088906004016131f3565b602060405180830381600087803b158015611c9657600080fd5b505af1158015611caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cce91908101906123f6565b505050505050565b604051806101a001604052806000815260200160006001600160a01b031681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611da0579160200282015b82811115611da057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611d6b565b50611dac929150611ec9565b5090565b828054828255906000526020600020908101928215611deb579160200282015b82811115611deb578251825591602001919060010190611dd0565b50611dac929150611eed565b828054828255906000526020600020908101928215611e44579160200282015b82811115611e445782518051611e34918491602090910190611f07565b5091602001919060010190611e17565b50611dac929150611f74565b828054828255906000526020600020908101928215611e9d579160200282015b82811115611e9d5782518051611e8d918491602090910190611f07565b5091602001919060010190611e70565b50611dac929150611f97565b604080516060810182526000808252602082018190529181019190915290565b61053591905b80821115611dac5780546001600160a01b0319168155600101611ecf565b61053591905b80821115611dac5760008155600101611ef3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f4857805160ff1916838001178555611deb565b82800160010185558215611deb5791820182811115611deb578251825591602001919060010190611dd0565b61053591905b80821115611dac576000611f8e8282611fba565b50600101611f7a565b61053591905b80821115611dac576000611fb18282611fba565b50600101611f9d565b50805460018160011615610100020316600290046000825580601f10611fe05750611ffe565b601f016020900490600052602060002090810190611ffe9190611eed565b50565b803561178b81613788565b600082601f83011261201d57600080fd5b813561203061202b82613669565b613642565b9150818183526020840193506020810190508385602084028201111561205557600080fd5b60005b83811015612081578161206b8882612001565b8452506020928301929190910190600101612058565b5050505092915050565b600082601f83011261209c57600080fd5b81356120aa61202b82613669565b81815260209384019390925082018360005b8381101561208157813586016120d288826121e1565b84525060209283019291909101906001016120bc565b600082601f8301126120f957600080fd5b813561210761202b82613669565b81815260209384019390925082018360005b83811015612081578135860161212f88826121e1565b8452506020928301929190910190600101612119565b600082601f83011261215657600080fd5b813561216461202b82613669565b9150818183526020840193506020810190508385602084028201111561218957600080fd5b60005b83811015612081578161219f88826121cb565b845250602092830192919091019060010161218c565b803561178b8161379c565b805161178b8161379c565b803561178b816137a5565b805161178b816137a5565b600082601f8301126121f257600080fd5b813561220061202b8261368a565b9150808252602083016020830185838301111561221c57600080fd5b61222783828461373c565b50505092915050565b600082601f83011261224157600080fd5b815161224f61202b8261368a565b9150808252602083016020830185838301111561226b57600080fd5b612227838284613748565b803561178b816137ae565b805161178b816137b7565b60006020828403121561229e57600080fd5b60006122aa8484612001565b949350505050565b600080604083850312156122c557600080fd5b60006122d18585612001565b92505060206122e2858286016121cb565b9150509250929050565b600080600080600060a0868803121561230457600080fd5b853567ffffffffffffffff81111561231b57600080fd5b6123278882890161200c565b955050602086013567ffffffffffffffff81111561234457600080fd5b61235088828901612145565b945050604086013567ffffffffffffffff81111561236d57600080fd5b612379888289016120e8565b935050606086013567ffffffffffffffff81111561239657600080fd5b6123a28882890161208b565b925050608086013567ffffffffffffffff8111156123bf57600080fd5b6123cb888289016121e1565b9150509295509295909350565b6000602082840312156123ea57600080fd5b60006122aa84846121c0565b60006020828403121561240857600080fd5b60006122aa84846121d6565b60006020828403121561242657600080fd5b815167ffffffffffffffff81111561243d57600080fd5b6122aa84828501612230565b60006020828403121561245b57600080fd5b60006122aa84846121cb565b6000806040838503121561247a57600080fd5b600061248685856121cb565b92505060206122e285828601612001565b600080604083850312156124aa57600080fd5b60006124b685856121cb565b92505060206122e2858286016121b5565b600080600080600060a086880312156124df57600080fd5b60006124eb88886121cb565b95505060206124fc888289016121b5565b945050604061250d88828901612276565b935050606061251e888289016121cb565b92505060806123cb888289016121cb565b60006020828403121561254157600080fd5b60006122aa8484612281565b60006125598383612588565b505060200190565b6000611b44838361272a565b60006125598383612710565b61258281613709565b82525050565b612582816136d1565b600061259c826136c4565b6125a681856136c8565b93506125b1836136b2565b8060005b838110156125df5781516125c9888261254d565b97506125d4836136b2565b9250506001016125b5565b509495945050505050565b60006125f5826136c4565b6125ff81856136c8565b935083602082028501612611856136b2565b8060005b8581101561264b578484038952815161262e8582612561565b9450612639836136b2565b60209a909a0199925050600101612615565b5091979650505050505050565b6000612663826136c4565b61266d81856136c8565b93508360208202850161267f856136b2565b8060005b8581101561264b578484038952815161269c8582612561565b94506126a7836136b2565b60209a909a0199925050600101612683565b60006126c4826136c4565b6126ce81856136c8565b93506126d9836136b2565b8060005b838110156125df5781516126f1888261256d565b97506126fc836136b2565b9250506001016126dd565b612582816136dc565b61258281610535565b61258261272582610535565b610535565b6000612735826136c4565b61273f81856136c8565b935061274f818560208601613748565b61275881613774565b9093019392505050565b60008154600181166000811461277f57600181146127a5576127e4565b607f600283041661279081876136c8565b60ff19841681529550506020850192506127e4565b600282046127b381876136c8565b95506127be856136b8565b60005b828110156127dd578154888201526001909101906020016127c1565b8701945050505b505092915050565b61258281613710565b6125828161371b565b61258281613726565b60006128146039836136c8565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b60006128736044836136c8565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c79206265207175657565642069662069742069732073756363656020820152631959195960e21b604082015260600192915050565b60006128df6045836136c8565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c7920626520657865637574656420696620697420697320716020820152641d595d595960da1b604082015260600192915050565b600061294c600283610ab8565b61190160f01b815260020192915050565b600061296a604c836136c8565b7f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c81527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208201526b33b7bb1033bab0b93234b0b760a11b604082015260600192915050565b60006129de6018836136c8565b7f73657450656e64696e6741646d696e2861646472657373290000000000000000815260200192915050565b6000612a176029836136c8565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c69642070728152681bdc1bdcd85b081a5960ba1b602082015260400192915050565b6000612a62602d836136c8565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081526c185b1c9958591e481d9bdd1959609a1b602082015260400192915050565b6000612ab16059836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612b36604a836136c8565b7f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6381527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f6020820152693b1033bab0b93234b0b760b11b604082015260600192915050565b6000612ba86028836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981526720616374696f6e7360c01b602082015260400192915050565b6000612bf26011836136c8565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b6000612c1f604383610ab8565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000612c8a602783610ab8565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20738152667570706f72742960c81b602082015260270192915050565b6000612cd36044836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6020820152630c2e8c6d60e31b604082015260600192915050565b6000612d3f602f836136c8565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081526e18589bdd99481d1a1c995cda1bdb19608a1b602082015260400192915050565b6000612d906044836136c8565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c7265616479207175657565642061746020820152632065746160e01b604082015260600192915050565b6000612dfc602c836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81526b7669646520616374696f6e7360a01b602082015260400192915050565b6000612e4a603f836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612ea9602f836136c8565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81526e76616c6964207369676e617475726560881b602082015260400192915050565b6000612efa6058836136c8565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b6000612f7f6036836136c8565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f742063618152751b98d95b08195e1958dd5d1959081c1c9bdc1bdcd85b60521b602082015260400192915050565b6000612fd7602a836136c8565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e67815269081a5cc818db1bdcd95960b21b602082015260400192915050565b60006130236015836136c8565b747375627472616374696f6e20756e646572666c6f7760581b815260200192915050565b60006130546036836136c8565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e6465815275391036bab9ba1031329033b7bb1033bab0b93234b0b760511b602082015260400192915050565b805160608301906130b08482612707565b5060208201516130c36020850182612707565b50604082015161106f60408501826130e8565b612582816136f7565b61258281613731565b612582816136fd565b60006130fc8261293f565b91506131088285612719565b6020820191506131188284612719565b5060200192915050565b600061178b82612c12565b600061178b82612c7d565b6020810161178b8284612588565b604081016131548285612579565b611b446020830184612710565b60a0810161316f8287612588565b61317c60208301866127fe565b818103604083015261318d816129d1565b905081810360608301526131a1818561272a565b90506114a36080830184612710565b604081016131548285612588565b608081016131cc8287612588565b6131d96020830186612710565b6131e66040830185612707565b6114a360608301846130df565b60a081016132018288612588565b61320e6020830187612710565b8181036040830152613220818661272a565b90508181036060830152613234818561272a565b90506132436080830184612710565b9695505050505050565b60a0810161325b8288612588565b6132686020830187612710565b818103604083015261327a8186612762565b905081810360608301526132348185612762565b6080808252810161329f8187612591565b905081810360208301526132b381866126b9565b905081810360408301526132c78185612658565b9050818103606083015261324381846125ea565b6020810161178b8284612710565b608081016132f78287612710565b6133046020830186612710565b6133116040830185612710565b6114a36060830184612588565b6060810161332c8286612710565b6133396020830185612710565b6122aa6040830184612707565b608081016133548287612710565b61336160208301866130d6565b61336e6040830185612710565b6114a36060830184612710565b6020810161178b82846127ec565b6020810161178b82846127f5565b60208082528101611b44818461272a565b6020808252810161178b81612807565b6020808252810161178b81612866565b6020808252810161178b816128d2565b6020808252810161178b8161295d565b6020808252810161178b81612a0a565b6020808252810161178b81612a55565b6020808252810161178b81612aa4565b6020808252810161178b81612b29565b6020808252810161178b81612b9b565b6020808252810161178b81612be5565b6020808252810161178b81612cc6565b6020808252810161178b81612d32565b6020808252810161178b81612d83565b6020808252810161178b81612def565b6020808252810161178b81612e3d565b6020808252810161178b81612e9c565b6020808252810161178b81612eed565b6020808252810161178b81612f72565b6020808252810161178b81612fca565b6020808252810161178b81613016565b6020808252810161178b81613047565b6060810161178b828461309f565b6101208101613515828c612710565b613522602083018b612579565b8181036040830152613534818a612591565b9050818103606083015261354881896126b9565b9050818103608083015261355c8188612658565b905081810360a083015261357081876125ea565b905061357f60c0830186612710565b61358c60e0830185612710565b81810361010083015261359f818461272a565b9b9a5050505050505050505050565b61012081016135bd828c612710565b6135ca602083018b612588565b6135d7604083018a612710565b6135e46060830189612710565b6135f16080830188612710565b6135fe60a0830187612710565b61360b60c0830186612710565b61361860e0830185612707565b613626610100830184612707565b9a9950505050505050505050565b604081016131548285612710565b60405181810167ffffffffffffffff8111828210171561366157600080fd5b604052919050565b600067ffffffffffffffff82111561368057600080fd5b5060209081020190565b600067ffffffffffffffff8211156136a157600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061178b826136eb565b151590565b80610ab88161377e565b6001600160a01b031690565b60ff1690565b6001600160601b031690565b600061178b825b600061178b826136d1565b600061178b826136e1565b600061178b82610535565b600061178b826136fd565b82818337506000910152565b60005b8381101561376357818101518382015260200161374b565b8381111561106f5750506000910152565b601f01601f191690565b60088110611ffe57fe5b613791816136d1565b8114611ffe57600080fd5b613791816136dc565b61379181610535565b613791816136f7565b613791816136fd56fea365627a7a723158200b1f3bfa694b28c40703fd331d0cf089eeb7288b820578a7c1e0bc11f6d3d8f26c6578706572696d656e74616cf564736f6c63430005100040
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006d903f6003cca6255d85cca4d3b5e5146dc33925000000000000000000000000c00e94cb662c3520282e6f5717214004a7f268880000000000000000000000008b8592e9570e96166336603a1b4bd1e8db20fa20
-----Decoded View---------------
Arg [0] : timelock_ (address): 0x6d903f6003cca6255D85CcA4D3B5E5146dC33925
Arg [1] : comp_ (address): 0xc00e94Cb662C3520282E6f5717214004A7f26888
Arg [2] : guardian_ (address): 0x8B8592E9570E96166336603a1b4bd1E8Db20fa20
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000006d903f6003cca6255d85cca4d3b5e5146dc33925
Arg [1] : 000000000000000000000000c00e94cb662c3520282e6f5717214004a7f26888
Arg [2] : 0000000000000000000000008b8592e9570e96166336603a1b4bd1e8db20fa20
Loading...
Loading
Loading...
Loading
OVERVIEW
Compound's governance contractMultichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,997.11 | 0.0586 | $234.1 |
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.