ETH Price: $3,949.45 (-1.14%)

Contract

0x99f2B69ee2468C834A634FF50d930aE64e3e500f
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve230008432025-07-26 4:11:1182 days ago1753503071IN
Universal Trade Interface: UTRIN Token
0 ETH0.000018590.4
Approve218725932025-02-18 10:14:35240 days ago1739873675IN
Universal Trade Interface: UTRIN Token
0 ETH0.000051121.1
Transfer218619882025-02-16 22:38:35241 days ago1739745515IN
Universal Trade Interface: UTRIN Token
0 ETH0.000057271.10731232
Approve215027292024-12-28 18:23:23291 days ago1735410203IN
Universal Trade Interface: UTRIN Token
0 ETH0.000385758.31103413
Approve212220952024-11-19 13:31:59331 days ago1732023119IN
Universal Trade Interface: UTRIN Token
0 ETH0.0011416924.71251228
Approve208614252024-09-30 5:38:35381 days ago1727674715IN
Universal Trade Interface: UTRIN Token
0 ETH0.000113784.28169244
Approve208614252024-09-30 5:38:35381 days ago1727674715IN
Universal Trade Interface: UTRIN Token
0 ETH0.000198994.28169244
Transfer208612832024-09-30 5:10:11381 days ago1727673011IN
Universal Trade Interface: UTRIN Token
0 ETH0.000237344.58892507
Approve203030252024-07-14 6:43:23459 days ago1720939403IN
Universal Trade Interface: UTRIN Token
0 ETH0.000052812.18341071
Approve197204212024-04-23 20:16:47540 days ago1713903407IN
Universal Trade Interface: UTRIN Token
0 ETH0.0007189615.47
Approve188999602023-12-30 17:56:59655 days ago1703959019IN
Universal Trade Interface: UTRIN Token
0 ETH0.0010858723.36475913
Transfer188999472023-12-30 17:54:23655 days ago1703958863IN
Universal Trade Interface: UTRIN Token
0 ETH0.0012724224.60177984
Approve184399772023-10-27 7:12:59720 days ago1698390779IN
Universal Trade Interface: UTRIN Token
0 ETH0.0003465814.32694943
Approve183772042023-10-18 12:21:35729 days ago1697631695IN
Universal Trade Interface: UTRIN Token
0 ETH0.0005215311.22175302
Transfer183772022023-10-18 12:21:11729 days ago1697631671IN
Universal Trade Interface: UTRIN Token
0 ETH0.0013235625.60234528
Approve182327482023-09-28 7:27:47749 days ago1695886067IN
Universal Trade Interface: UTRIN Token
0 ETH0.000221429.15318375
Approve181172032023-09-12 2:12:47765 days ago1694484767IN
Universal Trade Interface: UTRIN Token
0 ETH0.000398278.62091873
Approve181048272023-09-10 8:37:35767 days ago1694335055IN
Universal Trade Interface: UTRIN Token
0 ETH0.000236669.7833781
Approve174523412023-06-10 21:09:47858 days ago1686431387IN
Universal Trade Interface: UTRIN Token
0 ETH0.0003805215.73003572
Approve166627852023-02-19 12:58:23970 days ago1676811503IN
Universal Trade Interface: UTRIN Token
0 ETH0.0005968624.67304539
Approve160892272022-12-01 10:01:471050 days ago1669888907IN
Universal Trade Interface: UTRIN Token
0 ETH0.0003071512.69720243
Approve159542272022-11-12 13:27:231069 days ago1668259643IN
Universal Trade Interface: UTRIN Token
0 ETH0.0003394414.03166795
Approve158419032022-10-27 20:49:591084 days ago1666903799IN
Universal Trade Interface: UTRIN Token
0 ETH0.0008254217.76061291
Approve156304642022-09-28 7:52:351114 days ago1664351555IN
Universal Trade Interface: UTRIN Token
0 ETH0.0003475414.36690074
Approve139538072022-01-06 19:37:001378 days ago1641497820IN
Universal Trade Interface: UTRIN Token
0 ETH0.00284529117.6177931
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UTRINToken

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-01-28
*/

/**
 *Submitted for verification at Etherscan.io on 2020-11-05
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.7.4;

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

}

interface ItokenRecipient { 
    function receiveApproval(address _from, uint256 _value, address _token, bytes calldata _extraData) external returns (bool); 
}

interface IstakeContract { 
    function createStake(address _wallet, uint8 _timeFrame, uint256 _value) external returns (bool); 
}

interface IERC20Token {
    function totalSupply() external view returns (uint256 supply);
    function transfer(address _to, uint256 _value) external  returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool success);
    function balanceOf(address _owner) external view returns (uint256 balance);
    function approve(address _spender, uint256 _value) external returns (bool success);
    function allowance(address _owner, address _spender) external view returns (uint256 remaining);
}

contract Ownable {

    address private owner;
    address private priceManager;
    
    event OwnerSet(address indexed oldOwner, address indexed newOwner);
    
    modifier onlyOwner() {
        require(msg.sender == owner, "Caller is not owner");
        _;
    }
    
    modifier onlyPriceManager() {
        require(msg.sender == priceManager, "Caller is not priceManager");
        _;
    }
    
    

    constructor() {
        owner = msg.sender; 
        emit OwnerSet(address(0), owner);
    }


    function changeOwner(address newOwner) public onlyOwner {
        emit OwnerSet(owner, newOwner);
        owner = newOwner;
    }
    
    function setPriceManager (address newPriceManager) public onlyOwner {
        priceManager = newPriceManager;
    }

    function getOwner() external view returns (address) {
        return owner;
    }
}

contract StandardToken is IERC20Token {
    
    using SafeMath for uint256;
    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
    uint256 public _totalSupply;
    
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
    
    function totalSupply() override public view returns (uint256 supply) {
        return _totalSupply;
    }

    function transfer(address _to, uint256 _value) override virtual public returns (bool success) {
        require(_to != address(0x0), "Use burn function instead");                               // Prevent transfer to 0x0 address. Use burn() instead
		require(_value >= 0, "Invalid amount"); 
		require(balances[msg.sender] >= _value, "Not enough balance");
		balances[msg.sender] = balances[msg.sender].sub(_value);
		balances[_to] = balances[_to].add(_value);
		emit Transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) override virtual public returns (bool success) {
        require(_to != address(0x0), "Use burn function instead");                               // Prevent transfer to 0x0 address. Use burn() instead
		require(_value >= 0, "Invalid amount"); 
		require(balances[_from] >= _value, "Not enough balance");
		require(allowed[_from][msg.sender] >= _value, "You need to increase allowance");
		balances[_from] = balances[_from].sub(_value);
		balances[_to] = balances[_to].add(_value);
		emit Transfer(_from, _to, _value);
        return true;
    }

    function balanceOf(address _owner) override public view returns (uint256 balance) {
        return balances[_owner];
    }

    function approve(address _spender, uint256 _value) override public returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) override public view returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
    
}

contract UTRINToken is Ownable, StandardToken {

    using SafeMath for uint256;
    string public name;
    uint8 public decimals;
    string public symbol;
    uint256 public subscriptionPrice;
    address public stakeContract;
    address public crowdSaleContract;
    address public preSaleContract;
    address public dividendPool;
    uint256 public soldTokensUnlockTime;
    mapping (address => uint256) frozenBalances;
    mapping (address => uint256) timelock;
    
    event Burn(address indexed from, uint256 value);
    event StakeContractSet(address indexed contractAddress);

    
    constructor() {
        name = "Universal Trade Interface";
        decimals = 18;
        symbol = "UTRIN";
        
        address teamWallet = 0x41dA08f916Fc534C25FB3B388a0859b9e4A42ADa;
        address legalAndLiquidity = 0x298843E6C4Cedd1Eae5327A39847F0A170D32D26;
        address developmentFund = 0x0e70bB808E549147E3073937f13eCdc08E5d5775; 
        dividendPool = 0xd1c16226FF031Fcd961221aD25c6a43B4FB96d7E;
        
        balances[teamWallet] = 1500000 ether;                                           
        emit Transfer(address(0x0), teamWallet, (1500000 ether));                       
        
        balances[legalAndLiquidity] = 1000000 ether;                                           
        emit Transfer(address(0x0), legalAndLiquidity, (1000000 ether));
        
        balances[developmentFund] = 1500000 ether;                                    
        emit Transfer(address(0x0), developmentFund, (1500000 ether));     
        

        _totalSupply = 4000000 ether;

    }
    
    function frozenBalanceOf(address _owner) public view returns (uint256 balance) {
        return frozenBalances[_owner];
    }

    function unlockTimeOf(address _owner) public view returns (uint256 time) {
        return timelock[_owner];
    }
    
    function transfer(address _to, uint256 _value) override public  returns (bool success) {
        require(txAllowed(msg.sender, _value), "Tokens are still frozen");
        return super.transfer(_to, _value);
    }
    
    function transferFrom(address _from, address _to, uint256 _value) override public returns (bool success) { ///??
        require(txAllowed(msg.sender, _value), "Crowdsale tokens are still frozen");
        return super.transferFrom(_from, _to, _value);
    }
    
    function setStakeContract(address _contractAddress) onlyOwner public {
        stakeContract = _contractAddress;
        emit StakeContractSet(_contractAddress);
    }
    
    function setDividenPool(address _DividenPool) onlyOwner public {
        dividendPool = _DividenPool;
    }
    
        // Tokens sold by crowdsale contract will be frozen ultil crowdsale ends
    function txAllowed(address sender, uint256 amount) private returns (bool isAllowed) {
        if (timelock[sender] > block.timestamp) {
            return isBalanceFree(sender, amount);
        } else {
            if (frozenBalances[sender] > 0) frozenBalances[sender] = 0;
            return true;
        }
        
    }
    
    function isBalanceFree(address sender, uint256 amount) private view returns (bool isfree) {
        if (amount <= (balances[sender] - frozenBalances[sender])) {
            return true;
        } else {
            return false;
        }
    }
    
    function burn(uint256 _value) public onlyOwner returns (bool success) {
        require(balances[msg.sender] >= _value, "Not enough balance");
		require(_value >= 0, "Invalid amount"); 
        balances[msg.sender] = balances[msg.sender].sub(_value);
        _totalSupply = _totalSupply.sub(_value);
        emit Burn(msg.sender, _value);
        return true;
    }

    function approveStake(uint8 _timeFrame, uint256 _value) public returns (bool success) {
        require(stakeContract != address(0x0));
        allowed[msg.sender][stakeContract] = _value;
        emit Approval(msg.sender, stakeContract, _value);
        IstakeContract recipient = IstakeContract(stakeContract);
        require(recipient.createStake(msg.sender, _timeFrame, _value));
        return true;
    }
    
    function approveAndCall(address _spender, uint256 _value, bytes memory _extraData) public returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        ItokenRecipient recipient = ItokenRecipient(_spender);
        require(recipient.receiveApproval(msg.sender, _value, address(this), _extraData));
        return true;
    }
   
    function tokensSoldCrowdSale(address buyer, uint256 amount) public returns (bool success) {
        require(msg.sender == crowdSaleContract, "Error with tokensSoldCrowdSale function.");
        frozenBalances[buyer] += amount;
        if (timelock[buyer] == 0 ) timelock[buyer] = soldTokensUnlockTime;
        return super.transfer(buyer, amount);
    }
    
    function tokensSoldPreSale(address buyer, uint256 amount) public returns (bool success) {
        require(msg.sender == preSaleContract, "Error with tokensSoldPreSale function.");
        frozenBalances[buyer] += amount;
        if (timelock[buyer] == 0 ) timelock[buyer] = soldTokensUnlockTime;
        return super.transfer(buyer, amount);
    }
    
	function setPrice(uint256 newPrice) public onlyPriceManager {
		subscriptionPrice = newPrice;
	}

	function redeemTokens(uint256 amount) public{
	    require(amount > subscriptionPrice, "Insufficient Utrin tokens sent to cover your fee!");
		    address account = msg.sender;        	

        	balances[account] = balances[account].sub(amount);
        	emit Transfer(account, dividendPool, amount);
	}
	
	


    

}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"}],"name":"StakeContractSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_timeFrame","type":"uint8"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approveStake","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"crowdSaleContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"frozenBalanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"redeemTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_DividenPool","type":"address"}],"name":"setDividenPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPriceManager","type":"address"}],"name":"setPriceManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"name":"setStakeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"soldTokensUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakeContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"subscriptionPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSoldCrowdSale","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSoldPreSale","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"supply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"unlockTimeOf","outputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a36040518060400160405280601981526020017f556e6976657273616c20547261646520496e7465726661636500000000000000815250600590805190602001906200011a9291906200047e565b506012600660006101000a81548160ff021916908360ff1602179055506040518060400160405280600581526020017f555452494e00000000000000000000000000000000000000000000000000000081525060079080519060200190620001849291906200047e565b5060007341da08f916fc534c25fb3b388a0859b9e4a42ada9050600073298843e6c4cedd1eae5327a39847f0a170d32d2690506000730e70bb808e549147e3073937f13ecdc08e5d5775905073d1c16226ff031fcd961221ad25c6a43b4fb96d7e600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506a013da329b6336471800000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a013da329b63364718000006040518082815260200191505060405180910390a369d3c21bcecceda1000000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda10000006040518082815260200191505060405180910390a36a013da329b6336471800000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a013da329b63364718000006040518082815260200191505060405180910390a36a034f086f3b33b68400000060048190555050505062000534565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620004b6576000855562000502565b82601f10620004d157805160ff191683800117855562000502565b8280016001018555821562000502579182015b8281111562000501578251825591602001919060010190620004e4565b5b50905062000511919062000515565b5090565b5b808211156200053057600081600090555060010162000516565b5090565b612e4580620005446000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636cf9282f11610104578063a9059cbb116100a2578063be91de5311610071578063be91de53146108e3578063cae9ca511461093b578063da5bc0b014610a36578063dd62ed3e14610a9a576101da565b8063a9059cbb1461080f578063b2c6b6dd14610873578063b9981608146108a7578063bdc8e54c146108c5576101da565b806391b7f5ed116100de57806391b7f5ed146106ec57806395d89b411461071a578063a6e158f81461079d578063a6f9dae1146107cb576101da565b80636cf9282f1461061c57806370a0823114610660578063893d20e8146106b8576101da565b8063313ce5671161017c578063509484d51161014b578063509484d5146104fc57806351aadcdf146105405780635511e33514610574578063630ff776146105d8576101da565b8063313ce567146104215780633eaaf86b1461044257806342966c6814610460578063469a6947146104a4576101da565b806318160ddd116101b857806318160ddd146103175780631a1862271461033557806323b872dd1461036957806330d172d5146103ed576101da565b806306fdde03146101df578063095ea7b3146102625780630ef096ed146102c6575b600080fd5b6101e7610b12565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022757808201518184015260208101905061020c565b50505050905090810190601f1680156102545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ae6004803603604081101561027857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bb0565b60405180821515815260200191505060405180910390f35b6102ff600480360360408110156102dc57600080fd5b81019080803560ff16906020019092919080359060200190929190505050610ca2565b60405180821515815260200191505060405180910390f35b61031f610f1b565b6040518082815260200191505060405180910390f35b61033d610f25565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d56004803603606081101561037f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f4b565b60405180821515815260200191505060405180910390f35b6103f5610fc0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610429610fe6565b604051808260ff16815260200191505060405180910390f35b61044a610ff9565b6040518082815260200191505060405180910390f35b61048c6004803603602081101561047657600080fd5b8101908080359060200190929190505050610fff565b60405180821515815260200191505060405180910390f35b6104e6600480360360208110156104ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112f6565b6040518082815260200191505060405180910390f35b61053e6004803603602081101561051257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061133f565b005b610548611487565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105c06004803603604081101561058a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114ad565b60405180821515815260200191505060405180910390f35b61061a600480360360208110156105ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611643565b005b61065e6004803603602081101561063257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611748565b005b6106a26004803603602081101561067657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061184d565b6040518082815260200191505060405180910390f35b6106c0611896565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107186004803603602081101561070257600080fd5b81019080803590602001909291905050506118bf565b005b61072261198c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610762578082015181840152602081019050610747565b50505050905090810190601f16801561078f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107c9600480360360208110156107b357600080fd5b8101908080359060200190929190505050611a2a565b005b61080d600480360360208110156107e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ba9565b005b61085b6004803603604081101561082557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d27565b60405180821515815260200191505060405180910390f35b61087b611db7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108af611ddd565b6040518082815260200191505060405180910390f35b6108cd611de3565b6040518082815260200191505060405180910390f35b610925600480360360208110156108f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611de9565b6040518082815260200191505060405180910390f35b610a1e6004803603606081101561095157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561099857600080fd5b8201836020820111156109aa57600080fd5b803590602001918460018302840111640100000000831117156109cc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611e32565b60405180821515815260200191505060405180910390f35b610a8260048036036040811015610a4c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061206b565b60405180821515815260200191505060405180910390f35b610afc60048036036040811015610ab057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612201565b6040518082815260200191505060405180910390f35b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ba85780601f10610b7d57610100808354040283529160200191610ba8565b820191906000526020600020905b815481529060010190602001808311610b8b57829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610cff57600080fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16637e3172903386866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018360ff1681526020018281526020019350505050602060405180830381600087803b158015610ecc57600080fd5b505af1158015610ee0573d6000803e3d6000fd5b505050506040513d6020811015610ef657600080fd5b8101908080519060200190929190505050610f1057600080fd5b600191505092915050565b6000600454905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f573383612288565b610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612dc76021913960400191505060405180910390fd5b610fb784848461237b565b90509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900460ff1681565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616c6c6572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611178576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b60008210156111ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420616d6f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b61124182600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611299826004546127d790919063ffffffff16565b6004819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616c6c6572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fcf229ad20569d02c4a6cd3b3ae6130cb9e6257558e22a670804b6a6eb866b71460405160405180910390a250565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611555576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612da16026913960400191505060405180910390fd5b81600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561163157600d54600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61163b8383612821565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616c6c6572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616c6c6572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616c6c6572206973206e6f742070726963654d616e6167657200000000000081525060200191505060405180910390fd5b8060088190555050565b60078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a225780601f106119f757610100808354040283529160200191611a22565b820191906000526020600020905b815481529060010190602001808311611a0557829003601f168201915b505050505081565b6008548111611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612d706031913960400191505060405180910390fd5b6000339050611adb82600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d790919063ffffffff16565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616c6c6572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611d333383612288565b611da5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6b656e7320617265207374696c6c2066726f7a656e00000000000000000081525060200191505060405180910390fd5b611daf8383612821565b905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60085481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600082600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a360008490508073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611fcc578082015181840152602081019050611fb1565b50505050905090810190601f168015611ff95780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561201b57600080fd5b505af115801561202f573d6000803e3d6000fd5b505050506040513d602081101561204557600080fd5b810190808051906020019092919050505061205f57600080fd5b60019150509392505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612113576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612de86028913960400191505060405180910390fd5b81600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156121ef57600d54600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6121f98383612821565b905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600042600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156122e2576122db8383612b8a565b9050612375565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612370576000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190505b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561241f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f557365206275726e2066756e6374696f6e20696e73746561640000000000000081525060200191505060405180910390fd5b6000821015612496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420616d6f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561254b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561263d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f596f75206e65656420746f20696e63726561736520616c6c6f77616e6365000081525060200191505060405180910390fd5b61268f82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d790919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061272482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2790919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600061281983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612caf565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f557365206275726e2066756e6374696f6e20696e73746561640000000000000081525060200191505060405180910390fd5b600082101561293c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420616d6f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156129f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b612a4382600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ad882600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2790919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054038211612c1c5760019050612c21565b600090505b92915050565b600080828401905083811015612ca5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000838311158290612d5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d21578082015181840152602081019050612d06565b50505050905090810190601f168015612d4e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe496e73756666696369656e7420557472696e20746f6b656e732073656e7420746f20636f76657220796f757220666565214572726f72207769746820746f6b656e73536f6c6450726553616c652066756e6374696f6e2e43726f776473616c6520746f6b656e7320617265207374696c6c2066726f7a656e4572726f72207769746820746f6b656e73536f6c6443726f776453616c652066756e6374696f6e2ea2646970667358221220f7ad6ecb88ce5594e25c106b1094381d0e2753f4a4a206e3c517c47535a3795764736f6c63430007040033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80636cf9282f11610104578063a9059cbb116100a2578063be91de5311610071578063be91de53146108e3578063cae9ca511461093b578063da5bc0b014610a36578063dd62ed3e14610a9a576101da565b8063a9059cbb1461080f578063b2c6b6dd14610873578063b9981608146108a7578063bdc8e54c146108c5576101da565b806391b7f5ed116100de57806391b7f5ed146106ec57806395d89b411461071a578063a6e158f81461079d578063a6f9dae1146107cb576101da565b80636cf9282f1461061c57806370a0823114610660578063893d20e8146106b8576101da565b8063313ce5671161017c578063509484d51161014b578063509484d5146104fc57806351aadcdf146105405780635511e33514610574578063630ff776146105d8576101da565b8063313ce567146104215780633eaaf86b1461044257806342966c6814610460578063469a6947146104a4576101da565b806318160ddd116101b857806318160ddd146103175780631a1862271461033557806323b872dd1461036957806330d172d5146103ed576101da565b806306fdde03146101df578063095ea7b3146102625780630ef096ed146102c6575b600080fd5b6101e7610b12565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022757808201518184015260208101905061020c565b50505050905090810190601f1680156102545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ae6004803603604081101561027857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bb0565b60405180821515815260200191505060405180910390f35b6102ff600480360360408110156102dc57600080fd5b81019080803560ff16906020019092919080359060200190929190505050610ca2565b60405180821515815260200191505060405180910390f35b61031f610f1b565b6040518082815260200191505060405180910390f35b61033d610f25565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d56004803603606081101561037f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f4b565b60405180821515815260200191505060405180910390f35b6103f5610fc0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610429610fe6565b604051808260ff16815260200191505060405180910390f35b61044a610ff9565b6040518082815260200191505060405180910390f35b61048c6004803603602081101561047657600080fd5b8101908080359060200190929190505050610fff565b60405180821515815260200191505060405180910390f35b6104e6600480360360208110156104ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112f6565b6040518082815260200191505060405180910390f35b61053e6004803603602081101561051257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061133f565b005b610548611487565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105c06004803603604081101561058a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114ad565b60405180821515815260200191505060405180910390f35b61061a600480360360208110156105ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611643565b005b61065e6004803603602081101561063257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611748565b005b6106a26004803603602081101561067657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061184d565b6040518082815260200191505060405180910390f35b6106c0611896565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107186004803603602081101561070257600080fd5b81019080803590602001909291905050506118bf565b005b61072261198c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610762578082015181840152602081019050610747565b50505050905090810190601f16801561078f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107c9600480360360208110156107b357600080fd5b8101908080359060200190929190505050611a2a565b005b61080d600480360360208110156107e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ba9565b005b61085b6004803603604081101561082557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d27565b60405180821515815260200191505060405180910390f35b61087b611db7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108af611ddd565b6040518082815260200191505060405180910390f35b6108cd611de3565b6040518082815260200191505060405180910390f35b610925600480360360208110156108f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611de9565b6040518082815260200191505060405180910390f35b610a1e6004803603606081101561095157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561099857600080fd5b8201836020820111156109aa57600080fd5b803590602001918460018302840111640100000000831117156109cc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611e32565b60405180821515815260200191505060405180910390f35b610a8260048036036040811015610a4c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061206b565b60405180821515815260200191505060405180910390f35b610afc60048036036040811015610ab057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612201565b6040518082815260200191505060405180910390f35b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ba85780601f10610b7d57610100808354040283529160200191610ba8565b820191906000526020600020905b815481529060010190602001808311610b8b57829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610cff57600080fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16637e3172903386866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018360ff1681526020018281526020019350505050602060405180830381600087803b158015610ecc57600080fd5b505af1158015610ee0573d6000803e3d6000fd5b505050506040513d6020811015610ef657600080fd5b8101908080519060200190929190505050610f1057600080fd5b600191505092915050565b6000600454905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f573383612288565b610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612dc76021913960400191505060405180910390fd5b610fb784848461237b565b90509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900460ff1681565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616c6c6572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611178576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b60008210156111ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420616d6f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b61124182600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611299826004546127d790919063ffffffff16565b6004819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616c6c6572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fcf229ad20569d02c4a6cd3b3ae6130cb9e6257558e22a670804b6a6eb866b71460405160405180910390a250565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611555576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612da16026913960400191505060405180910390fd5b81600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561163157600d54600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61163b8383612821565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616c6c6572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616c6c6572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616c6c6572206973206e6f742070726963654d616e6167657200000000000081525060200191505060405180910390fd5b8060088190555050565b60078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a225780601f106119f757610100808354040283529160200191611a22565b820191906000526020600020905b815481529060010190602001808311611a0557829003601f168201915b505050505081565b6008548111611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612d706031913960400191505060405180910390fd5b6000339050611adb82600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d790919063ffffffff16565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616c6c6572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611d333383612288565b611da5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6b656e7320617265207374696c6c2066726f7a656e00000000000000000081525060200191505060405180910390fd5b611daf8383612821565b905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60085481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600082600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a360008490508073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611fcc578082015181840152602081019050611fb1565b50505050905090810190601f168015611ff95780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561201b57600080fd5b505af115801561202f573d6000803e3d6000fd5b505050506040513d602081101561204557600080fd5b810190808051906020019092919050505061205f57600080fd5b60019150509392505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612113576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612de86028913960400191505060405180910390fd5b81600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156121ef57600d54600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6121f98383612821565b905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600042600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156122e2576122db8383612b8a565b9050612375565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612370576000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190505b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561241f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f557365206275726e2066756e6374696f6e20696e73746561640000000000000081525060200191505060405180910390fd5b6000821015612496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420616d6f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561254b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561263d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f596f75206e65656420746f20696e63726561736520616c6c6f77616e6365000081525060200191505060405180910390fd5b61268f82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d790919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061272482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2790919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600061281983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612caf565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f557365206275726e2066756e6374696f6e20696e73746561640000000000000081525060200191505060405180910390fd5b600082101561293c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420616d6f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156129f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b612a4382600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d790919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ad882600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2790919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054038211612c1c5760019050612c21565b600090505b92915050565b600080828401905083811015612ca5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000838311158290612d5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d21578082015181840152602081019050612d06565b50505050905090810190601f168015612d4e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe496e73756666696369656e7420557472696e20746f6b656e732073656e7420746f20636f76657220796f757220666565214572726f72207769746820746f6b656e73536f6c6450726553616c652066756e6374696f6e2e43726f776473616c6520746f6b656e7320617265207374696c6c2066726f7a656e4572726f72207769746820746f6b656e73536f6c6443726f776453616c652066756e6374696f6e2ea2646970667358221220f7ad6ecb88ce5594e25c106b1094381d0e2753f4a4a206e3c517c47535a3795764736f6c63430007040033

Deployed Bytecode Sourcemap

4672:5802:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4760:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4275:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8466:418;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2857:107;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4879:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6822:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4990:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4785:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2643:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8086:372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6467:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7095:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4914:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9679:352;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7277:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2236:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4143:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2361:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10040:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4813:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10143:310;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2092:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6594:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4953:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5024:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4840:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6332:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8896:402;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9309:358;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4506:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4760:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4275:223::-;4351:12;4408:6;4376:7;:19;4384:10;4376:19;;;;;;;;;;;;;;;:29;4396:8;4376:29;;;;;;;;;;;;;;;:38;;;;4451:8;4430:38;;4439:10;4430:38;;;4461:6;4430:38;;;;;;;;;;;;;;;;;;4486:4;4479:11;;4275:223;;;;:::o;8466:418::-;8538:12;8596:3;8571:29;;:13;;;;;;;;;;;:29;;;;8563:38;;;;;;8649:6;8612:7;:19;8620:10;8612:19;;;;;;;;;;;;;;;:34;8632:13;;;;;;;;;;;8612:34;;;;;;;;;;;;;;;:43;;;;8692:13;;;;;;;;;;;8671:43;;8680:10;8671:43;;;8707:6;8671:43;;;;;;;;;;;;;;;;;;8725:24;8767:13;;;;;;;;;;;8725:56;;8800:9;:21;;;8822:10;8834;8846:6;8800:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8792:62;;;;;;8872:4;8865:11;;;8466:418;;;;:::o;2857:107::-;2910:14;2944:12;;2937:19;;2857:107;:::o;4879:28::-;;;;;;;;;;;;;:::o;6822:261::-;6913:12;6952:29;6962:10;6974:6;6952:9;:29::i;:::-;6944:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7037:38;7056:5;7063:3;7068:6;7037:18;:38::i;:::-;7030:45;;6822:261;;;;;:::o;4990:27::-;;;;;;;;;;;;;:::o;4785:21::-;;;;;;;;;;;;;:::o;2643:27::-;;;;:::o;8086:372::-;8142:12;1782:5;;;;;;;;;;;1768:19;;:10;:19;;;1760:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8199:6:::1;8175:8;:20;8184:10;8175:20;;;;;;;;;;;;;;;;:30;;8167:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;8251:1;8241:6;:11;;8233:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;8306:32;8331:6;8306:8;:20;8315:10;8306:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;8283:8;:20;8292:10;8283:20;;;;;;;;;;;;;;;:55;;;;8364:24;8381:6;8364:12;;:16;;:24;;;;:::i;:::-;8349:12;:39;;;;8409:10;8404:24;;;8421:6;8404:24;;;;;;;;;;;;;;;;;;8446:4;8439:11;;8086:372:::0;;;:::o;6467:115::-;6526:12;6558:8;:16;6567:6;6558:16;;;;;;;;;;;;;;;;6551:23;;6467:115;;;:::o;7095:170::-;1782:5;;;;;;;;;;1768:19;;:10;:19;;;1760:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7191:16:::1;7175:13;;:32;;;;;;;;;;;;;;;;;;7240:16;7223:34;;;;;;;;;;;;7095:170:::0;:::o;4914:32::-;;;;;;;;;;;;;:::o;9679:352::-;9753:12;9800:15;;;;;;;;;;;9786:29;;:10;:29;;;9778:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9894:6;9869:14;:21;9884:5;9869:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;9934:1;9915:8;:15;9924:5;9915:15;;;;;;;;;;;;;;;;:20;9911:65;;;9956:20;;9938:8;:15;9947:5;9938:15;;;;;;;;;;;;;;;:38;;;;9911:65;9994:29;10009:5;10016:6;9994:14;:29::i;:::-;9987:36;;9679:352;;;;:::o;7277:109::-;1782:5;;;;;;;;;;1768:19;;:10;:19;;;1760:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7366:12:::1;7351;;:27;;;;;;;;;;;;;;;;;;7277:109:::0;:::o;2236:117::-;1782:5;;;;;;;;;;1768:19;;:10;:19;;;1760:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2330:15:::1;2315:12;;:30;;;;;;;;;;;;;;;;;;2236:117:::0;:::o;4143:124::-;4208:15;4243:8;:16;4252:6;4243:16;;;;;;;;;;;;;;;;4236:23;;4143:124;;;:::o;2361:83::-;2404:7;2431:5;;;;;;;;;;;2424:12;;2361:83;:::o;10040:98::-;1904:12;;;;;;;;;;;1890:26;;:10;:26;;;1882:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10125:8:::1;10105:17;:28;;;;10040:98:::0;:::o;4813:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10143:310::-;10212:17;;10203:6;:26;10195:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10292:15;10310:10;10292:28;;10363:29;10385:6;10363:8;:17;10372:7;10363:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;10343:8;:17;10352:7;10343:17;;;;;;;;;;;;;;;:49;;;;10427:12;;;;;;;;;;;10409:39;;10418:7;10409:39;;;10441:6;10409:39;;;;;;;;;;;;;;;;;;10143:310;;:::o;2092:132::-;1782:5;;;;;;;;;;1768:19;;:10;:19;;;1760:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8:::1;2164:25;;2173:5;::::0;::::1;;;;;;;;2164:25;;;;;;;;;;;;2208:8;2200:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;2092:132:::0;:::o;6594:216::-;6667:12;6700:29;6710:10;6722:6;6700:9;:29::i;:::-;6692:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6775:27;6790:3;6795:6;6775:14;:27::i;:::-;6768:34;;6594:216;;;;:::o;4953:30::-;;;;;;;;;;;;;:::o;5024:35::-;;;;:::o;4840:32::-;;;;:::o;6332:127::-;6394:15;6429:14;:22;6444:6;6429:22;;;;;;;;;;;;;;;;6422:29;;6332:127;;;:::o;8896:402::-;8995:12;9052:6;9020:7;:19;9028:10;9020:19;;;;;;;;;;;;;;;:29;9040:8;9020:29;;;;;;;;;;;;;;;:38;;;;9095:8;9074:38;;9083:10;9074:38;;;9105:6;9074:38;;;;;;;;;;;;;;;;;;9123:25;9167:8;9123:53;;9195:9;:25;;;9221:10;9233:6;9249:4;9256:10;9195:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9187:81;;;;;;9286:4;9279:11;;;8896:402;;;;;:::o;9309:358::-;9385:12;9432:17;;;;;;;;;;;9418:31;;:10;:31;;;9410:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9530:6;9505:14;:21;9520:5;9505:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;9570:1;9551:8;:15;9560:5;9551:15;;;;;;;;;;;;;;;;:20;9547:65;;;9592:20;;9574:8;:15;9583:5;9574:15;;;;;;;;;;;;;;;:38;;;;9547:65;9630:29;9645:5;9652:6;9630:14;:29::i;:::-;9623:36;;9309:358;;;;:::o;4506:153::-;4589:17;4626:7;:15;4634:6;4626:15;;;;;;;;;;;;;;;:25;4642:8;4626:25;;;;;;;;;;;;;;;;4619:32;;4506:153;;;;:::o;7480:332::-;7548:14;7598:15;7579:8;:16;7588:6;7579:16;;;;;;;;;;;;;;;;:34;7575:220;;;7637:29;7651:6;7659;7637:13;:29::i;:::-;7630:36;;;;7575:220;7728:1;7703:14;:22;7718:6;7703:22;;;;;;;;;;;;;;;;:26;7699:58;;;7756:1;7731:14;:22;7746:6;7731:22;;;;;;;;;;;;;;;:26;;;;7699:58;7779:4;7772:11;;7480:332;;;;;:::o;3516:619::-;3615:12;3663:3;3648:19;;:3;:19;;;;3640:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3805:1;3795:6;:11;;3787:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3858:6;3839:8;:15;3848:5;3839:15;;;;;;;;;;;;;;;;:25;;3831:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3930:6;3900:7;:14;3908:5;3900:14;;;;;;;;;;;;;;;:26;3915:10;3900:26;;;;;;;;;;;;;;;;:36;;3892:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3994:27;4014:6;3994:8;:15;4003:5;3994:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;3976:8;:15;3985:5;3976:15;;;;;;;;;;;;;;;:45;;;;4042:25;4060:6;4042:8;:13;4051:3;4042:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;4026:8;:13;4035:3;4026:13;;;;;;;;;;;;;;;:41;;;;4093:3;4077:28;;4086:5;4077:28;;;4098:6;4077:28;;;;;;;;;;;;;;;;;;4123:4;4116:11;;3516:619;;;;;:::o;348:136::-;406:7;433:43;437:1;440;433:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;426:50;;348:136;;;;:::o;2972:536::-;3052:12;3100:3;3085:19;;:3;:19;;;;3077:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3242:1;3232:6;:11;;3224:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3300:6;3276:8;:20;3285:10;3276:20;;;;;;;;;;;;;;;;:30;;3268:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3357:32;3382:6;3357:8;:20;3366:10;3357:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;3334:8;:20;3343:10;3334:20;;;;;;;;;;;;;;;:55;;;;3410:25;3428:6;3410:8;:13;3419:3;3410:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;3394:8;:13;3403:3;3394:13;;;;;;;;;;;;;;;:41;;;;3466:3;3445:33;;3454:10;3445:33;;;3471:6;3445:33;;;;;;;;;;;;;;;;;;3496:4;3489:11;;2972:536;;;;:::o;7824:250::-;7901:11;7959:14;:22;7974:6;7959:22;;;;;;;;;;;;;;;;7940:8;:16;7949:6;7940:16;;;;;;;;;;;;;;;;:41;7929:6;:53;7925:142;;8006:4;7999:11;;;;7925:142;8050:5;8043:12;;7824:250;;;;;:::o;159:181::-;217:7;237:9;253:1;249;:5;237:17;;278:1;273;:6;;265:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:1;324:8;;;159:181;;;;:::o;492:192::-;578:7;611:1;606;:6;;614:12;598:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:9;654:1;650;:5;638:17;;675:1;668:8;;;492:192;;;;;:::o

Swarm Source

ipfs://f7ad6ecb88ce5594e25c106b1094381d0e2753f4a4a206e3c517c47535a37957

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

OVERVIEW

A native application built to trade conventionally on decentralized exchange protocols.

Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.