More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 36 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Admin | 10789337 | 1580 days ago | IN | 0 ETH | 0.02141969 | ||||
Enable Trade | 10528680 | 1621 days ago | IN | 0 ETH | 0.00194903 | ||||
Disable Trade | 10528645 | 1621 days ago | IN | 0 ETH | 0.00196812 | ||||
Enable Trade | 10524270 | 1621 days ago | IN | 0 ETH | 0.00177449 | ||||
Disable Trade | 10514952 | 1623 days ago | IN | 0 ETH | 0.00214437 | ||||
Set Contracts | 10410582 | 1639 days ago | IN | 0 ETH | 0.0013918 | ||||
Enable Trade | 10179658 | 1675 days ago | IN | 0 ETH | 0.00057598 | ||||
Withdraw Token | 10179610 | 1675 days ago | IN | 0 ETH | 0.00325137 | ||||
Disable Trade | 10179533 | 1675 days ago | IN | 0 ETH | 0.00096937 | ||||
Withdraw Token | 9928095 | 1714 days ago | IN | 0 ETH | 0.00201175 | ||||
Set Contracts | 9922549 | 1715 days ago | IN | 0 ETH | 0.00045217 | ||||
Transfer | 9910187 | 1716 days ago | IN | 70 ETH | 0.00021359 | ||||
Withdraw Ether | 9909637 | 1717 days ago | IN | 0 ETH | 0.00022607 | ||||
Add Operator | 9909623 | 1717 days ago | IN | 0 ETH | 0.00071301 | ||||
Withdraw Ether | 9909541 | 1717 days ago | IN | 0 ETH | 0.00027794 | ||||
Withdraw Token | 9909419 | 1717 days ago | IN | 0 ETH | 0.00128489 | ||||
Withdraw Token | 9909382 | 1717 days ago | IN | 0 ETH | 0.00102724 | ||||
Transfer | 9909317 | 1717 days ago | IN | 0.1 ETH | 0.00011242 | ||||
Transfer Admin Q... | 9909172 | 1717 days ago | IN | 0 ETH | 0.0002432 | ||||
Add Operator | 9909163 | 1717 days ago | IN | 0 ETH | 0.00037527 | ||||
Add Operator | 9909152 | 1717 days ago | IN | 0 ETH | 0.00060043 | ||||
Approve Withdraw... | 9909141 | 1717 days ago | IN | 0 ETH | 0.00041558 | ||||
Approve Withdraw... | 9909136 | 1717 days ago | IN | 0 ETH | 0.00040924 | ||||
Approve Withdraw... | 9909126 | 1717 days ago | IN | 0 ETH | 0.00010571 | ||||
Approve Withdraw... | 9909122 | 1717 days ago | IN | 0 ETH | 0.00025571 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
11584053 | 1458 days ago | 4.10561507 ETH | ||||
11583983 | 1458 days ago | 8.65514605 ETH | ||||
11583311 | 1458 days ago | 8.74110923 ETH | ||||
11583111 | 1458 days ago | 1.58539032 ETH | ||||
11577123 | 1459 days ago | 5.06023418 ETH | ||||
11576117 | 1459 days ago | 2.65470874 ETH | ||||
11576107 | 1459 days ago | 2.65470874 ETH | ||||
11558871 | 1462 days ago | 10.44732001 ETH | ||||
11550736 | 1463 days ago | 5.47302699 ETH | ||||
11548911 | 1464 days ago | 2.874816 ETH | ||||
11548904 | 1464 days ago | 3.35455116 ETH | ||||
11548862 | 1464 days ago | 3.89596438 ETH | ||||
11548774 | 1464 days ago | 9.60607751 ETH | ||||
11548755 | 1464 days ago | 6.65610211 ETH | ||||
11548755 | 1464 days ago | 7.02537924 ETH | ||||
11548727 | 1464 days ago | 5.24413984 ETH | ||||
11548726 | 1464 days ago | 6.96313781 ETH | ||||
11548720 | 1464 days ago | 6.96313781 ETH | ||||
11548595 | 1464 days ago | 7.37167006 ETH | ||||
11548568 | 1464 days ago | 5.91814133 ETH | ||||
11538411 | 1465 days ago | 4.59172607 ETH | ||||
11538107 | 1465 days ago | 0.17127676 ETH | ||||
11534433 | 1466 days ago | 5.82783544 ETH | ||||
11531512 | 1466 days ago | 5.57238999 ETH | ||||
11531382 | 1466 days ago | 4.05474673 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xf8b8bA30...71535AA1B The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
KyberReserve
Compiler Version
v0.4.18+commit.9cf6e910
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-11-08 */ pragma solidity ^0.4.13; interface ConversionRatesInterface { function recordImbalance( ERC20 token, int buyAmount, uint rateUpdateBlock, uint currentBlock ) public; function getRate(ERC20 token, uint currentBlockNumber, bool buy, uint qty) public view returns(uint); } interface ERC20 { function totalSupply() public view returns (uint supply); function balanceOf(address _owner) public view returns (uint balance); function transfer(address _to, uint _value) public returns (bool success); function transferFrom(address _from, address _to, uint _value) public returns (bool success); function approve(address _spender, uint _value) public returns (bool success); function allowance(address _owner, address _spender) public view returns (uint remaining); function decimals() public view returns(uint digits); event Approval(address indexed _owner, address indexed _spender, uint _value); } interface KyberReserveInterface { function trade( ERC20 srcToken, uint srcAmount, ERC20 destToken, address destAddress, uint conversionRate, bool validate ) public payable returns(bool); function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint blockNumber) public view returns(uint); } contract PermissionGroups { address public admin; address public pendingAdmin; mapping(address=>bool) internal operators; mapping(address=>bool) internal alerters; address[] internal operatorsGroup; address[] internal alertersGroup; uint constant internal MAX_GROUP_SIZE = 50; function PermissionGroups() public { admin = msg.sender; } modifier onlyAdmin() { require(msg.sender == admin); _; } modifier onlyOperator() { require(operators[msg.sender]); _; } modifier onlyAlerter() { require(alerters[msg.sender]); _; } function getOperators () external view returns(address[]) { return operatorsGroup; } function getAlerters () external view returns(address[]) { return alertersGroup; } event TransferAdminPending(address pendingAdmin); /** * @dev Allows the current admin to set the pendingAdmin address. * @param newAdmin The address to transfer ownership to. */ function transferAdmin(address newAdmin) public onlyAdmin { require(newAdmin != address(0)); TransferAdminPending(pendingAdmin); pendingAdmin = newAdmin; } /** * @dev Allows the current admin to set the admin in one tx. Useful initial deployment. * @param newAdmin The address to transfer ownership to. */ function transferAdminQuickly(address newAdmin) public onlyAdmin { require(newAdmin != address(0)); TransferAdminPending(newAdmin); AdminClaimed(newAdmin, admin); admin = newAdmin; } event AdminClaimed( address newAdmin, address previousAdmin); /** * @dev Allows the pendingAdmin address to finalize the change admin process. */ function claimAdmin() public { require(pendingAdmin == msg.sender); AdminClaimed(pendingAdmin, admin); admin = pendingAdmin; pendingAdmin = address(0); } event AlerterAdded (address newAlerter, bool isAdd); function addAlerter(address newAlerter) public onlyAdmin { require(!alerters[newAlerter]); // prevent duplicates. require(alertersGroup.length < MAX_GROUP_SIZE); AlerterAdded(newAlerter, true); alerters[newAlerter] = true; alertersGroup.push(newAlerter); } function removeAlerter (address alerter) public onlyAdmin { require(alerters[alerter]); alerters[alerter] = false; for (uint i = 0; i < alertersGroup.length; ++i) { if (alertersGroup[i] == alerter) { alertersGroup[i] = alertersGroup[alertersGroup.length - 1]; alertersGroup.length--; AlerterAdded(alerter, false); break; } } } event OperatorAdded(address newOperator, bool isAdd); function addOperator(address newOperator) public onlyAdmin { require(!operators[newOperator]); // prevent duplicates. require(operatorsGroup.length < MAX_GROUP_SIZE); OperatorAdded(newOperator, true); operators[newOperator] = true; operatorsGroup.push(newOperator); } function removeOperator (address operator) public onlyAdmin { require(operators[operator]); operators[operator] = false; for (uint i = 0; i < operatorsGroup.length; ++i) { if (operatorsGroup[i] == operator) { operatorsGroup[i] = operatorsGroup[operatorsGroup.length - 1]; operatorsGroup.length -= 1; OperatorAdded(operator, false); break; } } } } interface SanityRatesInterface { function getSanityRate(ERC20 src, ERC20 dest) public view returns(uint); } contract Utils { ERC20 constant internal ETH_TOKEN_ADDRESS = ERC20(0x00eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee); uint constant internal PRECISION = (10**18); uint constant internal MAX_QTY = (10**28); // 10B tokens uint constant internal MAX_RATE = (PRECISION * 10**6); // up to 1M tokens per ETH uint constant internal MAX_DECIMALS = 18; uint constant internal ETH_DECIMALS = 18; mapping(address=>uint) internal decimals; function setDecimals(ERC20 token) internal { if (token == ETH_TOKEN_ADDRESS) decimals[token] = ETH_DECIMALS; else decimals[token] = token.decimals(); } function getDecimals(ERC20 token) internal view returns(uint) { if (token == ETH_TOKEN_ADDRESS) return ETH_DECIMALS; // save storage access uint tokenDecimals = decimals[token]; // technically, there might be token with decimals 0 // moreover, very possible that old tokens have decimals 0 // these tokens will just have higher gas fees. if(tokenDecimals == 0) return token.decimals(); return tokenDecimals; } function calcDstQty(uint srcQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) { require(srcQty <= MAX_QTY); require(rate <= MAX_RATE); if (dstDecimals >= srcDecimals) { require((dstDecimals - srcDecimals) <= MAX_DECIMALS); return (srcQty * rate * (10**(dstDecimals - srcDecimals))) / PRECISION; } else { require((srcDecimals - dstDecimals) <= MAX_DECIMALS); return (srcQty * rate) / (PRECISION * (10**(srcDecimals - dstDecimals))); } } function calcSrcQty(uint dstQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) { require(dstQty <= MAX_QTY); require(rate <= MAX_RATE); //source quantity is rounded up. to avoid dest quantity being too low. uint numerator; uint denominator; if (srcDecimals >= dstDecimals) { require((srcDecimals - dstDecimals) <= MAX_DECIMALS); numerator = (PRECISION * dstQty * (10**(srcDecimals - dstDecimals))); denominator = rate; } else { require((dstDecimals - srcDecimals) <= MAX_DECIMALS); numerator = (PRECISION * dstQty); denominator = (rate * (10**(dstDecimals - srcDecimals))); } return (numerator + denominator - 1) / denominator; //avoid rounding down errors } } contract Withdrawable is PermissionGroups { event TokenWithdraw(ERC20 token, uint amount, address sendTo); /** * @dev Withdraw all ERC20 compatible tokens * @param token ERC20 The address of the token contract */ function withdrawToken(ERC20 token, uint amount, address sendTo) external onlyAdmin { require(token.transfer(sendTo, amount)); TokenWithdraw(token, amount, sendTo); } event EtherWithdraw(uint amount, address sendTo); /** * @dev Withdraw Ethers */ function withdrawEther(uint amount, address sendTo) external onlyAdmin { sendTo.transfer(amount); EtherWithdraw(amount, sendTo); } } contract KyberReserve is KyberReserveInterface, Withdrawable, Utils { address public kyberNetwork; bool public tradeEnabled; ConversionRatesInterface public conversionRatesContract; SanityRatesInterface public sanityRatesContract; mapping(bytes32=>bool) public approvedWithdrawAddresses; // sha3(token,address)=>bool mapping(address=>address) public tokenWallet; function KyberReserve(address _kyberNetwork, ConversionRatesInterface _ratesContract, address _admin) public { require(_admin != address(0)); require(_ratesContract != address(0)); require(_kyberNetwork != address(0)); kyberNetwork = _kyberNetwork; conversionRatesContract = _ratesContract; admin = _admin; tradeEnabled = true; } event DepositToken(ERC20 token, uint amount); function() public payable { DepositToken(ETH_TOKEN_ADDRESS, msg.value); } event TradeExecute( address indexed origin, address src, uint srcAmount, address destToken, uint destAmount, address destAddress ); function trade( ERC20 srcToken, uint srcAmount, ERC20 destToken, address destAddress, uint conversionRate, bool validate ) public payable returns(bool) { require(tradeEnabled); require(msg.sender == kyberNetwork); require(doTrade(srcToken, srcAmount, destToken, destAddress, conversionRate, validate)); return true; } event TradeEnabled(bool enable); function enableTrade() public onlyAdmin returns(bool) { tradeEnabled = true; TradeEnabled(true); return true; } function disableTrade() public onlyAlerter returns(bool) { tradeEnabled = false; TradeEnabled(false); return true; } event WithdrawAddressApproved(ERC20 token, address addr, bool approve); function approveWithdrawAddress(ERC20 token, address addr, bool approve) public onlyAdmin { approvedWithdrawAddresses[keccak256(token, addr)] = approve; WithdrawAddressApproved(token, addr, approve); setDecimals(token); if ((tokenWallet[token] == address(0x0)) && (token != ETH_TOKEN_ADDRESS)) { tokenWallet[token] = this; // by default require(token.approve(this, 2 ** 255)); } } event NewTokenWallet(ERC20 token, address wallet); function setTokenWallet(ERC20 token, address wallet) public onlyAdmin { require(wallet != address(0x0)); tokenWallet[token] = wallet; NewTokenWallet(token, wallet); } event WithdrawFunds(ERC20 token, uint amount, address destination); function withdraw(ERC20 token, uint amount, address destination) public onlyOperator returns(bool) { require(approvedWithdrawAddresses[keccak256(token, destination)]); if (token == ETH_TOKEN_ADDRESS) { destination.transfer(amount); } else { require(token.transferFrom(tokenWallet[token], destination, amount)); } WithdrawFunds(token, amount, destination); return true; } event SetContractAddresses(address network, address rate, address sanity); function setContracts( address _kyberNetwork, ConversionRatesInterface _conversionRates, SanityRatesInterface _sanityRates ) public onlyAdmin { require(_kyberNetwork != address(0)); require(_conversionRates != address(0)); kyberNetwork = _kyberNetwork; conversionRatesContract = _conversionRates; sanityRatesContract = _sanityRates; SetContractAddresses(kyberNetwork, conversionRatesContract, sanityRatesContract); } //////////////////////////////////////////////////////////////////////////// /// status functions /////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// function getBalance(ERC20 token) public view returns(uint) { if (token == ETH_TOKEN_ADDRESS) return this.balance; else { address wallet = tokenWallet[token]; uint balanceOfWallet = token.balanceOf(wallet); uint allowanceOfWallet = token.allowance(wallet, this); return (balanceOfWallet < allowanceOfWallet) ? balanceOfWallet : allowanceOfWallet; } } function getDestQty(ERC20 src, ERC20 dest, uint srcQty, uint rate) public view returns(uint) { uint dstDecimals = getDecimals(dest); uint srcDecimals = getDecimals(src); return calcDstQty(srcQty, srcDecimals, dstDecimals, rate); } function getSrcQty(ERC20 src, ERC20 dest, uint dstQty, uint rate) public view returns(uint) { uint dstDecimals = getDecimals(dest); uint srcDecimals = getDecimals(src); return calcSrcQty(dstQty, srcDecimals, dstDecimals, rate); } function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint blockNumber) public view returns(uint) { ERC20 token; bool isBuy; if (!tradeEnabled) return 0; if (ETH_TOKEN_ADDRESS == src) { isBuy = true; token = dest; } else if (ETH_TOKEN_ADDRESS == dest) { isBuy = false; token = src; } else { return 0; // pair is not listed } uint rate = conversionRatesContract.getRate(token, blockNumber, isBuy, srcQty); uint destQty = getDestQty(src, dest, srcQty, rate); if (getBalance(dest) < destQty) return 0; if (sanityRatesContract != address(0)) { uint sanityRate = sanityRatesContract.getSanityRate(src, dest); if (rate > sanityRate) return 0; } return rate; } /// @dev do a trade /// @param srcToken Src token /// @param srcAmount Amount of src token /// @param destToken Destination token /// @param destAddress Destination address to send tokens to /// @param validate If true, additional validations are applicable /// @return true iff trade is successful function doTrade( ERC20 srcToken, uint srcAmount, ERC20 destToken, address destAddress, uint conversionRate, bool validate ) internal returns(bool) { // can skip validation if done at kyber network level if (validate) { require(conversionRate > 0); if (srcToken == ETH_TOKEN_ADDRESS) require(msg.value == srcAmount); else require(msg.value == 0); } uint destAmount = getDestQty(srcToken, destToken, srcAmount, conversionRate); // sanity check require(destAmount > 0); // add to imbalance ERC20 token; int tradeAmount; if (srcToken == ETH_TOKEN_ADDRESS) { tradeAmount = int(destAmount); token = destToken; } else { tradeAmount = -1 * int(srcAmount); token = srcToken; } conversionRatesContract.recordImbalance( token, tradeAmount, 0, block.number ); // collect src tokens if (srcToken != ETH_TOKEN_ADDRESS) { require(srcToken.transferFrom(msg.sender, tokenWallet[srcToken], srcAmount)); } // send dest tokens if (destToken == ETH_TOKEN_ADDRESS) { destAddress.transfer(destAmount); } else { require(destToken.transferFrom(tokenWallet[destToken], destAddress, destAmount)); } TradeExecute(msg.sender, srcToken, srcAmount, destToken, destAmount, destAddress); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"enableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"alerter","type":"address"}],"name":"removeAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"wallet","type":"address"}],"name":"setTokenWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOperators","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAlerter","type":"address"}],"name":"addAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sanityRatesContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"addr","type":"address"},{"name":"approve","type":"bool"}],"name":"approveWithdrawAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"destination","type":"address"}],"name":"withdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"srcToken","type":"address"},{"name":"srcAmount","type":"uint256"},{"name":"destToken","type":"address"},{"name":"destAddress","type":"address"},{"name":"conversionRate","type":"uint256"},{"name":"validate","type":"bool"}],"name":"trade","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdminQuickly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAlerters","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcQty","type":"uint256"},{"name":"blockNumber","type":"uint256"}],"name":"getConversionRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"dstQty","type":"uint256"},{"name":"rate","type":"uint256"}],"name":"getSrcQty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_kyberNetwork","type":"address"},{"name":"_conversionRates","type":"address"},{"name":"_sanityRates","type":"address"}],"name":"setContracts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kyberNetwork","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"conversionRatesContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tradeEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"approvedWithdrawAddresses","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcQty","type":"uint256"},{"name":"rate","type":"uint256"}],"name":"getDestQty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_kyberNetwork","type":"address"},{"name":"_ratesContract","type":"address"},{"name":"_admin","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"DepositToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"origin","type":"address"},{"indexed":false,"name":"src","type":"address"},{"indexed":false,"name":"srcAmount","type":"uint256"},{"indexed":false,"name":"destToken","type":"address"},{"indexed":false,"name":"destAmount","type":"uint256"},{"indexed":false,"name":"destAddress","type":"address"}],"name":"TradeExecute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"enable","type":"bool"}],"name":"TradeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"approve","type":"bool"}],"name":"WithdrawAddressApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"wallet","type":"address"}],"name":"NewTokenWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"destination","type":"address"}],"name":"WithdrawFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"network","type":"address"},{"indexed":false,"name":"rate","type":"address"},{"indexed":false,"name":"sanity","type":"address"}],"name":"SetContractAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"TokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"EtherWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"pendingAdmin","type":"address"}],"name":"TransferAdminPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAdmin","type":"address"},{"indexed":false,"name":"previousAdmin","type":"address"}],"name":"AdminClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAlerter","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"AlerterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOperator","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"OperatorAdded","type":"event"}]
Deployed Bytecode
0x6060604052600436106101655763ffffffff60e060020a60003504166299d38681146101b957806301a12fd3146101e05780631bc7bfec14610201578063267822471461022657806327a099d8146102555780633ccdbb28146102bb578063408ee7fe146102e457806347e6924f14610303578063546dc71c1461031657806369328dec146103405780636940030f146103695780636cf698111461037c57806375829def146103a857806377f50f97146103c75780637acc8678146103da5780637c423f54146103f95780637cd442721461040c5780639870d7fe14610449578063a7fca95314610468578063a80cbac614610493578063ac8a584a146104b2578063b3066d49146104d1578063b78b842d146104fc578063ce56c4541461050f578063d5847d3314610531578063d621e81314610544578063d7b7024d14610557578063f851a4401461056d578063f8b2cb4f14610580578063fa64dffa1461059f575b7f2d0c0a8842b9944ece1495eb61121621b5e36bd6af3bba0318c695f525aef79f60008051602061204983398151915234604051600160a060020a03909216825260208201526040908101905180910390a1005b34156101c457600080fd5b6101cc6105ca565b604051901515815260200160405180910390f35b34156101eb57600080fd5b6101ff600160a060020a0360043516610658565b005b341561020c57600080fd5b6101ff600160a060020a03600435811690602435166107c8565b341561023157600080fd5b610239610874565b604051600160a060020a03909116815260200160405180910390f35b341561026057600080fd5b610268610883565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156102a757808201518382015260200161028f565b505050509050019250505060405180910390f35b34156102c657600080fd5b6101ff600160a060020a0360043581169060243590604435166108eb565b34156102ef57600080fd5b6101ff600160a060020a03600435166109e2565b341561030e57600080fd5b610239610ade565b341561032157600080fd5b6101ff600160a060020a03600435811690602435166044351515610aed565b341561034b57600080fd5b6101cc600160a060020a036004358116906024359060443516610cd7565b341561037457600080fd5b6101cc610eb0565b6101cc600160a060020a03600435811690602435906044358116906064351660843560a4351515610f31565b34156103b357600080fd5b6101ff600160a060020a0360043516610f9e565b34156103d257600080fd5b6101ff611039565b34156103e557600080fd5b6101ff600160a060020a03600435166110d3565b341561040457600080fd5b6102686111b5565b341561041757600080fd5b610437600160a060020a036004358116906024351660443560643561121b565b60405190815260200160405180910390f35b341561045457600080fd5b6101ff600160a060020a0360043516611406565b341561047357600080fd5b610437600160a060020a03600435811690602435166044356064356114d6565b341561049e57600080fd5b610239600160a060020a0360043516611508565b34156104bd57600080fd5b6101ff600160a060020a0360043516611523565b34156104dc57600080fd5b6101ff600160a060020a036004358116906024358116906044351661168f565b341561050757600080fd5b610239611773565b341561051a57600080fd5b6101ff600435600160a060020a0360243516611782565b341561053c57600080fd5b610239611815565b341561054f57600080fd5b6101cc611824565b341561056257600080fd5b6101cc600435611845565b341561057857600080fd5b61023961185a565b341561058b57600080fd5b610437600160a060020a0360043516611869565b34156105aa57600080fd5b610437600160a060020a03600435811690602435166044356064356119bd565b6000805433600160a060020a039081169116146105e657600080fd5b6007805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356001604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461067457600080fd5b600160a060020a03821660009081526003602052604090205460ff16151561069b57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156107c45781600160a060020a03166005828154811015156106e057fe5b600091825260209091200154600160a060020a031614156107bc5760058054600019810190811061070d57fe5b60009182526020909120015460058054600160a060020a03909216918390811061073357fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061076f906000198301611ff4565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16107c4565b6001016106bd565b5050565b60005433600160a060020a039081169116146107e357600080fd5b600160a060020a03811615156107f857600080fd5b600160a060020a038281166000908152600b6020526040908190208054600160a060020a031916928416929092179091557f81995c7b922889ac0a81e41866106d4046268ea3a9abaae9f9e080a6ce36ee7d908390839051600160a060020a039283168152911660208201526040908101905180910390a15050565b600154600160a060020a031681565b61088b612018565b60048054806020026020016040519081016040528092919081815260200182805480156108e157602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116108c3575b5050505050905090565b60005433600160a060020a0390811691161461090657600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561096357600080fd5b6102c65a03f1151561097457600080fd5b50505060405180519050151561098957600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a039081169116146109fd57600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610a2357600080fd5b60055460329010610a3357600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610ab28382611ff4565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b600954600160a060020a031681565b60005433600160a060020a03908116911614610b0857600080fd5b80600a600085856040516c01000000000000000000000000600160a060020a039384168102825291909216026014820152602801604051908190039020815260208101919091526040908101600020805460ff1916921515929092179091557fd5fd5351efae1f4bb760079da9f0ff9589e2c3e216337ca9d39cdff573b245c49084908490849051600160a060020a0393841681529190921660208201529015156040808301919091526060909101905180910390a1610bc7836119e4565b600160a060020a038381166000908152600b602052604090205416158015610c065750600160a060020a03831660008051602061204983398151915214155b15610cd257600160a060020a038381166000818152600b60205260408082208054600160a060020a03191630958616179055919263095ea7b39290917f800000000000000000000000000000000000000000000000000000000000000091516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610cac57600080fd5b6102c65a03f11515610cbd57600080fd5b505050604051805190501515610cd257600080fd5b505050565b600160a060020a03331660009081526002602052604081205460ff161515610cfe57600080fd5b600a600085846040516c01000000000000000000000000600160a060020a039384168102825291909216026014820152602801604051908190039020815260208101919091526040016000205460ff161515610d5957600080fd5b600160a060020a0384166000805160206120498339815191521415610dae57600160a060020a03821683156108fc0284604051600060405180830381858888f193505050501515610da957600080fd5b610e52565b600160a060020a038085166000818152600b60205260408082205492936323b872dd9316918691889190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610e2c57600080fd5b6102c65a03f11515610e3d57600080fd5b505050604051805190501515610e5257600080fd5b7fb67719fc33c1f17d31bf3a698690d62066b1e0bae28fcd3c56cf2c015c2863d6848484604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a15060019392505050565b600160a060020a03331660009081526003602052604081205460ff161515610ed757600080fd5b6007805474ff0000000000000000000000000000000000000000191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60075460009074010000000000000000000000000000000000000000900460ff161515610f5d57600080fd5b60075433600160a060020a03908116911614610f7857600080fd5b610f86878787878787611aa1565b1515610f9157600080fd5b5060019695505050505050565b60005433600160a060020a03908116911614610fb957600080fd5b600160a060020a0381161515610fce57600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a0390811691161461105457600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a039081169116146110ee57600080fd5b600160a060020a038116151561110357600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b6111bd612018565b60058054806020026020016040519081016040528092919081815260200182805480156108e157602002820191906000526020600020908154600160a060020a031681526001909101906020018083116108c3575050505050905090565b600080600080600080600760149054906101000a900460ff16151561124357600095506113f9565b600080516020612049833981519152600160a060020a038b16141561126e57600193508894506112a2565b600080516020612049833981519152600160a060020a038a16141561129957600093508994506112a2565b600095506113f9565b600854600160a060020a031663b8e9c22e8689878c60006040516020015260405160e060020a63ffffffff8716028152600160a060020a0390941660048501526024840192909252151560448301526064820152608401602060405180830381600087803b151561131257600080fd5b6102c65a03f1151561132357600080fd5b50505060405180519050925061133b8a8a8a866119bd565b9150816113478a611869565b101561135657600095506113f9565b600954600160a060020a0316156113f557600954600160a060020a031663a58092b78b8b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156113c857600080fd5b6102c65a03f115156113d957600080fd5b5050506040518051915050808311156113f557600095506113f9565b8295505b5050505050949350505050565b60005433600160a060020a0390811691161461142157600080fd5b600160a060020a03811660009081526002602052604090205460ff161561144757600080fd5b6004546032901061145757600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610ab28382611ff4565b60008060006114e486611df6565b91506114ef87611df6565b90506114fd85828487611eb4565b979650505050505050565b600b60205260009081526040902054600160a060020a031681565b6000805433600160a060020a0390811691161461153f57600080fd5b600160a060020a03821660009081526002602052604090205460ff16151561156657600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156107c45781600160a060020a03166004828154811015156115ab57fe5b600091825260209091200154600160a060020a03161415611687576004805460001981019081106115d857fe5b60009182526020909120015460048054600160a060020a0390921691839081106115fe57fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560048054600019019061163a9082611ff4565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16107c4565b600101611588565b60005433600160a060020a039081169116146116aa57600080fd5b600160a060020a03831615156116bf57600080fd5b600160a060020a03821615156116d457600080fd5b60078054600160a060020a03808616600160a060020a0319928316179283905560088054868316908416179081905560098054868416941693909317928390557f7a85322644a4462d8ff5482d2a841a4d231f8cfb3c9f4a50f66f8b2bd568c31c938216929082169116604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a1505050565b600754600160a060020a031681565b60005433600160a060020a0390811691161461179d57600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f1935050505015156117ce57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b600854600160a060020a031681565b60075474010000000000000000000000000000000000000000900460ff1681565b600a6020526000908152604090205460ff1681565b600054600160a060020a031681565b6000808080600160a060020a038516600080516020612049833981519152141561189f5730600160a060020a03163193506119b5565b600160a060020a038086166000818152600b602052604080822054909316955090916370a08231918691516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561190c57600080fd5b6102c65a03f1151561191d57600080fd5b5050506040518051925050600160a060020a03851663dd62ed3e843060006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561198757600080fd5b6102c65a03f1151561199857600080fd5b50505060405180519150508082106119b057806119b2565b815b93505b505050919050565b60008060006119cb86611df6565b91506119d687611df6565b90506114fd85828487611f5b565b600160a060020a0381166000805160206120498339815191521415611a2457600160a060020a038116600090815260066020526040902060129055611a9e565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a6a57600080fd5b6102c65a03f11515611a7b57600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b6000806000808415611af55760008611611aba57600080fd5b600160a060020a038a166000805160206120498339815191521415611aea57348914611ae557600080fd5b611af5565b3415611af557600080fd5b611b018a898b896119bd565b925060008311611b1057600080fd5b600160a060020a038a166000805160206120498339815191521415611b39575086905081611b43565b5088905060001988025b600854600160a060020a031663c6fd2103838360004360405160e060020a63ffffffff8716028152600160a060020a039094166004850152602484019290925260448301526064820152608401600060405180830381600087803b1515611ba957600080fd5b6102c65a03f11515611bba57600080fd5b505050600160a060020a038a1660008051602061204983398151915214611c8057600160a060020a03808b166000818152600b60205260408082205492936323b872dd9333939116918e9190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611c5a57600080fd5b6102c65a03f11515611c6b57600080fd5b505050604051805190501515611c8057600080fd5b600160a060020a0388166000805160206120498339815191521415611cd557600160a060020a03871683156108fc0284604051600060405180830381858888f193505050501515611cd057600080fd5b611d79565b600160a060020a038089166000818152600b60205260408082205492936323b872dd9316918b91889190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611d5357600080fd5b6102c65a03f11515611d6457600080fd5b505050604051805190501515611d7957600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8b8b8b878c604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a25060019998505050505050505050565b600080600160a060020a0383166000805160206120498339815191521415611e215760129150611eae565b50600160a060020a038216600090815260066020526040902054801515611eaa5782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611e8857600080fd5b6102c65a03f11515611e9957600080fd5b505050604051805190509150611eae565b8091505b50919050565b600080806b204fce5e3e25026110000000871115611ed157600080fd5b69d3c21bcecceda1000000841115611ee857600080fd5b848610611f195760128587031115611eff57600080fd5b5050828403600a0a8502670de0b6b3a76400000282611f3f565b60128686031115611f2957600080fd5b5050670de0b6b3a76400008502848403600a0a83025b80600182840103811515611f4f57fe5b04979650505050505050565b60006b204fce5e3e25026110000000851115611f7657600080fd5b69d3c21bcecceda1000000821115611f8d57600080fd5b838310611fc05760128484031115611fa457600080fd5b670de0b6b3a7640000858302858503600a0a025b049050611fec565b60128385031115611fd057600080fd5b828403600a0a670de0b6b3a764000002828602811515611fb857fe5b949350505050565b815481835581811511610cd257600083815260209020610cd291810190830161202a565b60206040519081016040526000815290565b61065591905b808211156120445760008155600101612030565b50905600000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea165627a7a72305820c393da12c7977907082fc6c1f072107b1f1fc341ed6976cbc81f3c7a2239ddad0029
Deployed Bytecode Sourcemap
8610:8114:0:-;;;;;;;;;-1:-1:-1;;;8610:8114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9507:42;-1:-1:-1;;;;;;;;;;;9539:9:0;9507:42;;-1:-1:-1;;;;;9507:42:0;;;;;;;;;;;;;;;;;;;;8610:8114;10264:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3845:463;;;;;;;;;;-1:-1:-1;;;;;3845:463:0;;;;;;;11178:198;;;;;;;;;;-1:-1:-1;;;;;11178:198:0;;;;;;;;;;1469:27;;;;;;;;;;;;;;;-1:-1:-1;;;;;1469:27:0;;;;;;;;;;;;;;2080:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;8149:189:0;;;;;;;;;;-1:-1:-1;;;;;8149:189:0;;;;;;;;;;;;;3529:308;;;;;;;;;;-1:-1:-1;;;;;3529:308:0;;;;;8814:47;;;;;;;;;;;;10654:458;;;;;;;;;;-1:-1:-1;;;;;10654:458:0;;;;;;;;;;;;;;11459:461;;;;;;;;;;-1:-1:-1;;;;;11459:461:0;;;;;;;;;;;;;10417:150;;;;;;;;;;;;9763:453;;-1:-1:-1;;;;;9763:453:0;;;;;;;;;;;;;;;;;;;;;;;;2498:187;;;;;;;;;;-1:-1:-1;;;;;2498:187:0;;;;;3267:194;;;;;;;;;;;;2866:223;;;;;;;;;;-1:-1:-1;;;;;2866:223:0;;;;;2186:96;;;;;;;;;;;;13797:888;;;;;;;;;;-1:-1:-1;;;;;13797:888:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4377:319;;;;;;;;;;-1:-1:-1;;;;;4377:319:0;;;;;13526:263;;;;;;;;;;-1:-1:-1;;;;;13526:263:0;;;;;;;;;;;;;;8959:44;;;;;;;;;;-1:-1:-1;;;;;8959:44:0;;;;;4704:481;;;;;;;;;;-1:-1:-1;;;;;4704:481:0;;;;;12010:534;;;;;;;;;;-1:-1:-1;;;;;12010:534:0;;;;;;;;;;;;;;;8687:27;;;;;;;;;;;;8450:153;;;;;;;;;;;;-1:-1:-1;;;;;8450:153:0;;;;;8752:55;;;;;;;;;;;;8721:24;;;;;;;;;;;;8868:55;;;;;;;;;;;;;;1442:20;;;;;;;;;;;;12798:448;;;;;;;;;;-1:-1:-1;;;;;12798:448:0;;;;;13254:264;;;;;;;;;;-1:-1:-1;;;;;13254:264:0;;;;;;;;;;;;;;10264:145;10312:4;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;10329:12;:19;;-1:-1:-1;;10329:19:0;;;;;10359:18;10344:4;10359:18;;;;;;;;;;;;;;;;-1:-1:-1;10397:4:0;1879:1;10264:145;:::o;3845:463::-;3994:6;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;3922:17:0;;;;;;:8;:17;;;;;;;;3914:26;;;;;;;;-1:-1:-1;;;;;;3951:17:0;;3971:5;3951:17;;;:8;:17;;;;;:25;;-1:-1:-1;;3951:25:0;;;3989:312;4010:13;:20;4006:24;;3989:312;;;4076:7;-1:-1:-1;;;;;4056:27:0;:13;4070:1;4056:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4056:16:0;:27;4052:238;;;4123:13;4137:20;;-1:-1:-1;;4137:24:0;;;4123:39;;;;;;;;;;;;;;;;4104:13;:16;;-1:-1:-1;;;;;4123:39:0;;;;4118:1;;4104:16;;;;;;;;;;;;;;;:58;;-1:-1:-1;;;;;;4104:58:0;-1:-1:-1;;;;;4104:58:0;;;;;;;;;;4181:13;:22;;;;;-1:-1:-1;;4181:22:0;;;:::i;:::-;;4222:28;4235:7;4244:5;4222:28;;-1:-1:-1;;;;;4222:28:0;;;;;;;;;;;;;;;;;;;;;;4269:5;;4052:238;4032:3;;3989:312;;;3845:463;;:::o;11178:198::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;11267:22:0;;;;11259:31;;;;;;-1:-1:-1;;;;;11301:18:0;;;;;;;:11;:18;;;;;;;:27;;-1:-1:-1;;;;;;11301:27:0;;;;;;;;;;;11339:29;;11301:18;;:27;;11339:29;-1:-1:-1;;;;;11339:29:0;;;;;;;;;;;;;;;;;;;;;;11178:198;;:::o;1469:27::-;;;-1:-1:-1;;;;;1469:27:0;;:::o;2080:98::-;2127:9;;:::i;:::-;2156:14;2149:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2149:21:0;;;;;;;;;;;;;;;;;;;;;;;2080:98;:::o;8149:189::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;8252:5;-1:-1:-1;;;;;8252:14:0;;8267:6;8275;8252:30;;;;;;;;-1:-1:-1;;;8252:30:0;;;;;;-1:-1:-1;;;;;8252:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8244:39;;;;;;;;8294:36;8308:5;8315:6;8323;8294:36;;-1:-1:-1;;;;;8294:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8149:189;;;:::o;3529:308::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;3606:20:0;;;;;;:8;:20;;;;;;;;3605:21;3597:30;;;;;;3669:13;:20;1717:2;3669:37;;3661:46;;;;;;3720:30;3733:10;3745:4;3720:30;;-1:-1:-1;;;;;3720:30:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3761:20:0;;;;;;:8;:20;;;;;:27;;-1:-1:-1;;3761:27:0;3784:4;3761:27;;;;;;3799:13;:30;;:13;;:30;;;:13;:30;;:::i;:::-;-1:-1:-1;3799:30:0;;;;;;;;;;;-1:-1:-1;;;;;;3799:30:0;-1:-1:-1;;;;;3799:30:0;;;;;;;;;;3529:308::o;8814:47::-;;;-1:-1:-1;;;;;8814:47:0;;:::o;10654:458::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;10807:7;10755:25;:49;10791:5;10798:4;10781:22;;;-1:-1:-1;;;;;10781:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;10755:49;;;;;;;;;;;;;-1:-1:-1;10755:49:0;:59;;-1:-1:-1;;10755:59:0;;;;;;;;;;;10825:45;;10849:5;;10856:4;;10862:7;;10825:45;-1:-1:-1;;;;;10825:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10883:18;10895:5;10883:11;:18::i;:::-;-1:-1:-1;;;;;10917:18:0;;;10947:3;10917:18;;;:11;:18;;;;;;;:34;10916:68;;;;-1:-1:-1;;;;;;10957:26:0;;-1:-1:-1;;;;;;;;;;;10957:26:0;;10916:68;10912:193;;;-1:-1:-1;;;;;11001:18:0;;;;;;;:11;:18;;;;;;:25;;-1:-1:-1;;;;;;11001:25:0;11022:4;11001:25;;;;;;:18;;11063:13;;11022:4;;11083:8;;11063:29;;;;;;-1:-1:-1;;;11063:29:0;;;;;;-1:-1:-1;;;;;11063:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11055:38;;;;;;;;10654:458;;;:::o;11459:461::-;-1:-1:-1;;;;;1949:10:0;1939:21;11552:4;1939:21;;;:9;:21;;;;;;;;1931:30;;;;;;;;11577:25;:56;11613:5;11620:11;11603:29;;;-1:-1:-1;;;;;11603:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;11577:56;;;;;;;;;;;;;;;;11569:65;;;;;;;;-1:-1:-1;;;;;11651:26:0;;-1:-1:-1;;;;;;;;;;;11651:26:0;11647:188;;;-1:-1:-1;;;;;11694:20:0;;:28;;;;11715:6;11694:28;;;;;;;;;;;;;;;;;;;;;;;;;;11647:188;;;-1:-1:-1;;;;;11763:18:0;;;11782;;;;:11;:18;;;;;;;11763;;;;11782;;11802:11;;11815:6;;11782:18;11763:59;;;;;;-1:-1:-1;;;11763:59:0;;;;;;-1:-1:-1;;;;;11763:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11755:68;;;;;;;;11847:41;11861:5;11868:6;11876:11;11847:41;;-1:-1:-1;;;;;11847:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11908:4:0;11459:461;;;;;:::o;10417:150::-;-1:-1:-1;;;;;2040:10:0;2031:20;10468:4;2031:20;;;:8;:20;;;;;;;;2023:29;;;;;;;;10485:12;:20;;-1:-1:-1;;10485:20:0;;;10516:19;10500:5;10516:19;;;;;;;;;;;;;;;;-1:-1:-1;10555:4:0;10417:150;:::o;9763:453::-;10025:12;;9995:4;;10025:12;;;;;10017:21;;;;;;;;10071:12;;10057:10;-1:-1:-1;;;;;10057:26:0;;;10071:12;;10057:26;10049:35;;;;;;10105:78;10113:8;10123:9;10134;10145:11;10158:14;10174:8;10105:7;:78::i;:::-;10097:87;;;;;;;;-1:-1:-1;10204:4:0;9763:453;;;;;;;;:::o;2498:187::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;2575:22:0;;;;2567:31;;;;;;2630:12;;2609:34;;-1:-1:-1;;;;;2630:12:0;2609:34;;-1:-1:-1;;;;;2609:34:0;;;;;;;;;;;;;;2654:12;:23;;-1:-1:-1;;;;;;2654:23:0;-1:-1:-1;;;;;2654:23:0;;;;;;;;;;2498:187::o;3267:194::-;3315:12;;3331:10;-1:-1:-1;;;;;3315:26:0;;;:12;;:26;3307:35;;;;;;3366:12;;;3380:5;3353:33;;-1:-1:-1;;;;;3366:12:0;;;;3380:5;3353:33;;-1:-1:-1;;;;;3353:33:0;;;;;;;;;;;;;;;;;;;;;;3405:12;;;;3397:20;;-1:-1:-1;;;;;;3397:20:0;;;-1:-1:-1;;;;;3405:12:0;;3397:20;;;;3428:25;;;3267:194::o;2866:223::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;2950:22:0;;;;2942:31;;;;;;2984:30;3005:8;2984:30;;-1:-1:-1;;;;;2984:30:0;;;;;;;;;;;;;;3048:5;;3025:29;;3038:8;;-1:-1:-1;;;;;3048:5:0;3025:29;;-1:-1:-1;;;;;3025:29:0;;;;;;;;;;;;;;;;;;;;;;3065:5;:16;;-1:-1:-1;;;;;;3065:16:0;-1:-1:-1;;;;;3065:16:0;;;;;;;;;;2866:223::o;2186:96::-;2232:9;;:::i;:::-;2261:13;2254:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2254:20:0;;;;;;;;;;;;;;;;;;;;;;2186:96;:::o;13797:888::-;13898:4;13915:11;13937;14275:9;14364:12;14534:15;13966:12;;;;;;;;;;;13965:13;13961:27;;;13987:1;13980:8;;;;13961:27;-1:-1:-1;;;;;;;;;;;;;;;;14005:24:0;;;14001:262;;;14054:4;14046:12;;14081:4;14073:12;;14001:262;;;-1:-1:-1;;;;;;;;;;;;;;;;14107:25:0;;;14103:160;;;14157:5;14149:13;;14185:3;14177:11;;14103:160;;;14228:1;14221:8;;;;14103:160;14287:23;;-1:-1:-1;;;;;14287:23:0;:31;14319:5;14326:11;14339:5;14346:6;14287:23;:66;;;;;;;-1:-1:-1;;;14287:66:0;;;;;;-1:-1:-1;;;;;14287:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14275:78;;14379:35;14390:3;14395:4;14401:6;14409:4;14379:10;:35::i;:::-;14364:50;;14450:7;14431:16;14442:4;14431:10;:16::i;:::-;:26;14427:40;;;14466:1;14459:8;;;;14427:40;14484:19;;-1:-1:-1;;;;;14484:19:0;:33;14480:174;;14552:19;;-1:-1:-1;;;;;14552:19:0;:33;14586:3;14591:4;14552:19;:44;;;;;;;-1:-1:-1;;;14552:44:0;;;;;;-1:-1:-1;;;;;14552:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14615:17:0;;;14611:31;;;14641:1;14634:8;;;;14611:31;14673:4;14666:11;;13797:888;;;;;;;;;;;;:::o;4377:319::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;4456:22:0;;;;;;:9;:22;;;;;;;;4455:23;4447:32;;;;;;4521:14;:21;1717:2;4521:38;;4513:47;;;;;;4573:32;4587:11;4600:4;4573:32;;-1:-1:-1;;;;;4573:32:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4616:22:0;;;;;;:9;:22;;;;;:29;;-1:-1:-1;;4616:29:0;4641:4;4616:29;;;;;;4656:14;:32;;:14;;:32;;;:14;:32;;:::i;13526:263::-;13612:4;13629:16;13676;13648:17;13660:4;13648:11;:17::i;:::-;13629:36;;13695:16;13707:3;13695:11;:16::i;:::-;13676:35;;13731:50;13742:6;13750:11;13763;13776:4;13731:10;:50::i;:::-;13724:57;13526:263;-1:-1:-1;;;;;;;13526:263:0:o;8959:44::-;;;;;;;;;;;;-1:-1:-1;;;;;8959:44:0;;:::o;4704:481::-;4859:6;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;4783:19:0;;;;;;:9;:19;;;;;;;;4775:28;;;;;;;;-1:-1:-1;;;;;;4814:19:0;;4836:5;4814:19;;;:9;:19;;;;;:27;;-1:-1:-1;;4814:27:0;;;4854:324;4875:14;:21;4871:25;;4854:324;;;4943:8;-1:-1:-1;;;;;4922:29:0;:14;4937:1;4922:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4922:17:0;:29;4918:249;;;4992:14;5007:21;;-1:-1:-1;;5007:25:0;;;4992:41;;;;;;;;;;;;;;;;4972:14;:17;;-1:-1:-1;;;;;4992:41:0;;;;4987:1;;4972:17;;;;;;;;;;;;;;;:61;;-1:-1:-1;;;;;;4972:61:0;-1:-1:-1;;;;;4972:61:0;;;;;;;;;;5052:14;:26;;-1:-1:-1;;5052:26:0;;;;;;:::i;:::-;;5097:30;5111:8;5121:5;5097:30;;-1:-1:-1;;;;;5097:30:0;;;;;;;;;;;;;;;;;;;;;;5146:5;;4918:249;4898:3;;4854:324;;12010:534;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;12226:27:0;;;;12218:36;;;;;;-1:-1:-1;;;;;12273:30:0;;;;12265:39;;;;;;12317:12;:28;;-1:-1:-1;;;;;12317:28:0;;;-1:-1:-1;;;;;;12317:28:0;;;;;;;;12356:23;:42;;;;;;;;;;;;;12409:19;:34;;;;;;;;;;;;;;;12456:80;;12477:12;;;12491:23;;;;12516:19;12456:80;;-1:-1:-1;;;;;12456:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12010:534;;;:::o;8687:27::-;;;-1:-1:-1;;;;;8687:27:0;;:::o;8450:153::-;1862:5;;1848:10;-1:-1:-1;;;;;1848:19:0;;;1862:5;;1848:19;1840:28;;;;;;-1:-1:-1;;;;;8532:15:0;;:23;;;;8548:6;8532:23;;;;;;;;;;;;;;;;;;;;;;;;;;8566:29;8580:6;8588;8566:29;;;;;-1:-1:-1;;;;;8566:29:0;;;;;;;;;;;;;;;;8450:153;;:::o;8752:55::-;;;-1:-1:-1;;;;;8752:55:0;;:::o;8721:24::-;;;;;;;;;:::o;8868:55::-;;;;;;;;;;;;;;;:::o;1442:20::-;;;-1:-1:-1;;;;;1442:20:0;;:::o;12798:448::-;12851:4;;;;-1:-1:-1;;;;;12872:26:0;;-1:-1:-1;;;;;;;;;;;12872:26:0;12868:371;;;12920:4;-1:-1:-1;;;;;12920:12:0;;12913:19;;;;12868:371;-1:-1:-1;;;;;12980:18:0;;;;;;;:11;:18;;;;;;;;;;;-1:-1:-1;12980:18:0;;13036:15;;12980:18;;13036:23;;;;;;-1:-1:-1;;;13036:23:0;;;;;;-1:-1:-1;;;;;13036:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;13099:15:0;;;13115:6;13123:4;13099:29;;;;;;;;-1:-1:-1;;;13099:29:0;;;;;;-1:-1:-1;;;;;13099:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13153:35:0;;;13152:75;;13210:17;13152:75;;;13192:15;13152:75;13145:82;;12868:371;12798:448;;;;;;:::o;13254:264::-;13341:4;13358:16;13405;13377:17;13389:4;13377:11;:17::i;:::-;13358:36;;13424:16;13436:3;13424:11;:16::i;:::-;13405:35;;13460:50;13471:6;13479:11;13492;13505:4;13460:10;:50::i;5785:174::-;-1:-1:-1;;;;;5843:26:0;;-1:-1:-1;;;;;;;;;;;5843:26:0;5839:112;;;-1:-1:-1;;;;;5871:15:0;;;;;;:8;:15;;;;;5727:2;5871:30;;5839:112;;;5935:5;-1:-1:-1;;;;;5935:14:0;;:16;;;;;;;;;;;-1:-1:-1;;;5935:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5917:15:0;;;;;;:8;:15;;;;;:34;-1:-1:-1;5839:112:0;5785:174;:::o;15027:1694::-;15246:4;15569:15;15746:11;15768:15;15335:8;15331:226;;;15385:1;15368:18;;15360:27;;;;;;-1:-1:-1;;;;;15406:29:0;;-1:-1:-1;;;;;;;;;;;15406:29:0;15402:143;;;15462:9;:22;;15454:31;;;;;;15402:143;;;15530:9;:14;15522:23;;;;;;15587:58;15598:8;15608:9;15619;15630:14;15587:10;:58::i;:::-;15569:76;-1:-1:-1;15702:1:0;15689:14;;15681:23;;;;;;-1:-1:-1;;;;;15798:29:0;;-1:-1:-1;;;;;;;;;;;15798:29:0;15794:220;;;-1:-1:-1;15896:9:0;;-1:-1:-1;15862:10:0;15794:220;;;-1:-1:-1;15994:8:0;;-1:-1:-1;;;15952:19:0;;15794:220;16026:23;;-1:-1:-1;;;;;16026:23:0;:39;16080:5;16100:11;16026:23;16142:12;16026:139;;-1:-1:-1;;;16026:139:0;;;;;;-1:-1:-1;;;;;16026:139:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16026:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;16213:29:0;;-1:-1:-1;;;;;;;;;;;16213:29:0;16209:138;;-1:-1:-1;;;;;16267:21:0;;;16301;;;;:11;:21;;;;;;;16267;;;;16289:10;;16301:21;;;16324:9;;16301:21;16267:67;;;;;;-1:-1:-1;;;16267:67:0;;;;;;-1:-1:-1;;;;;16267:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16259:76;;;;;;;;-1:-1:-1;;;;;16392:30:0;;-1:-1:-1;;;;;;;;;;;16392:30:0;16388:208;;;-1:-1:-1;;;;;16439:20:0;;:32;;;;16460:10;16439:32;;;;;;;;;;;;;;;;;;;;;;;;;;16388:208;;;-1:-1:-1;;;;;16512:22:0;;;16535;;;;:11;:22;;;;;;;16512;;;;16535;;16559:11;;16572:10;;16535:22;16512:71;;;;;;-1:-1:-1;;;16512:71:0;;;;;;-1:-1:-1;;;;;16512:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16504:80;;;;;;;;16621:10;-1:-1:-1;;;;;16608:81:0;;16633:8;16643:9;16654;16665:10;16677:11;16608:81;;-1:-1:-1;;;;;16608:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16709:4:0;;15027:1694;-1:-1:-1;;;;;;;;;15027:1694:0:o;5967:479::-;6023:4;;-1:-1:-1;;;;;6044:26:0;;-1:-1:-1;;;;;;;;;;;6044:26:0;6040:51;;;5727:2;6072:19;;;;6040:51;-1:-1:-1;;;;;;6146:15:0;;;;;;:8;:15;;;;;;6362:18;;6359:46;;;6389:5;-1:-1:-1;;;;;6389:14:0;;:16;;;;;;;;;;;-1:-1:-1;;;6389:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6382:23;;;;6359:46;6425:13;6418:20;;5967:479;;;;;:::o;7031:861::-;7133:4;;;5523:6;7158:17;;;7150:26;;;;;;5588:17;7195:16;;;7187:25;;;;;;7369:26;;;7365:430;;5679:2;7421:25;;;7420:43;;7412:52;;;;;;-1:-1:-1;;7519:25:0;;;7514:2;:31;7492:54;;5472:6;7492:54;7576:4;7365:430;;;5679:2;7622:25;;;7621:43;;7613:52;;;;;;-1:-1:-1;;5472:6:0;7693:18;;7755:25;;;7750:2;:31;7742:40;;7365:430;7844:11;7839:1;7825:11;7813:9;:23;:27;7812:43;;;;;;;;;7031:861;-1:-1:-1;;;;;;;7031:861:0:o;6454:569::-;6556:4;5523:6;6581:17;;;6573:26;;;;;;5588:17;6618:16;;;6610:25;;;;;;6652:26;;;6648:368;;5679:2;6704:25;;;6703:43;;6695:52;;;;;;5472:6;6770:13;;;6792:25;;;6787:2;:31;6770:49;6769:63;;6762:70;;;;6648:368;5679:2;6874:25;;;6873:43;;6865:52;;;;;;6990:11;6976;:25;6971:2;:31;5472:6;6958:45;6949:4;6940:6;:13;6939:65;;;;;;6648:368;6454:569;;;;;;:::o;8610:8114::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://c393da12c7977907082fc6c1f072107b1f1fc341ed6976cbc81f3c7a2239ddad
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.