ETH Price: $2,557.88 (+3.85%)

Contract

0x621813A947ECE697197C54386F833fDD1a4d7617
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Ether120124932021-03-10 18:44:041267 days ago1615401844IN
0x621813A9...D1a4d7617
0 ETH0.004173130
Disable Trade120124722021-03-10 18:40:251267 days ago1615401625IN
0x621813A9...D1a4d7617
0 ETH0.00339157115.25000084
Withdraw Token120049912021-03-09 15:04:371268 days ago1615302277IN
0x621813A9...D1a4d7617
0 ETH0.0126768300
Withdraw Ether120049892021-03-09 15:04:181268 days ago1615302258IN
0x621813A9...D1a4d7617
0 ETH0.0096228300
Withdraw Token120049502021-03-09 14:55:491268 days ago1615301749IN
0x621813A9...D1a4d7617
0 ETH0.0126696300
Withdraw Ether120049472021-03-09 14:55:081268 days ago1615301708IN
0x621813A9...D1a4d7617
0 ETH0.0096192300
Enable Trade118232252021-02-09 15:59:581296 days ago1612886398IN
0x621813A9...D1a4d7617
0 ETH0.00713538245
Set Contracts118228492021-02-09 14:38:231296 days ago1612881503IN
0x621813A9...D1a4d7617
0 ETH0.014782400
Disable Trade118228442021-02-09 14:37:261296 days ago1612881446IN
0x621813A9...D1a4d7617
0 ETH0.00544418185
Enable Trade118224062021-02-09 13:04:151296 days ago1612875855IN
0x621813A9...D1a4d7617
0 ETH0.00538794185
Set Contracts118223982021-02-09 13:02:021296 days ago1612875722IN
0x621813A9...D1a4d7617
0 ETH0.0074079180
Withdraw Ether118210322021-02-09 8:01:461296 days ago1612857706IN
0x621813A9...D1a4d7617
0 ETH0.005136160
Withdraw Ether118209972021-02-09 7:52:251296 days ago1612857145IN
0x621813A9...D1a4d7617
0 ETH0.00513024160
Disable Trade118209782021-02-09 7:48:321296 days ago1612856912IN
0x621813A9...D1a4d7617
0 ETH0.00482619164
Approve Withdraw...118179382021-02-08 20:30:241297 days ago1612816224IN
0x621813A9...D1a4d7617
0 ETH0.020157300
Approve Withdraw...118178782021-02-08 20:16:501297 days ago1612815410IN
0x621813A9...D1a4d7617
0 ETH0.0151812300
Transfer118176262021-02-08 19:17:311297 days ago1612811851IN
0x621813A9...D1a4d7617
0.2 ETH0.00712129318
Transfer117993712021-02-06 0:00:231300 days ago1612569623IN
0x621813A9...D1a4d7617
2.3273946 ETH0.00627032280
Set Contracts117956792021-02-05 10:25:181300 days ago1612520718IN
0x621813A9...D1a4d7617
0 ETH0.00554325150
Transfer117900582021-02-04 13:35:591301 days ago1612445759IN
0x621813A9...D1a4d7617
0.10789658 ETH0.00604638270
Approve Withdraw...117852422021-02-03 19:43:431302 days ago1612381423IN
0x621813A9...D1a4d7617
0 ETH0.02082978180
Add Alerter117851922021-02-03 19:33:511302 days ago1612380831IN
0x621813A9...D1a4d7617
0 ETH0.01432032160
Add Operator117849802021-02-03 18:45:231302 days ago1612377923IN
0x621813A9...D1a4d7617
0 ETH0.0089732100
Set Contracts117848702021-02-03 18:21:451302 days ago1612376505IN
0x621813A9...D1a4d7617
0 ETH0.0032755100
0x60606040117842182021-02-03 15:54:421302 days ago1612367682IN
 Create: KyberReserve
0 ETH0.91622825250

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
120124932021-03-10 18:44:041267 days ago1615401844
0x621813A9...D1a4d7617
93.98461782 ETH
120115342021-03-10 15:15:341267 days ago1615389334
0x621813A9...D1a4d7617
0.054901 ETH
120071252021-03-09 22:55:571268 days ago1615330557
0x621813A9...D1a4d7617
3.36228727 ETH
120071222021-03-09 22:55:141268 days ago1615330514
0x621813A9...D1a4d7617
5.67860982 ETH
120071132021-03-09 22:53:231268 days ago1615330403
0x621813A9...D1a4d7617
9.08896667 ETH
120057442021-03-09 17:48:311268 days ago1615312111
0x621813A9...D1a4d7617
0.47205507 ETH
120053532021-03-09 16:22:211268 days ago1615306941
0x621813A9...D1a4d7617
3.99401181 ETH
120053002021-03-09 16:11:101268 days ago1615306270
0x621813A9...D1a4d7617
3.9677734 ETH
120051172021-03-09 15:33:341268 days ago1615304014
0x621813A9...D1a4d7617
3.79835739 ETH
120050162021-03-09 15:10:191268 days ago1615302619
0x621813A9...D1a4d7617
4.09945465 ETH
120050082021-03-09 15:09:101268 days ago1615302550
0x621813A9...D1a4d7617
3.70642453 ETH
120049892021-03-09 15:04:181268 days ago1615302258
0x621813A9...D1a4d7617
7.67954489 ETH
120049892021-03-09 15:04:181268 days ago1615302258
0x621813A9...D1a4d7617
14.80233535 ETH
120049892021-03-09 15:04:181268 days ago1615302258
0x621813A9...D1a4d7617
50.65 ETH
120049882021-03-09 15:04:141268 days ago1615302254
0x621813A9...D1a4d7617
4.13387485 ETH
120049472021-03-09 14:55:081268 days ago1615301708
0x621813A9...D1a4d7617
1.1 ETH
120049222021-03-09 14:49:191268 days ago1615301359
0x621813A9...D1a4d7617
1.998 ETH
120048512021-03-09 14:36:271268 days ago1615300587
0x621813A9...D1a4d7617
3.75789621 ETH
120048322021-03-09 14:32:551268 days ago1615300375
0x621813A9...D1a4d7617
4.66631765 ETH
120047822021-03-09 14:21:291268 days ago1615299689
0x621813A9...D1a4d7617
3.69409565 ETH
120047632021-03-09 14:17:291268 days ago1615299449
0x621813A9...D1a4d7617
14.57985405 ETH
120042552021-03-09 12:17:551268 days ago1615292275
0x621813A9...D1a4d7617
7.34900276 ETH
120033532021-03-09 8:54:351268 days ago1615280075
0x621813A9...D1a4d7617
4.21591004 ETH
120029922021-03-09 7:33:551268 days ago1615275235
0x621813A9...D1a4d7617
0.25783506 ETH
120029092021-03-09 7:15:451268 days ago1615274145
0x621813A9...D1a4d7617
5.54493566 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KyberReserve

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-02-04
*/

/**
 *Submitted for verification at Etherscan.io on 2020-08-15
*/

// File: contracts/sol4/ERC20Interface.sol

pragma solidity 0.4.18;


// https://github.com/ethereum/EIPs/issues/20
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);
}

// File: contracts/sol4/Utils.sol

pragma solidity 0.4.18;



/// @title Kyber constants contract
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
    }
}

// File: contracts/sol4/PermissionGroups.sol

pragma solidity 0.4.18;


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;
            }
        }
    }
}

// File: contracts/sol4/Withdrawable.sol

pragma solidity 0.4.18;




/**
 * @title Contracts that should be able to recover tokens or ethers
 * @author Ilan Doron
 * @dev This allows to recover any tokens or Ethers received in a contract.
 * This will prevent any accidental loss of tokens.
 */
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);
    }
}

// File: contracts/sol4/ConversionRatesInterface.sol

pragma solidity 0.4.18;



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);
}

// File: contracts/sol4/SanityRatesInterface.sol

pragma solidity 0.4.18;


interface SanityRatesInterface {
    function getSanityRate(ERC20 src, ERC20 dest) public view returns(uint);
}

// File: contracts/sol4/KyberReserveInterface.sol

pragma solidity 0.4.18;


/// @title Kyber Reserve contract
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);
}

// File: contracts/sol4/reserves/KyberReserve.sol

pragma solidity 0.4.18;








/// @title Kyber Reserve contract
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

Contract ABI

[{"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"}]

606060405234156200001057600080fd5b6040516060806200423983398101604052808051906020019091908051906020019091908051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515620000bc57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620000f957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156200013657600080fd5b82600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760146101000a81548160ff02191690831515021790555050505061401380620002266000396000f30060606040526004361061017f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806299d3861461020057806301a12fd31461022d5780631bc7bfec1461026657806326782247146102be57806327a099d8146103135780633ccdbb281461037d578063408ee7fe146103de57806347e6924f14610417578063546dc71c1461046c57806369328dec146104cf5780636940030f146105485780636cf698111461057557806375829def1461061657806377f50f971461064f5780637acc8678146106645780637c423f541461069d5780637cd44272146107075780639870d7fe14610785578063a7fca953146107be578063a80cbac61461083c578063ac8a584a146108b5578063b3066d49146108ee578063b78b842d14610965578063ce56c454146109ba578063d5847d33146109fc578063d621e81314610a51578063d7b7024d14610a7e578063f851a44014610abd578063f8b2cb4f14610b12578063fa64dffa14610b5f575b7f2d0c0a8842b9944ece1495eb61121621b5e36bd6af3bba0318c695f525aef79f73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee34604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1005b341561020b57600080fd5b610213610bdd565b604051808215151515815260200191505060405180910390f35b341561023857600080fd5b610264600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c98565b005b341561027157600080fd5b6102bc600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f5a565b005b34156102c957600080fd5b6102d161110a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561031e57600080fd5b610326611130565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561036957808201518184015260208101905061034e565b505050509050019250505060405180910390f35b341561038857600080fd5b6103dc600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111c4565b005b34156103e957600080fd5b610415600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611394565b005b341561042257600080fd5b61042a61158a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561047757600080fd5b6104cd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506115b0565b005b34156104da57600080fd5b61052e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506119d2565b604051808215151515815260200191505060405180910390f35b341561055357600080fd5b61055b611d8f565b604051808215151515815260200191505060405180910390f35b6105fc600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919080351515906020019091905050611e47565b604051808215151515815260200191505060405180910390f35b341561062157600080fd5b61064d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ee7565b005b341561065a57600080fd5b610662612047565b005b341561066f57600080fd5b61069b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612223565b005b34156106a857600080fd5b6106b0612418565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106f35780820151818401526020810190506106d8565b505050509050019250505060405180910390f35b341561071257600080fd5b61076f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919080359060200190919050506124ac565b6040518082815260200191505060405180910390f35b341561079057600080fd5b6107bc600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061283c565b005b34156107c957600080fd5b610826600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050612a32565b6040518082815260200191505060405180910390f35b341561084757600080fd5b610873600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612a65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108c057600080fd5b6108ec600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612a98565b005b34156108f957600080fd5b610963600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d5d565b005b341561097057600080fd5b610978613029565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109c557600080fd5b6109fa600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061304f565b005b3415610a0757600080fd5b610a0f613159565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a5c57600080fd5b610a6461317f565b604051808215151515815260200191505060405180910390f35b3415610a8957600080fd5b610aa3600480803560001916906020019091905050613192565b604051808215151515815260200191505060405180910390f35b3415610ac857600080fd5b610ad06131b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b1d57600080fd5b610b49600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506131d7565b6040518082815260200191505060405180910390f35b3415610b6a57600080fd5b610bc7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050613474565b6040518082815260200191505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c3a57600080fd5b6001600760146101000a81548160ff0219169083151502179055507f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356001604051808215151515815260200191505060405180910390a16001905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf557600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d4d57600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600090505b600580549050811015610f56578173ffffffffffffffffffffffffffffffffffffffff16600582815481101515610ddd57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f4b576005600160058054905003815481101515610e3c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600582815481101515610e7757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005805480919060019003610ed59190613f56565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1610f56565b806001019050610daa565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fb557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ff157600080fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f81995c7b922889ac0a81e41866106d4046268ea3a9abaae9f9e080a6ce36ee7d8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611138613f82565b60048054806020026020016040519081016040528092919081815260200182805480156111ba57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611170575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561121f57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156112ca57600080fd5b6102c65a03f115156112db57600080fd5b5050506040518051905015156112f057600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ef57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561144857600080fd5b603260058054905010151561145c57600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a16001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600580548060010182816115389190613f96565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561160b57600080fd5b80600a60008585604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019250505060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd5fd5351efae1f4bb760079da9f0ff9589e2c3e216337ca9d39cdff573b245c4838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182151515158152602001935050505060405180910390a161177d836134a7565b600073ffffffffffffffffffffffffffffffffffffffff16600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015611858575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119cd5730600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3307f80000000000000000000000000000000000000000000000000000000000000006000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156119a657600080fd5b6102c65a03f115156119b757600080fd5b5050506040518051905015156119cc57600080fd5b5b505050565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a2c57600080fd5b600a60008584604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019250505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515611af357600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b80578173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501515611b7b57600080fd5b611ce5565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684866000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1515611cbe57600080fd5b6102c65a03f11515611ccf57600080fd5b505050604051805190501515611ce457600080fd5b5b7fb67719fc33c1f17d31bf3a698690d62066b1e0bae28fcd3c56cf2c015c2863d6848484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1600190509392505050565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611de957600080fd5b6000600760146101000a81548160ff0219169083151502179055507f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051808215151515815260200191505060405180910390a16001905090565b6000600760149054906101000a900460ff161515611e6457600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ec057600080fd5b611ece878787878787613607565b1515611ed957600080fd5b600190509695505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f4257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611f7e57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc40600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156120a357600080fd5b7f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561227e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156122ba57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a17f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed816000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612420613f82565b60058054806020026020016040519081016040528092919081815260200182805480156124a257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612458575b5050505050905090565b600080600080600080600760149054906101000a900460ff1615156124d4576000955061282f565b8973ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff1614156125285760019350889450612586565b8873ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16141561257c5760009350899450612585565b6000955061282f565b5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8e9c22e8689878c6000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828152602001945050505050602060405180830381600087803b151561266757600080fd5b6102c65a03f1151561267857600080fd5b5050506040518051905092506126908a8a8a86613474565b91508161269c8a6131d7565b10156126ab576000955061282f565b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561282b57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a58092b78b8b6000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15156127fc57600080fd5b6102c65a03f1151561280d57600080fd5b5050506040518051905090508083111561282a576000955061282f565b5b8295505b5050505050949350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561289757600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156128f057600080fd5b603260048054905010151561290457600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a16001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600480548060010182816129e09190613f96565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000806000612a4086613cb3565b9150612a4b87613cb3565b9050612a5985828487613dea565b92505050949350505050565b600b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612af557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612b4d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600090505b600480549050811015612d59578173ffffffffffffffffffffffffffffffffffffffff16600482815481101515612bdd57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d4e576004600160048054905003815481101515612c3c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600482815481101515612c7757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600481818054905003915081612cd89190613f56565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1612d59565b806001019050612baa565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612db857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612df457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612e3057600080fd5b82600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7a85322644a4462d8ff5482d2a841a4d231f8cfb3c9f4a50f66f8b2bd568c31c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130aa57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015156130ea57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760149054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613244573073ffffffffffffffffffffffffffffffffffffffff1631935061346c565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692508473ffffffffffffffffffffffffffffffffffffffff166370a08231846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561334957600080fd5b6102c65a03f1151561335a57600080fd5b5050506040518051905091508473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84306000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561343d57600080fd5b6102c65a03f1151561344e57600080fd5b5050506040518051905090508082106134675780613469565b815b93505b505050919050565b600080600061348286613cb3565b915061348d87613cb3565b905061349b85828487613ea4565b92505050949350505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613539576012600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613604565b8073ffffffffffffffffffffffffffffffffffffffff1663313ce5676000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156135a557600080fd5b6102c65a03f115156135b657600080fd5b50505060405180519050600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b600080600080841561368e5760008611151561362257600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16141561367d57883414151561367857600080fd5b61368d565b60003414151561368c57600080fd5b5b5b61369a8a898b89613474565b92506000831115156136ab57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614156136fe57829050879150613727565b887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0290508991505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6fd210383836000436040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050600060405180830381600087803b15156137fc57600080fd5b6102c65a03f1151561380d57600080fd5b50505073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415156139be578973ffffffffffffffffffffffffffffffffffffffff166323b872dd33600b60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c6000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561399757600080fd5b6102c65a03f115156139a857600080fd5b5050506040518051905015156139bd57600080fd5b5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415613a4b578673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501515613a4657600080fd5b613bb0565b8773ffffffffffffffffffffffffffffffffffffffff166323b872dd600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689866000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1515613b8957600080fd5b6102c65a03f11515613b9a57600080fd5b505050604051805190501515613baf57600080fd5b5b3373ffffffffffffffffffffffffffffffffffffffff167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8b8b8b878c604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390a2600193505050509695505050505050565b60008073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613d075760129150613de4565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415613de0578273ffffffffffffffffffffffffffffffffffffffff1663313ce5676000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515613dbe57600080fd5b6102c65a03f11515613dcf57600080fd5b505050604051805190509150613de4565b8091505b50919050565b60008060006b204fce5e3e250261100000008711151515613e0a57600080fd5b620f4240670de0b6b3a7640000028411151515613e2657600080fd5b8486101515613e5d57601285870311151515613e4157600080fd5b848603600a0a87670de0b6b3a764000002029150839050613e87565b601286860311151515613e6f57600080fd5b86670de0b6b3a7640000029150858503600a0a840290505b80600182840103811515613e9757fe5b0492505050949350505050565b60006b204fce5e3e250261100000008511151515613ec157600080fd5b620f4240670de0b6b3a7640000028211151515613edd57600080fd5b8383101515613f1c57601284840311151515613ef857600080fd5b670de0b6b3a7640000848403600a0a83870202811515613f1457fe5b049050613f4e565b601283850311151515613f2e57600080fd5b828403600a0a670de0b6b3a764000002828602811515613f4a57fe5b0490505b949350505050565b815481835581811511613f7d57818360005260206000209182019101613f7c9190613fc2565b5b505050565b602060405190810160405280600081525090565b815481835581811511613fbd57818360005260206000209182019101613fbc9190613fc2565b5b505050565b613fe491905b80821115613fe0576000816000905550600101613fc8565b5090565b905600a165627a7a72305820519812d6cb3809e0c6b793b1afcf4287e15c62966a22860b04e16ed3b52ca7b300290000000000000000000000009cb7bb6d4795a281860b9bfb7b1441361cc9a794000000000000000000000000d4bf5d7d3aa3784429cf76dbebc05ea09e782f0c0000000000000000000000007a1b21f4be52fbc86b0d94a416ffa3c19ebda250

Deployed Bytecode

0x60606040526004361061017f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806299d3861461020057806301a12fd31461022d5780631bc7bfec1461026657806326782247146102be57806327a099d8146103135780633ccdbb281461037d578063408ee7fe146103de57806347e6924f14610417578063546dc71c1461046c57806369328dec146104cf5780636940030f146105485780636cf698111461057557806375829def1461061657806377f50f971461064f5780637acc8678146106645780637c423f541461069d5780637cd44272146107075780639870d7fe14610785578063a7fca953146107be578063a80cbac61461083c578063ac8a584a146108b5578063b3066d49146108ee578063b78b842d14610965578063ce56c454146109ba578063d5847d33146109fc578063d621e81314610a51578063d7b7024d14610a7e578063f851a44014610abd578063f8b2cb4f14610b12578063fa64dffa14610b5f575b7f2d0c0a8842b9944ece1495eb61121621b5e36bd6af3bba0318c695f525aef79f73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee34604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1005b341561020b57600080fd5b610213610bdd565b604051808215151515815260200191505060405180910390f35b341561023857600080fd5b610264600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c98565b005b341561027157600080fd5b6102bc600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f5a565b005b34156102c957600080fd5b6102d161110a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561031e57600080fd5b610326611130565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561036957808201518184015260208101905061034e565b505050509050019250505060405180910390f35b341561038857600080fd5b6103dc600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111c4565b005b34156103e957600080fd5b610415600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611394565b005b341561042257600080fd5b61042a61158a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561047757600080fd5b6104cd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506115b0565b005b34156104da57600080fd5b61052e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506119d2565b604051808215151515815260200191505060405180910390f35b341561055357600080fd5b61055b611d8f565b604051808215151515815260200191505060405180910390f35b6105fc600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919080351515906020019091905050611e47565b604051808215151515815260200191505060405180910390f35b341561062157600080fd5b61064d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ee7565b005b341561065a57600080fd5b610662612047565b005b341561066f57600080fd5b61069b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612223565b005b34156106a857600080fd5b6106b0612418565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106f35780820151818401526020810190506106d8565b505050509050019250505060405180910390f35b341561071257600080fd5b61076f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919080359060200190919050506124ac565b6040518082815260200191505060405180910390f35b341561079057600080fd5b6107bc600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061283c565b005b34156107c957600080fd5b610826600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050612a32565b6040518082815260200191505060405180910390f35b341561084757600080fd5b610873600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612a65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108c057600080fd5b6108ec600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612a98565b005b34156108f957600080fd5b610963600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d5d565b005b341561097057600080fd5b610978613029565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109c557600080fd5b6109fa600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061304f565b005b3415610a0757600080fd5b610a0f613159565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a5c57600080fd5b610a6461317f565b604051808215151515815260200191505060405180910390f35b3415610a8957600080fd5b610aa3600480803560001916906020019091905050613192565b604051808215151515815260200191505060405180910390f35b3415610ac857600080fd5b610ad06131b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b1d57600080fd5b610b49600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506131d7565b6040518082815260200191505060405180910390f35b3415610b6a57600080fd5b610bc7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050613474565b6040518082815260200191505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c3a57600080fd5b6001600760146101000a81548160ff0219169083151502179055507f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356001604051808215151515815260200191505060405180910390a16001905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf557600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d4d57600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600090505b600580549050811015610f56578173ffffffffffffffffffffffffffffffffffffffff16600582815481101515610ddd57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f4b576005600160058054905003815481101515610e3c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600582815481101515610e7757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005805480919060019003610ed59190613f56565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1610f56565b806001019050610daa565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fb557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ff157600080fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f81995c7b922889ac0a81e41866106d4046268ea3a9abaae9f9e080a6ce36ee7d8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611138613f82565b60048054806020026020016040519081016040528092919081815260200182805480156111ba57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611170575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561121f57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156112ca57600080fd5b6102c65a03f115156112db57600080fd5b5050506040518051905015156112f057600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ef57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561144857600080fd5b603260058054905010151561145c57600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a16001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600580548060010182816115389190613f96565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561160b57600080fd5b80600a60008585604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019250505060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd5fd5351efae1f4bb760079da9f0ff9589e2c3e216337ca9d39cdff573b245c4838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182151515158152602001935050505060405180910390a161177d836134a7565b600073ffffffffffffffffffffffffffffffffffffffff16600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015611858575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119cd5730600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3307f80000000000000000000000000000000000000000000000000000000000000006000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156119a657600080fd5b6102c65a03f115156119b757600080fd5b5050506040518051905015156119cc57600080fd5b5b505050565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a2c57600080fd5b600a60008584604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019250505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515611af357600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b80578173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501515611b7b57600080fd5b611ce5565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684866000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1515611cbe57600080fd5b6102c65a03f11515611ccf57600080fd5b505050604051805190501515611ce457600080fd5b5b7fb67719fc33c1f17d31bf3a698690d62066b1e0bae28fcd3c56cf2c015c2863d6848484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1600190509392505050565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611de957600080fd5b6000600760146101000a81548160ff0219169083151502179055507f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051808215151515815260200191505060405180910390a16001905090565b6000600760149054906101000a900460ff161515611e6457600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ec057600080fd5b611ece878787878787613607565b1515611ed957600080fd5b600190509695505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f4257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611f7e57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc40600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156120a357600080fd5b7f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561227e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156122ba57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a17f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed816000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612420613f82565b60058054806020026020016040519081016040528092919081815260200182805480156124a257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612458575b5050505050905090565b600080600080600080600760149054906101000a900460ff1615156124d4576000955061282f565b8973ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff1614156125285760019350889450612586565b8873ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff16141561257c5760009350899450612585565b6000955061282f565b5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8e9c22e8689878c6000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828152602001945050505050602060405180830381600087803b151561266757600080fd5b6102c65a03f1151561267857600080fd5b5050506040518051905092506126908a8a8a86613474565b91508161269c8a6131d7565b10156126ab576000955061282f565b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561282b57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a58092b78b8b6000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15156127fc57600080fd5b6102c65a03f1151561280d57600080fd5b5050506040518051905090508083111561282a576000955061282f565b5b8295505b5050505050949350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561289757600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156128f057600080fd5b603260048054905010151561290457600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a16001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600480548060010182816129e09190613f96565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000806000612a4086613cb3565b9150612a4b87613cb3565b9050612a5985828487613dea565b92505050949350505050565b600b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612af557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612b4d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600090505b600480549050811015612d59578173ffffffffffffffffffffffffffffffffffffffff16600482815481101515612bdd57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d4e576004600160048054905003815481101515612c3c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600482815481101515612c7757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600481818054905003915081612cd89190613f56565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1612d59565b806001019050612baa565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612db857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612df457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612e3057600080fd5b82600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7a85322644a4462d8ff5482d2a841a4d231f8cfb3c9f4a50f66f8b2bd568c31c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130aa57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015156130ea57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760149054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613244573073ffffffffffffffffffffffffffffffffffffffff1631935061346c565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692508473ffffffffffffffffffffffffffffffffffffffff166370a08231846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561334957600080fd5b6102c65a03f1151561335a57600080fd5b5050506040518051905091508473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84306000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561343d57600080fd5b6102c65a03f1151561344e57600080fd5b5050506040518051905090508082106134675780613469565b815b93505b505050919050565b600080600061348286613cb3565b915061348d87613cb3565b905061349b85828487613ea4565b92505050949350505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613539576012600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613604565b8073ffffffffffffffffffffffffffffffffffffffff1663313ce5676000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156135a557600080fd5b6102c65a03f115156135b657600080fd5b50505060405180519050600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b600080600080841561368e5760008611151561362257600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16141561367d57883414151561367857600080fd5b61368d565b60003414151561368c57600080fd5b5b5b61369a8a898b89613474565b92506000831115156136ab57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614156136fe57829050879150613727565b887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0290508991505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6fd210383836000436040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050600060405180830381600087803b15156137fc57600080fd5b6102c65a03f1151561380d57600080fd5b50505073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415156139be578973ffffffffffffffffffffffffffffffffffffffff166323b872dd33600b60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c6000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561399757600080fd5b6102c65a03f115156139a857600080fd5b5050506040518051905015156139bd57600080fd5b5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415613a4b578673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501515613a4657600080fd5b613bb0565b8773ffffffffffffffffffffffffffffffffffffffff166323b872dd600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689866000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1515613b8957600080fd5b6102c65a03f11515613b9a57600080fd5b505050604051805190501515613baf57600080fd5b5b3373ffffffffffffffffffffffffffffffffffffffff167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8b8b8b878c604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390a2600193505050509695505050505050565b60008073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613d075760129150613de4565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415613de0578273ffffffffffffffffffffffffffffffffffffffff1663313ce5676000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515613dbe57600080fd5b6102c65a03f11515613dcf57600080fd5b505050604051805190509150613de4565b8091505b50919050565b60008060006b204fce5e3e250261100000008711151515613e0a57600080fd5b620f4240670de0b6b3a7640000028411151515613e2657600080fd5b8486101515613e5d57601285870311151515613e4157600080fd5b848603600a0a87670de0b6b3a764000002029150839050613e87565b601286860311151515613e6f57600080fd5b86670de0b6b3a7640000029150858503600a0a840290505b80600182840103811515613e9757fe5b0492505050949350505050565b60006b204fce5e3e250261100000008511151515613ec157600080fd5b620f4240670de0b6b3a7640000028211151515613edd57600080fd5b8383101515613f1c57601284840311151515613ef857600080fd5b670de0b6b3a7640000848403600a0a83870202811515613f1457fe5b049050613f4e565b601283850311151515613f2e57600080fd5b828403600a0a670de0b6b3a764000002828602811515613f4a57fe5b0490505b949350505050565b815481835581811511613f7d57818360005260206000209182019101613f7c9190613fc2565b5b505050565b602060405190810160405280600081525090565b815481835581811511613fbd57818360005260206000209182019101613fbc9190613fc2565b5b505050565b613fe491905b80821115613fe0576000816000905550600101613fc8565b5090565b905600a165627a7a72305820519812d6cb3809e0c6b793b1afcf4287e15c62966a22860b04e16ed3b52ca7b30029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000009cb7bb6d4795a281860b9bfb7b1441361cc9a794000000000000000000000000d4bf5d7d3aa3784429cf76dbebc05ea09e782f0c0000000000000000000000007a1b21f4be52fbc86b0d94a416ffa3c19ebda250

-----Decoded View---------------
Arg [0] : _kyberNetwork (address): 0x9CB7bB6D4795A281860b9Bfb7B1441361Cc9A794
Arg [1] : _ratesContract (address): 0xd4bf5D7D3Aa3784429cf76DbEbc05ea09E782f0C
Arg [2] : _admin (address): 0x7A1B21f4bE52fbc86b0d94a416ffA3C19eBdA250

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000009cb7bb6d4795a281860b9bfb7b1441361cc9a794
Arg [1] : 000000000000000000000000d4bf5d7d3aa3784429cf76dbebc05ea09e782f0c
Arg [2] : 0000000000000000000000007a1b21f4be52fbc86b0d94a416ffa3c19ebda250


Deployed Bytecode Sourcemap

9680:8114:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10577:42;1037:44;10609:9;10577:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;9680:8114;11334:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6068:463;;;;;;;;;;;;;;;;;;;;;;;;;;;;12248:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3692:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4303:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;7974:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5752:308;;;;;;;;;;;;;;;;;;;;;;;;;;;;9884:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11724:458;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12529:461;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11487:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10833:453;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4721:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;5490:194;;;;;;;;;;;;;;5089:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;4409:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;14867:888:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6600:319;;;;;;;;;;;;;;;;;;;;;;;;;;;;14596:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10029:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6927:481;;;;;;;;;;;;;;;;;;;;;;;;;;;;13080:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9757:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8275:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9822:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9791:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9938:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3665:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13868:448;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14324:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11334:145;11382:4;4085:5;;;;;;;;;;;4071:19;;:10;:19;;;4063:28;;;;;;;;11414:4;11399:12;;:19;;;;;;;;;;;;;;;;;;11429:18;11442:4;11429:18;;;;;;;;;;;;;;;;;;;;;;11467:4;11460:11;;11334:145;:::o;6068:463::-;6217:6;4085:5;;;;;;;;;;;4071:19;;:10;:19;;;4063:28;;;;;;;;6145:8;:17;6154:7;6145:17;;;;;;;;;;;;;;;;;;;;;;;;;6137:26;;;;;;;;6194:5;6174:8;:17;6183:7;6174:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;6226:1;6217:10;;6212:312;6233:13;:20;;;;6229:1;:24;6212:312;;;6299:7;6279:27;;:13;6293:1;6279:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;6275:238;;;6346:13;6383:1;6360:13;:20;;;;:24;6346:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;6327:13;6341:1;6327:16;;;;;;;;;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;6404:13;:22;;;;;;;;;;;;:::i;:::-;;6445:28;6458:7;6467:5;6445:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6492:5;;6275:238;6255:3;;;;;6212:312;;;6068:463;;:::o;12248:198::-;4085:5;;;;;;;;;;;4071:19;;:10;:19;;;4063:28;;;;;;;;12355:3;12337:22;;:6;:22;;;;12329:31;;;;;;;;12392:6;12371:11;:18;12383:5;12371:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12409:29;12424:5;12431:6;12409:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12248:198;;:::o;3692:27::-;;;;;;;;;;;;;:::o;4303:98::-;4350:9;;:::i;:::-;4379:14;4372:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4303:98;:::o;7974:189::-;4085:5;;;;;;;;;;;4071:19;;:10;:19;;;4063:28;;;;;;;;8077:5;:14;;;8092:6;8100;8077:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8069:39;;;;;;;;8119:36;8133:5;8140:6;8148;8119:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7974:189;;;:::o;5752:308::-;4085:5;;;;;;;;;;;4071:19;;:10;:19;;;4063:28;;;;;;;;5829:8;:20;5838:10;5829:20;;;;;;;;;;;;;;;;;;;;;;;;;5828:21;5820:30;;;;;;;;3940:2;5892:13;:20;;;;:37;5884:46;;;;;;;;5943:30;5956:10;5968:4;5943:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6007:4;5984:8;:20;5993:10;5984:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;6022:13;:30;;;;;;;;;;;:::i;:::-;;;;;;;;;;6041:10;6022:30;;;;;;;;;;;;;;;;;;;;;;;5752:308;:::o;9884:47::-;;;;;;;;;;;;;:::o;11724:458::-;4085:5;;;;;;;;;;;4071:19;;:10;:19;;;4063:28;;;;;;;;11877:7;11825:25;:49;11861:5;11868:4;11851:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11825:49;;;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;11895:45;11919:5;11926:4;11932:7;11895:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11953:18;11965:5;11953:11;:18::i;:::-;12017:3;11987:34;;:11;:18;11999:5;11987:18;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;11986:68;;;;;1037:44;12027:26;;:5;:26;;;;11986:68;11982:193;;;12092:4;12071:11;:18;12083:5;12071:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;12133:5;:13;;;12147:4;12153:8;12133:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12125:38;;;;;;;;11982:193;11724:458;;;:::o;12529:461::-;12622:4;4162:9;:21;4172:10;4162:21;;;;;;;;;;;;;;;;;;;;;;;;;4154:30;;;;;;;;12647:25;:56;12683:5;12690:11;12673:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12647:56;;;;;;;;;;;;;;;;;;;;;;;;;;;12639:65;;;;;;;;1037:44;12721:26;;:5;:26;;;12717:188;;;12764:11;:20;;:28;12785:6;12764:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12717:188;;;12833:5;:18;;;12852:11;:18;12864:5;12852:18;;;;;;;;;;;;;;;;;;;;;;;;;12872:11;12885:6;12833:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12825:68;;;;;;;;12717:188;12917:41;12931:5;12938:6;12946:11;12917:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12978:4;12971:11;;12529:461;;;;;:::o;11487:150::-;11538:4;4254:8;:20;4263:10;4254:20;;;;;;;;;;;;;;;;;;;;;;;;;4246:29;;;;;;;;11570:5;11555:12;;:20;;;;;;;;;;;;;;;;;;11586:19;11599:5;11586:19;;;;;;;;;;;;;;;;;;;;;;11625:4;11618:11;;11487:150;:::o;10833:453::-;11065:4;11095:12;;;;;;;;;;;11087:21;;;;;;;;11141:12;;;;;;;;;;;11127:26;;:10;:26;;;11119:35;;;;;;;;11175:78;11183:8;11193:9;11204;11215:11;11228:14;11244:8;11175:7;:78::i;:::-;11167:87;;;;;;;;11274:4;11267:11;;10833:453;;;;;;;;:::o;4721:187::-;4085:5;;;;;;;;;;;4071:19;;:10;:19;;;4063:28;;;;;;;;4818:1;4798:22;;:8;:22;;;;4790:31;;;;;;;;4832:34;4853:12;;;;;;;;;;;4832:34;;;;;;;;;;;;;;;;;;;;;;4892:8;4877:12;;:23;;;;;;;;;;;;;;;;;;4721:187;:::o;5490:194::-;5554:10;5538:26;;:12;;;;;;;;;;;:26;;;5530:35;;;;;;;;5576:33;5589:12;;;;;;;;;;;5603:5;;;;;;;;;;;5576:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5628:12;;;;;;;;;;;5620:5;;:20;;;;;;;;;;;;;;;;;;5674:1;5651:12;;:25;;;;;;;;;;;;;;;;;;5490:194::o;5089:223::-;4085:5;;;;;;;;;;;4071:19;;:10;:19;;;4063:28;;;;;;;;5193:1;5173:22;;:8;:22;;;;5165:31;;;;;;;;5207:30;5228:8;5207:30;;;;;;;;;;;;;;;;;;;;;;5248:29;5261:8;5271:5;;;;;;;;;;;5248:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5296:8;5288:5;;:16;;;;;;;;;;;;;;;;;;5089:223;:::o;4409:96::-;4455:9;;:::i;:::-;4484:13;4477:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4409:96;:::o;14867:888::-;14968:4;14985:11;15007;15345:9;15434:12;15604:15;15036:12;;;;;;;;;;;15035:13;15031:27;;;15057:1;15050:8;;;;15031:27;15096:3;15075:24;;1037:44;15075:24;;;15071:262;;;15124:4;15116:12;;15151:4;15143:12;;15071:262;;;15198:4;15177:25;;1037:44;15177:25;;;15173:160;;;15227:5;15219:13;;15255:3;15247:11;;15173:160;;;15298:1;15291:8;;;;15173:160;15071:262;15357:23;;;;;;;;;;;:31;;;15389:5;15396:11;15409:5;15416:6;15357:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15345:78;;15449:35;15460:3;15465:4;15471:6;15479:4;15449:10;:35::i;:::-;15434:50;;15520:7;15501:16;15512:4;15501:10;:16::i;:::-;:26;15497:40;;;15536:1;15529:8;;;;15497:40;15585:1;15554:33;;:19;;;;;;;;;;;:33;;;;15550:174;;;15622:19;;;;;;;;;;;:33;;;15656:3;15661:4;15622:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15604:62;;15692:10;15685:4;:17;15681:31;;;15711:1;15704:8;;;;15681:31;15550:174;15743:4;15736:11;;14867:888;;;;;;;;;;;;:::o;6600:319::-;4085:5;;;;;;;;;;;4071:19;;:10;:19;;;4063:28;;;;;;;;6679:9;:22;6689:11;6679:22;;;;;;;;;;;;;;;;;;;;;;;;;6678:23;6670:32;;;;;;;;3940:2;6744:14;:21;;;;:38;6736:47;;;;;;;;6796:32;6810:11;6823:4;6796:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6864:4;6839:9;:22;6849:11;6839:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;6879:14;:32;;;;;;;;;;;:::i;:::-;;;;;;;;;;6899:11;6879:32;;;;;;;;;;;;;;;;;;;;;;;6600:319;:::o;14596:263::-;14682:4;14699:16;14746;14718:17;14730:4;14718:11;:17::i;:::-;14699:36;;14765:16;14777:3;14765:11;:16::i;:::-;14746:35;;14801:50;14812:6;14820:11;14833;14846:4;14801:10;:50::i;:::-;14794:57;;14596:263;;;;;;;;:::o;10029:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;6927:481::-;7082:6;4085:5;;;;;;;;;;;4071:19;;:10;:19;;;4063:28;;;;;;;;7006:9;:19;7016:8;7006:19;;;;;;;;;;;;;;;;;;;;;;;;;6998:28;;;;;;;;7059:5;7037:9;:19;7047:8;7037:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;7091:1;7082:10;;7077:324;7098:14;:21;;;;7094:1;:25;7077:324;;;7166:8;7145:29;;:14;7160:1;7145:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;7141:249;;;7215:14;7254:1;7230:14;:21;;;;:25;7215:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;7195:14;7210:1;7195:17;;;;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;7300:1;7275:14;:26;;;;;;;;;;;;;;:::i;:::-;;7320:30;7334:8;7344:5;7320:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7369:5;;7141:249;7121:3;;;;;7077:324;;;6927:481;;:::o;13080:534::-;4085:5;;;;;;;;;;;4071:19;;:10;:19;;;4063:28;;;;;;;;13321:1;13296:27;;:13;:27;;;;13288:36;;;;;;;;13371:1;13343:30;;:16;:30;;;;13335:39;;;;;;;;13402:13;13387:12;;:28;;;;;;;;;;;;;;;;;;13452:16;13426:23;;:42;;;;;;;;;;;;;;;;;;13501:12;13479:19;;:34;;;;;;;;;;;;;;;;;;13526:80;13547:12;;;;;;;;;;;13561:23;;;;;;;;;;;13586:19;;;;;;;;;;;13526:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13080:534;;;:::o;9757:27::-;;;;;;;;;;;;;:::o;8275:153::-;4085:5;;;;;;;;;;;4071:19;;:10;:19;;;4063:28;;;;;;;;8357:6;:15;;:23;8373:6;8357:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8391:29;8405:6;8413;8391:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;8275:153;;:::o;9822:55::-;;;;;;;;;;;;;:::o;9791:24::-;;;;;;;;;;;;;:::o;9938:55::-;;;;;;;;;;;;;;;;;;;;;;:::o;3665:20::-;;;;;;;;;;;;;:::o;13868:448::-;13921:4;14033:14;14083:20;14144:22;1037:44;13942:26;;:5;:26;;;13938:371;;;13990:4;:12;;;13983:19;;;;13938:371;14050:11;:18;14062:5;14050:18;;;;;;;;;;;;;;;;;;;;;;;;;14033:35;;14106:5;:15;;;14122:6;14106:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14083:46;;14169:5;:15;;;14185:6;14193:4;14169:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14144:54;;14241:17;14223:15;:35;14222:75;;14280:17;14222:75;;;14262:15;14222:75;14215:82;;13868:448;;;;;;;:::o;14324:264::-;14411:4;14428:16;14475;14447:17;14459:4;14447:11;:17::i;:::-;14428:36;;14494:16;14506:3;14494:11;:16::i;:::-;14475:35;;14530:50;14541:6;14549:11;14562;14575:4;14530:10;:50::i;:::-;14523:57;;14324:264;;;;;;;;:::o;1439:174::-;1037:44;1497:26;;:5;:26;;;1493:112;;;1381:2;1525:8;:15;1534:5;1525:15;;;;;;;;;;;;;;;:30;;;;1493:112;;;1589:5;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1571:8;:15;1580:5;1571:15;;;;;;;;;;;;;;;:34;;;;1493:112;1439:174;:::o;16097:1694::-;16316:4;16639:15;16816:11;16838:15;16405:8;16401:226;;;16455:1;16438:14;:18;16430:27;;;;;;;;1037:44;16476:29;;:8;:29;;;16472:143;;;16545:9;16532;:22;16524:31;;;;;;;;16472:143;;;16613:1;16600:9;:14;16592:23;;;;;;;;16472:143;16401:226;16657:58;16668:8;16678:9;16689;16700:14;16657:10;:58::i;:::-;16639:76;;16772:1;16759:10;:14;16751:23;;;;;;;;1037:44;16868:29;;:8;:29;;;16864:220;;;16932:10;16914:29;;16966:9;16958:17;;16864:220;;;17031:9;17022:2;:19;17008:33;;17064:8;17056:16;;16864:220;17096:23;;;;;;;;;;;:39;;;17150:5;17170:11;17196:1;17212:12;17096:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1037:44;17283:29;;:8;:29;;;;17279:138;;;17337:8;:21;;;17359:10;17371:11;:21;17383:8;17371:21;;;;;;;;;;;;;;;;;;;;;;;;;17394:9;17337:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17329:76;;;;;;;;17279:138;1037:44;17462:30;;:9;:30;;;17458:208;;;17509:11;:20;;:32;17530:10;17509:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17458:208;;;17582:9;:22;;;17605:11;:22;17617:9;17605:22;;;;;;;;;;;;;;;;;;;;;;;;;17629:11;17642:10;17582:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17574:80;;;;;;;;17458:208;17691:10;17678:81;;;17703:8;17713:9;17724;17735:10;17747:11;17678:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17779:4;17772:11;;16097:1694;;;;;;;;;;;:::o;1621:479::-;1677:4;1779:18;1037:44;1698:26;;:5;:26;;;1694:51;;;1381:2;1726:19;;;;1694:51;1800:8;:15;1809:5;1800:15;;;;;;;;;;;;;;;;1779:36;;2033:1;2016:13;:18;2013:46;;;2043:5;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2036:23;;;;2013:46;2079:13;2072:20;;1621:479;;;;;:::o;2685:861::-;2787:4;2967:14;2992:16;1177:6;2812;:17;;2804:26;;;;;;;;1254:5;1126:6;1242:17;2849:4;:16;;2841:25;;;;;;;;3038:11;3023;:26;;3019:430;;;1333:2;3089:11;3075;:25;3074:43;;3066:52;;;;;;;;3187:11;3173;:25;3168:2;:31;3158:6;1126;3146:18;:54;3133:68;;3230:4;3216:18;;3019:430;;;1333:2;3290:11;3276;:25;3275:43;;3267:52;;;;;;;;3359:6;1126;3347:18;3334:32;;3423:11;3409;:25;3404:2;:31;3396:4;:40;3381:56;;3019:430;3498:11;3493:1;3479:11;3467:9;:23;:27;3466:43;;;;;;;;3459:50;;2685:861;;;;;;;;:::o;2108:569::-;2210:4;1177:6;2235;:17;;2227:26;;;;;;;;1254:5;1126:6;1242:17;2272:4;:16;;2264:25;;;;;;;;2321:11;2306;:26;;2302:368;;;1333:2;2372:11;2358;:25;2357:43;;2349:52;;;;;;;;1126:6;2460:11;2446;:25;2441:2;:31;2433:4;2424:6;:13;:49;2423:63;;;;;;;;2416:70;;;;2302:368;1333:2;2542:11;2528;:25;2527:43;;2519:52;;;;;;;;2644:11;2630;:25;2625:2;:31;1126:6;2612:45;2603:4;2594:6;:13;2593:65;;;;;;;;2586:72;;2108:569;;;;;;;:::o;9680:8114::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://519812d6cb3809e0c6b793b1afcf4287e15c62966a22860b04e16ed3b52ca7b3

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.