ERC-20
Overview
Max Total Supply
8,009,167,400 Wesion
Holders
4,924
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Balance
1,003 WesionValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Wesion
Compiler Version
v0.5.7+commit.6da8b019
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-06-21 */ pragma solidity ^0.5.7; /** * @title SafeMath * @dev Unsigned math operations with safety checks that revert on error. */ library SafeMath { /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, * reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { assert(b > 0); uint256 c = a / b; assert(a == b * c + a % b); return a / b; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } /** * @title ERC20 interface * @dev see https://eips.ethereum.org/EIPS/eip-20 */ interface IERC20{ function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title Ownable */ contract Ownable { address internal _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract * to the sender account. */ constructor () internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == _owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) external onlyOwner { require(newOwner != address(0)); _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } /** * @dev Rescue compatible ERC20 Token * * @param tokenAddr ERC20 The address of the ERC20 token contract * @param receiver The address of the receiver * @param amount uint256 */ function rescueTokens(address tokenAddr, address receiver, uint256 amount) external onlyOwner { IERC20 _token = IERC20(tokenAddr); require(receiver != address(0)); uint256 balance = _token.balanceOf(address(this)); require(balance >= amount); assert(_token.transfer(receiver, amount)); } /** * @dev Withdraw Ether */ function withdrawEther(address payable to, uint256 amount) external onlyOwner { require(to != address(0)); uint256 balance = address(this).balance; require(balance >= amount); to.transfer(amount); } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { bool private _paused; event Paused(address account); event Unpaused(address account); constructor () internal { _paused = false; } /** * @return Returns true if the contract is paused, false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!_paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(_paused); _; } /** * @dev Called by a pauser to pause, triggers stopped state. */ function pause() external onlyOwner whenNotPaused { _paused = true; emit Paused(msg.sender); } /** * @dev Called by a pauser to unpause, returns to normal state. */ function unpause() external onlyOwner whenPaused { _paused = false; emit Unpaused(msg.sender); } } /** * @title Wesion Main Contract */ contract Wesion is Ownable, Pausable, IERC20 { using SafeMath for uint256; string private _name = "Wesion"; string private _symbol = "Wesion"; uint8 private _decimals = 6; // 6 decimals uint256 private _cap = 35000000000000000; // 35 billion cap, that is 35000000000.000000 uint256 private _totalSupply; mapping (address => bool) private _minter; event Mint(address indexed to, uint256 value); event MinterChanged(address account, bool state); mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowed; bool private _allowWhitelistRegistration; mapping(address => address) private _referrer; mapping(address => uint256) private _refCount; event WesionSaleWhitelistRegistered(address indexed addr, address indexed refAddr); event WesionSaleWhitelistTransferred(address indexed previousAddr, address indexed _newAddr); event WesionSaleWhitelistRegistrationEnabled(); event WesionSaleWhitelistRegistrationDisabled(); uint256 private _whitelistRegistrationValue = 1001000000; // 1001 Wesion, 1001.000000 uint256[15] private _whitelistRefRewards = [ // 100% Reward 301000000, // 301 Wesion for Level.1 200000000, // 200 Wesion for Level.2 100000000, // 100 Wesion for Level.3 100000000, // 100 Wesion for Level.4 100000000, // 100 Wesion for Level.5 50000000, // 50 Wesion for Level.6 40000000, // 40 Wesion for Level.7 30000000, // 30 Wesion for Level.8 20000000, // 20 Wesion for Level.9 10000000, // 10 Wesion for Level.10 10000000, // 10 Wesion for Level.11 10000000, // 10 Wesion for Level.12 10000000, // 10 Wesion for Level.13 10000000, // 10 Wesion for Level.14 10000000 // 10 Wesion for Level.15 ]; event Donate(address indexed account, uint256 amount); event WithdrawToken(address indexed from, address indexed to, uint256 value); /** * @dev Constructor */ constructor() public { _minter[msg.sender] = true; _allowWhitelistRegistration = true; emit WesionSaleWhitelistRegistrationEnabled(); _referrer[msg.sender] = msg.sender; emit WesionSaleWhitelistRegistered(msg.sender, msg.sender); } /** * @dev donate */ function () external payable { emit Donate(msg.sender, msg.value); } /** * @return the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @return the symbol of the token. */ function symbol() public view returns (string memory) { return _symbol; } /** * @return the number of decimals of the token. */ function decimals() public view returns (uint8) { return _decimals; } /** * @return the cap for the token minting. */ function cap() public view returns (uint256) { return _cap; } /** * @dev Total number of tokens in existence. */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev Gets the balance of the specified address. * @param owner The address to query the balance of. * @return A uint256 representing the amount owned by the passed address. */ function balanceOf(address owner) public view returns (uint256) { return _balances[owner]; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param owner address The address which owns the funds. * @param spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowed[owner][spender]; } /** * @dev Transfer token to a specified address. * @param to The address to transfer to. * @param value The amount to be transferred. */ function transfer(address to, uint256 value) public whenNotPaused returns (bool) { if (_allowWhitelistRegistration && value == _whitelistRegistrationValue && inWhitelist(to) && !inWhitelist(msg.sender) && isNotContract(msg.sender)) { // Register whitelist for Wesion-Sale _regWhitelist(msg.sender, to); return true; } else { // Normal Transfer _transfer(msg.sender, to, value); return true; } } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. */ function approve(address spender, uint256 value) public returns (bool) { _approve(msg.sender, spender, value); return true; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * @param spender The address which will spend the funds. * @param addedValue The amount of tokens to increase the allowance by. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(msg.sender, spender, _allowed[msg.sender][spender].add(addedValue)); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * @param spender The address which will spend the funds. * @param subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(msg.sender, spender, _allowed[msg.sender][spender].sub(subtractedValue)); return true; } /** * @dev Transfer tokens from one address to another. * @param from address The address which you want to send tokens from * @param to address The address which you want to transfer to * @param value uint256 the amount of tokens to be transferred */ function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) { require(_allowed[from][msg.sender] >= value); _transfer(from, to, value); _approve(from, msg.sender, _allowed[from][msg.sender].sub(value)); return true; } /** * @dev Transfer token for a specified addresses. * @param from The address to transfer from. * @param to The address to transfer to. * @param value The amount to be transferred. */ function _transfer(address from, address to, uint256 value) internal { require(to != address(0)); _balances[from] = _balances[from].sub(value); _balances[to] = _balances[to].add(value); emit Transfer(from, to, value); } /** * @dev Approve an address to spend another addresses' tokens. * @param owner The address that owns the tokens. * @param spender The address that will spend the tokens. * @param value The number of tokens that can be spent. */ function _approve(address owner, address spender, uint256 value) internal { require(owner != address(0)); require(spender != address(0)); _allowed[owner][spender] = value; emit Approval(owner, spender, value); } /** * @dev Throws if called by account not a minter. */ modifier onlyMinter() { require(_minter[msg.sender]); _; } /** * @dev Returns true if the given account is minter. */ function isMinter(address account) public view returns (bool) { return _minter[account]; } /** * @dev Set a minter state */ function setMinterState(address account, bool state) external onlyOwner { _minter[account] = state; emit MinterChanged(account, state); } /** * @dev Function to mint tokens * @param to The address that will receive the minted tokens. * @param value The amount of tokens to mint. * @return A boolean that indicates if the operation was successful. */ function mint(address to, uint256 value) public onlyMinter returns (bool) { _mint(to, value); return true; } /** * @dev Internal function that mints an amount of the token and assigns it to an account. * @param account The account that will receive the created tokens. * @param value The amount that will be created. */ function _mint(address account, uint256 value) internal { require(_totalSupply.add(value) <= _cap); require(account != address(0)); _totalSupply = _totalSupply.add(value); _balances[account] = _balances[account].add(value); emit Mint(account, value); emit Transfer(address(0), account, value); } /** * @dev Throws if called by account not in whitelist. */ modifier onlyInWhitelist() { require(_referrer[msg.sender] != address(0)); _; } /** * @dev Returns true if the whitelist registration is allowed. */ function allowWhitelistRegistration() public view returns (bool) { return _allowWhitelistRegistration; } /** * @dev Returns true if the given account is in whitelist. */ function inWhitelist(address account) public view returns (bool) { return _referrer[account] != address(0); } /** * @dev Returns the referrer of a given account address */ function referrer(address account) public view returns (address) { return _referrer[account]; } /** * @dev Returns the referrals count of a given account address */ function refCount(address account) public view returns (uint256) { return _refCount[account]; } /** * @dev Disable Wesion-Sale whitelist registration. Unrecoverable! */ function disableWesionSaleWhitelistRegistration() external onlyOwner { _allowWhitelistRegistration = false; emit WesionSaleWhitelistRegistrationDisabled(); } /** * @dev Register whitelist for Wesion-Sale */ function _regWhitelist(address account, address refAccount) internal { _refCount[refAccount] = _refCount[refAccount].add(1); _referrer[account] = refAccount; emit WesionSaleWhitelistRegistered(account, refAccount); // Whitelist Registration Referral Reward _transfer(msg.sender, address(this), _whitelistRegistrationValue); address cursor = account; uint256 remain = _whitelistRegistrationValue; uint256 _rebackToContract = 0; for(uint i = 0; i < _whitelistRefRewards.length; i++) { address receiver = _referrer[cursor]; if (cursor != receiver) { if (_refCount[receiver] > i) { _transfer(address(this), receiver, _whitelistRefRewards[i]); remain = remain.sub(_whitelistRefRewards[i]); } else { _rebackToContract = _rebackToContract.add(_whitelistRefRewards[i]); remain = remain.sub(_whitelistRefRewards[i]); continue; } } else { _rebackToContract = _rebackToContract.add(remain); break; } cursor = _referrer[cursor]; } if (_rebackToContract > 0) { _transfer(address(this), address(this), _rebackToContract); } } /** * @dev Transfer the whitelisted address to another. */ function transferWhitelist(address account) external onlyInWhitelist { require(isNotContract(account)); _refCount[account] = _refCount[msg.sender]; _refCount[msg.sender] = 0; _referrer[account] = _referrer[msg.sender]; _referrer[msg.sender] = address(0); emit WesionSaleWhitelistTransferred(msg.sender, account); } /** * @dev Returns true if the given address is not a contract */ function isNotContract(address addr) internal view returns (bool) { uint size; assembly { size := extcodesize(addr) } return size == 0; } /** * @dev Calculator * Returns the reward amount if someone now registers the whitelist directly with the given whitelistedAccount. */ function calculateTheRewardOfDirectWhitelistRegistration(address whitelistedAccount) external view returns (uint256 reward) { if (!inWhitelist(whitelistedAccount)) { return 0; } address cursor = whitelistedAccount; uint256 remain = _whitelistRegistrationValue; for(uint i = 1; i < _whitelistRefRewards.length; i++) { address receiver = _referrer[cursor]; if (cursor != receiver) { if (_refCount[receiver] > i) { remain = remain.sub(_whitelistRefRewards[i]); } } else { reward = reward.add(remain); break; } cursor = _referrer[cursor]; } return reward; } /** * @dev owner can transfer the token store in this contract address. */ function withdrawToken(address _to, uint256 _value) public onlyOwner { require (_value > 0); require (_to != address(0)); _transfer(address(this), _to, _value); emit WithdrawToken(address(this), _to, _value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"referrer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allowWhitelistRegistration","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"whitelistedAccount","type":"address"}],"name":"calculateTheRewardOfDirectWhitelistRegistration","outputs":[{"name":"reward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableWesionSaleWhitelistRegistration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"transferWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"state","type":"bool"}],"name":"setMinterState","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddr","type":"address"},{"name":"receiver","type":"address"},{"name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"inWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"refCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"state","type":"bool"}],"name":"MinterChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":true,"name":"refAddr","type":"address"}],"name":"WesionSaleWhitelistRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousAddr","type":"address"},{"indexed":true,"name":"_newAddr","type":"address"}],"name":"WesionSaleWhitelistTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WesionSaleWhitelistRegistrationEnabled","type":"event"},{"anonymous":false,"inputs":[],"name":"WesionSaleWhitelistRegistrationDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Donate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"WithdrawToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60806040526040518060400160405280600681526020017f576573696f6e0000000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000437565b506040518060400160405280600681526020017f576573696f6e0000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000437565b506006600360006101000a81548160ff021916908360ff160217905550667c585087238000600455633baa0c40600c55604051806101e001604052806311f0e54063ffffffff168152602001630bebc20063ffffffff1681526020016305f5e10063ffffffff1681526020016305f5e10063ffffffff1681526020016305f5e10063ffffffff1681526020016302faf08063ffffffff1681526020016302625a0063ffffffff1681526020016301c9c38063ffffffff1681526020016301312d0063ffffffff1681526020016298968063ffffffff1681526020016298968063ffffffff1681526020016298968063ffffffff1681526020016298968063ffffffff1681526020016298968063ffffffff1681526020016298968063ffffffff16815250600d90600f620001d5929190620004be565b50348015620001e357600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060146101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960006101000a81548160ff0219169083151502179055507f20ea370a7b3f53bbbdf24811a458043b3de7ccf350567b711b178a86ea0436a960405160405180910390a133600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3cb0c69accdf622057624e40d3d3ca3ce5d04b96b5e1e052f0e97fcb4f5f905060405160405180910390a362000533565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200047a57805160ff1916838001178555620004ab565b82800160010185558215620004ab579182015b82811115620004aa5782518255916020019190600101906200048d565b5b509050620004ba91906200050b565b5090565b82600f8101928215620004f8579160200282015b82811115620004f7578251829063ffffffff16905591602001919060010190620004d2565b5b5090506200050791906200050b565b5090565b6200053091905b808211156200052c57600081600090555060010162000512565b5090565b90565b612c2080620005436000396000f3fe6080604052600436106101cd5760003560e01c80637cc939ac116100f7578063a746f93a11610095578063dd62ed3e11610064578063dd62ed3e14610b33578063e2aafa2114610bb8578063ec8f95fc14610c21578063f2fde38b14610c86576101cd565b8063a746f93a1461097f578063a9059cbb146109dc578063aa271e1a14610a4f578063cea9d26f14610ab8576101cd565b80638da5cb5b116100d15780638da5cb5b146107ca57806395d89b41146108215780639e281a98146108b1578063a457c2d71461090c576101cd565b80637cc939ac1461074b5780637ffbe241146107625780638456cb59146107b3576101cd565b806336b21ed41161016f578063522f68151161013e578063522f6815146105f75780635c975abb146106525780635ca23ce21461068157806370a08231146106e6576101cd565b806336b21ed4146104cb57806339509351146104fa5780633f4ba83a1461056d57806340c10f1914610584576101cd565b806323b872dd116101ab57806323b872dd1461034b5780632cf003c2146103de578063313ce5671461046f578063355274ea146104a0576101cd565b806306fdde031461021d578063095ea7b3146102ad57806318160ddd14610320575b3373ffffffffffffffffffffffffffffffffffffffff167f0553260a2e46b0577270d8992db02d30856ca880144c72d6e9503760946aef13346040518082815260200191505060405180910390a2005b34801561022957600080fd5b50610232610cd7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610272578082015181840152602081019050610257565b50505050905090810190601f16801561029f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102b957600080fd5b50610306600480360360408110156102d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d79565b604051808215151515815260200191505060405180910390f35b34801561032c57600080fd5b50610335610d90565b6040518082815260200191505060405180910390f35b34801561035757600080fd5b506103c46004803603606081101561036e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d9a565b604051808215151515815260200191505060405180910390f35b3480156103ea57600080fd5b5061042d6004803603602081101561040157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eed565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561047b57600080fd5b50610484610f56565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104ac57600080fd5b506104b5610f6d565b6040518082815260200191505060405180910390f35b3480156104d757600080fd5b506104e0610f77565b604051808215151515815260200191505060405180910390f35b34801561050657600080fd5b506105536004803603604081101561051d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f8e565b604051808215151515815260200191505060405180910390f35b34801561057957600080fd5b50610582611033565b005b34801561059057600080fd5b506105dd600480360360408110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611124565b604051808215151515815260200191505060405180910390f35b34801561060357600080fd5b506106506004803603604081101561061a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611190565b005b34801561065e57600080fd5b50610667611298565b604051808215151515815260200191505060405180910390f35b34801561068d57600080fd5b506106d0600480360360208110156106a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ae565b6040518082815260200191505060405180910390f35b3480156106f257600080fd5b506107356004803603602081101561070957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611480565b6040518082815260200191505060405180910390f35b34801561075757600080fd5b506107606114c9565b005b34801561076e57600080fd5b506107b16004803603602081101561078557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061156b565b005b3480156107bf57600080fd5b506107c8611897565b005b3480156107d657600080fd5b506107df61198a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082d57600080fd5b506108366119b3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561087657808201518184015260208101905061085b565b50505050905090810190601f1680156108a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108bd57600080fd5b5061090a600480360360408110156108d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a55565b005b34801561091857600080fd5b506109656004803603604081101561092f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b69565b604051808215151515815260200191505060405180910390f35b34801561098b57600080fd5b506109da600480360360408110156109a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611c0e565b005b3480156109e857600080fd5b50610a35600480360360408110156109ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d31565b604051808215151515815260200191505060405180910390f35b348015610a5b57600080fd5b50610a9e60048036036020811015610a7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dcb565b604051808215151515815260200191505060405180910390f35b348015610ac457600080fd5b50610b3160048036036060811015610adb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e21565b005b348015610b3f57600080fd5b50610ba260048036036040811015610b5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612051565b6040518082815260200191505060405180910390f35b348015610bc457600080fd5b50610c0760048036036020811015610bdb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120d8565b604051808215151515815260200191505060405180910390f35b348015610c2d57600080fd5b50610c7060048036036020811015610c4457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612170565b6040518082815260200191505060405180910390f35b348015610c9257600080fd5b50610cd560048036036020811015610ca957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121b9565b005b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d6f5780601f10610d4457610100808354040283529160200191610d6f565b820191906000526020600020905b815481529060010190602001808311610d5257829003601f168201915b5050505050905090565b6000610d8633848461230a565b6001905092915050565b6000600554905090565b60008060149054906101000a900460ff1615610db557600080fd5b81600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e3e57600080fd5b610e49848484612469565b610ee28433610edd85600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263790919063ffffffff16565b61230a565b600190509392505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360009054906101000a900460ff16905090565b6000600454905090565b6000600960009054906101000a900460ff16905090565b6000611029338461102485600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b61230a565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108c57600080fd5b600060149054906101000a900460ff166110a557600080fd5b60008060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661117c57600080fd5b6111868383612668565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111e957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561122357600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff163190508181101561124c57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611292573d6000803e3d6000fd5b50505050565b60008060149054906101000a900460ff16905090565b60006112b9826120d8565b6112c6576000905061147b565b60008290506000600c5490506000600190505b600f811015611474576000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146113e95781600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156113e4576113e1600d83600f81106113d057fe5b01548461263790919063ffffffff16565b92505b611404565b6113fc838661264e90919063ffffffff16565b945050611474565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693505080806001019150506112d9565b5082925050505b919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461152257600080fd5b6000600960006101000a81548160ff0219169083151502179055507f484f8576b8d05dcf48990daf95b15eec7ab6657be8bed6d7a42a7559f74b27a260405160405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff16600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561160457600080fd5b61160d8161282d565b61161657600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fba908a576c34808053a30d0c5744d7ed6b741ba628000cbb3b5659656bc21ffc60405160405180910390a350565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118f057600080fd5b600060149054906101000a900460ff161561190a57600080fd5b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a4b5780601f10611a2057610100808354040283529160200191611a4b565b820191906000526020600020905b815481529060010190602001808311611a2e57829003601f168201915b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aae57600080fd5b60008111611abb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611af557600080fd5b611b00308383612469565b8173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f037238854fe57fbf51f09946f854fc3916fe83938d6521f09bd05463839f1304836040518082815260200191505060405180910390a35050565b6000611c043384611bff85600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263790919063ffffffff16565b61230a565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c6757600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04bca3656717d14c20f88f2a0122832cb0d2807bfc66ed9e932a2202cc59f4958282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b60008060149054906101000a900460ff1615611d4c57600080fd5b600960009054906101000a900460ff168015611d695750600c5482145b8015611d7a5750611d79836120d8565b5b8015611d8c5750611d8a336120d8565b155b8015611d9d5750611d9c3361282d565b5b15611db557611dac3384612840565b60019050611dc5565b611dc0338484612469565b600190505b92915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e7a57600080fd5b6000839050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611eb957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f3857600080fd5b505afa158015611f4c573d6000803e3d6000fd5b505050506040513d6020811015611f6257600080fd5b8101908080519060200190929190505050905082811015611f8257600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561200957600080fd5b505af115801561201d573d6000803e3d6000fd5b505050506040513d602081101561203357600080fd5b810190808051906020019092919050505061204a57fe5b5050505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461221257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561224c57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561234457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561237e57600080fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124a357600080fd5b6124f581600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263790919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258a81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008282111561264357fe5b818303905092915050565b600081830190508281101561265f57fe5b80905092915050565b6004546126808260055461264e90919063ffffffff16565b111561268b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126c557600080fd5b6126da8160055461264e90919063ffffffff16565b60058190555061273281600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080823b905060008114915050919050565b6128936001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f3cb0c69accdf622057624e40d3d3ca3ce5d04b96b5e1e052f0e97fcb4f5f905060405160405180910390a36129bb3330600c54612469565b60008290506000600c549050600080905060008090505b600f811015612bd7576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612b4b5781600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612afa57612ad23082600d85600f8110612acb57fe5b0154612469565b612af3600d83600f8110612ae257fe5b01548561263790919063ffffffff16565b9350612b46565b612b1b600d83600f8110612b0a57fe5b01548461264e90919063ffffffff16565b9250612b3e600d83600f8110612b2d57fe5b01548561263790919063ffffffff16565b935050612bca565b612b66565b612b5e848461264e90919063ffffffff16565b925050612bd7565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450505b80806001019150506129d2565b506000811115612bed57612bec303083612469565b5b505050505056fea165627a7a723058202a9b46a3990d45efe607389c91c6814aeea7b1f833f3678bd8571fc4facaf0550029
Deployed Bytecode
0x6080604052600436106101cd5760003560e01c80637cc939ac116100f7578063a746f93a11610095578063dd62ed3e11610064578063dd62ed3e14610b33578063e2aafa2114610bb8578063ec8f95fc14610c21578063f2fde38b14610c86576101cd565b8063a746f93a1461097f578063a9059cbb146109dc578063aa271e1a14610a4f578063cea9d26f14610ab8576101cd565b80638da5cb5b116100d15780638da5cb5b146107ca57806395d89b41146108215780639e281a98146108b1578063a457c2d71461090c576101cd565b80637cc939ac1461074b5780637ffbe241146107625780638456cb59146107b3576101cd565b806336b21ed41161016f578063522f68151161013e578063522f6815146105f75780635c975abb146106525780635ca23ce21461068157806370a08231146106e6576101cd565b806336b21ed4146104cb57806339509351146104fa5780633f4ba83a1461056d57806340c10f1914610584576101cd565b806323b872dd116101ab57806323b872dd1461034b5780632cf003c2146103de578063313ce5671461046f578063355274ea146104a0576101cd565b806306fdde031461021d578063095ea7b3146102ad57806318160ddd14610320575b3373ffffffffffffffffffffffffffffffffffffffff167f0553260a2e46b0577270d8992db02d30856ca880144c72d6e9503760946aef13346040518082815260200191505060405180910390a2005b34801561022957600080fd5b50610232610cd7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610272578082015181840152602081019050610257565b50505050905090810190601f16801561029f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102b957600080fd5b50610306600480360360408110156102d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d79565b604051808215151515815260200191505060405180910390f35b34801561032c57600080fd5b50610335610d90565b6040518082815260200191505060405180910390f35b34801561035757600080fd5b506103c46004803603606081101561036e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d9a565b604051808215151515815260200191505060405180910390f35b3480156103ea57600080fd5b5061042d6004803603602081101561040157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eed565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561047b57600080fd5b50610484610f56565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104ac57600080fd5b506104b5610f6d565b6040518082815260200191505060405180910390f35b3480156104d757600080fd5b506104e0610f77565b604051808215151515815260200191505060405180910390f35b34801561050657600080fd5b506105536004803603604081101561051d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f8e565b604051808215151515815260200191505060405180910390f35b34801561057957600080fd5b50610582611033565b005b34801561059057600080fd5b506105dd600480360360408110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611124565b604051808215151515815260200191505060405180910390f35b34801561060357600080fd5b506106506004803603604081101561061a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611190565b005b34801561065e57600080fd5b50610667611298565b604051808215151515815260200191505060405180910390f35b34801561068d57600080fd5b506106d0600480360360208110156106a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ae565b6040518082815260200191505060405180910390f35b3480156106f257600080fd5b506107356004803603602081101561070957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611480565b6040518082815260200191505060405180910390f35b34801561075757600080fd5b506107606114c9565b005b34801561076e57600080fd5b506107b16004803603602081101561078557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061156b565b005b3480156107bf57600080fd5b506107c8611897565b005b3480156107d657600080fd5b506107df61198a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082d57600080fd5b506108366119b3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561087657808201518184015260208101905061085b565b50505050905090810190601f1680156108a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108bd57600080fd5b5061090a600480360360408110156108d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a55565b005b34801561091857600080fd5b506109656004803603604081101561092f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b69565b604051808215151515815260200191505060405180910390f35b34801561098b57600080fd5b506109da600480360360408110156109a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611c0e565b005b3480156109e857600080fd5b50610a35600480360360408110156109ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d31565b604051808215151515815260200191505060405180910390f35b348015610a5b57600080fd5b50610a9e60048036036020811015610a7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dcb565b604051808215151515815260200191505060405180910390f35b348015610ac457600080fd5b50610b3160048036036060811015610adb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e21565b005b348015610b3f57600080fd5b50610ba260048036036040811015610b5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612051565b6040518082815260200191505060405180910390f35b348015610bc457600080fd5b50610c0760048036036020811015610bdb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120d8565b604051808215151515815260200191505060405180910390f35b348015610c2d57600080fd5b50610c7060048036036020811015610c4457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612170565b6040518082815260200191505060405180910390f35b348015610c9257600080fd5b50610cd560048036036020811015610ca957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121b9565b005b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d6f5780601f10610d4457610100808354040283529160200191610d6f565b820191906000526020600020905b815481529060010190602001808311610d5257829003601f168201915b5050505050905090565b6000610d8633848461230a565b6001905092915050565b6000600554905090565b60008060149054906101000a900460ff1615610db557600080fd5b81600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e3e57600080fd5b610e49848484612469565b610ee28433610edd85600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263790919063ffffffff16565b61230a565b600190509392505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360009054906101000a900460ff16905090565b6000600454905090565b6000600960009054906101000a900460ff16905090565b6000611029338461102485600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b61230a565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108c57600080fd5b600060149054906101000a900460ff166110a557600080fd5b60008060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661117c57600080fd5b6111868383612668565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111e957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561122357600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff163190508181101561124c57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611292573d6000803e3d6000fd5b50505050565b60008060149054906101000a900460ff16905090565b60006112b9826120d8565b6112c6576000905061147b565b60008290506000600c5490506000600190505b600f811015611474576000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146113e95781600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156113e4576113e1600d83600f81106113d057fe5b01548461263790919063ffffffff16565b92505b611404565b6113fc838661264e90919063ffffffff16565b945050611474565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693505080806001019150506112d9565b5082925050505b919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461152257600080fd5b6000600960006101000a81548160ff0219169083151502179055507f484f8576b8d05dcf48990daf95b15eec7ab6657be8bed6d7a42a7559f74b27a260405160405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff16600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561160457600080fd5b61160d8161282d565b61161657600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fba908a576c34808053a30d0c5744d7ed6b741ba628000cbb3b5659656bc21ffc60405160405180910390a350565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118f057600080fd5b600060149054906101000a900460ff161561190a57600080fd5b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a4b5780601f10611a2057610100808354040283529160200191611a4b565b820191906000526020600020905b815481529060010190602001808311611a2e57829003601f168201915b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aae57600080fd5b60008111611abb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611af557600080fd5b611b00308383612469565b8173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f037238854fe57fbf51f09946f854fc3916fe83938d6521f09bd05463839f1304836040518082815260200191505060405180910390a35050565b6000611c043384611bff85600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263790919063ffffffff16565b61230a565b6001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c6757600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04bca3656717d14c20f88f2a0122832cb0d2807bfc66ed9e932a2202cc59f4958282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b60008060149054906101000a900460ff1615611d4c57600080fd5b600960009054906101000a900460ff168015611d695750600c5482145b8015611d7a5750611d79836120d8565b5b8015611d8c5750611d8a336120d8565b155b8015611d9d5750611d9c3361282d565b5b15611db557611dac3384612840565b60019050611dc5565b611dc0338484612469565b600190505b92915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e7a57600080fd5b6000839050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611eb957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f3857600080fd5b505afa158015611f4c573d6000803e3d6000fd5b505050506040513d6020811015611f6257600080fd5b8101908080519060200190929190505050905082811015611f8257600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561200957600080fd5b505af115801561201d573d6000803e3d6000fd5b505050506040513d602081101561203357600080fd5b810190808051906020019092919050505061204a57fe5b5050505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461221257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561224c57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561234457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561237e57600080fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124a357600080fd5b6124f581600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263790919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258a81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008282111561264357fe5b818303905092915050565b600081830190508281101561265f57fe5b80905092915050565b6004546126808260055461264e90919063ffffffff16565b111561268b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126c557600080fd5b6126da8160055461264e90919063ffffffff16565b60058190555061273281600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080823b905060008114915050919050565b6128936001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264e90919063ffffffff16565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f3cb0c69accdf622057624e40d3d3ca3ce5d04b96b5e1e052f0e97fcb4f5f905060405160405180910390a36129bb3330600c54612469565b60008290506000600c549050600080905060008090505b600f811015612bd7576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612b4b5781600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612afa57612ad23082600d85600f8110612acb57fe5b0154612469565b612af3600d83600f8110612ae257fe5b01548561263790919063ffffffff16565b9350612b46565b612b1b600d83600f8110612b0a57fe5b01548461264e90919063ffffffff16565b9250612b3e600d83600f8110612b2d57fe5b01548561263790919063ffffffff16565b935050612bca565b612b66565b612b5e848461264e90919063ffffffff16565b925050612bd7565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450505b80806001019150506129d2565b506000811115612bed57612bec303083612469565b5b505050505056fea165627a7a723058202a9b46a3990d45efe607389c91c6814aeea7b1f833f3678bd8571fc4facaf0550029
Deployed Bytecode Sourcemap
5802:14179:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8366:10;8359:29;;;8378:9;8359:29;;;;;;;;;;;;;;;;;;5802:14179;8463:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8463:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8463:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10913:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10913:148:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10913:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9086:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9086:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12265:297;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12265:297:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12265:297:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15838:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15838:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15838:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8779:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8779:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8935:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8935:75:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15420:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15420:118:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11306:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11306:203:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11306:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5634:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5634:119:0;;;:::i;:::-;;14404:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14404:131:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14404:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4221:243;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4221:243:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4221:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4886:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4886:78:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18829:796;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18829:796:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18829:796:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9396:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9396:106:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9396:106:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16248:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16248:180:0;;;:::i;:::-;;18005:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18005:375:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18005:375:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5422:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5422:117:0;;;:::i;:::-;;2972:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2972:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8613:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8613:87:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8613:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19725:251;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19725:251:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19725:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11759:213;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11759:213:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11759:213:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13989:160;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13989:160:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13989:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10147:517;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10147:517:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10147:517:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13827:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13827:104:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13827:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3828:339;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3828:339:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3828:339:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9841:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9841:131:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9841:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15628:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15628:123:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15628:123:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16041:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16041:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16041:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3402:196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3402:196:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3402:196:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;8463:83;8500:13;8533:5;8526:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8463:83;:::o;10913:148::-;10978:4;10995:36;11004:10;11016:7;11025:5;10995:8;:36::i;:::-;11049:4;11042:11;;10913:148;;;;:::o;9086:91::-;9130:7;9157:12;;9150:19;;9086:91;:::o;12265:297::-;12358:4;5123:7;;;;;;;;;;;5122:8;5114:17;;;;;;12413:5;12383:8;:14;12392:4;12383:14;;;;;;;;;;;;;;;:26;12398:10;12383:26;;;;;;;;;;;;;;;;:35;;12375:44;;;;;;12430:26;12440:4;12446:2;12450:5;12430:9;:26::i;:::-;12467:65;12476:4;12482:10;12494:37;12525:5;12494:8;:14;12503:4;12494:14;;;;;;;;;;;;;;;:26;12509:10;12494:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;12467:8;:65::i;:::-;12550:4;12543:11;;12265:297;;;;;:::o;15838:109::-;15894:7;15921:9;:18;15931:7;15921:18;;;;;;;;;;;;;;;;;;;;;;;;;15914:25;;15838:109;;;:::o;8779:83::-;8820:5;8845:9;;;;;;;;;;;8838:16;;8779:83;:::o;8935:75::-;8971:7;8998:4;;8991:11;;8935:75;:::o;15420:118::-;15479:4;15503:27;;;;;;;;;;;15496:34;;15420:118;:::o;11306:203::-;11386:4;11403:76;11412:10;11424:7;11433:45;11467:10;11433:8;:20;11442:10;11433:20;;;;;;;;;;;;;;;:29;11454:7;11433:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;11403:8;:76::i;:::-;11497:4;11490:11;;11306:203;;;;:::o;5634:119::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;5302:7;;;;;;;;;;;5294:16;;;;;;5704:5;5694:7;;:15;;;;;;;;;;;;;;;;;;5725:20;5734:10;5725:20;;;;;;;;;;;;;;;;;;;;;;5634:119::o;14404:131::-;14472:4;13703:7;:19;13711:10;13703:19;;;;;;;;;;;;;;;;;;;;;;;;;13695:28;;;;;;14489:16;14495:2;14499:5;14489;:16::i;:::-;14523:4;14516:11;;14404:131;;;;:::o;4221:243::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;4332:1;4318:16;;:2;:16;;;;4310:25;;;;;;4348:15;4374:4;4366:21;;;4348:39;;4419:6;4408:7;:17;;4400:26;;;;;;4437:2;:11;;:19;4449:6;4437:19;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4437:19:0;3216:1;4221:243;;:::o;4886:78::-;4925:4;4949:7;;;;;;;;;;;4942:14;;4886:78;:::o;18829:796::-;18937:14;18969:31;18981:18;18969:11;:31::i;:::-;18964:73;;19024:1;19017:8;;;;18964:73;19049:14;19066:18;19049:35;;19095:14;19112:27;;19095:44;;19154:6;19163:1;19154:10;;19150:442;19170:27;19166:1;:31;19150:442;;;19219:16;19238:9;:17;19248:6;19238:17;;;;;;;;;;;;;;;;;;;;;;;;;19219:36;;19286:8;19276:18;;:6;:18;;;19272:266;;19341:1;19319:9;:19;19329:8;19319:19;;;;;;;;;;;;;;;;:23;19315:116;;;19376:35;19387:20;19408:1;19387:23;;;;;;;;;19376:6;:10;;:35;;;;:::i;:::-;19367:44;;19315:116;19272:266;;;19480:18;19491:6;19480;:10;;:18;;;;:::i;:::-;19471:27;;19517:5;;;19272:266;19563:9;:17;19573:6;19563:17;;;;;;;;;;;;;;;;;;;;;;;;;19554:26;;19150:442;19199:3;;;;;;;19150:442;;;;19611:6;19604:13;;;;18829:796;;;;:::o;9396:106::-;9451:7;9478:9;:16;9488:5;9478:16;;;;;;;;;;;;;;;;9471:23;;9396:106;;;:::o;16248:180::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;16358:5;16328:27;;:35;;;;;;;;;;;;;;;;;;16379:41;;;;;;;;;;16248:180::o;18005:375::-;15303:1;15270:35;;:9;:21;15280:10;15270:21;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;15262:44;;;;;;18093:22;18107:7;18093:13;:22::i;:::-;18085:31;;;;;;18150:9;:21;18160:10;18150:21;;;;;;;;;;;;;;;;18129:9;:18;18139:7;18129:18;;;;;;;;;;;;;;;:42;;;;18206:1;18182:9;:21;18192:10;18182:21;;;;;;;;;;;;;;;:25;;;;18239:9;:21;18249:10;18239:21;;;;;;;;;;;;;;;;;;;;;;;;;18218:9;:18;18228:7;18218:18;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18303:1;18271:9;:21;18281:10;18271:21;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18364:7;18321:51;;18352:10;18321:51;;;;;;;;;;;;18005:375;:::o;5422:117::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;5123:7;;;;;;;;;;;5122:8;5114:17;;;;;;5493:4;5483:7;;:14;;;;;;;;;;;;;;;;;;5513:18;5520:10;5513:18;;;;;;;;;;;;;;;;;;;;;;5422:117::o;2972:79::-;3010:7;3037:6;;;;;;;;;;;3030:13;;2972:79;:::o;8613:87::-;8652:13;8685:7;8678:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8613:87;:::o;19725:251::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;19823:1;19814:6;:10;19805:20;;;;;;19860:1;19845:17;;:3;:17;;;;19836:27;;;;;;19874:37;19892:4;19899:3;19904:6;19874:9;:37::i;:::-;19956:3;19927:41;;19949:4;19927:41;;;19961:6;19927:41;;;;;;;;;;;;;;;;;;19725:251;;:::o;11759:213::-;11844:4;11861:81;11870:10;11882:7;11891:50;11925:15;11891:8;:20;11900:10;11891:20;;;;;;;;;;;;;;;:29;11912:7;11891:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;11861:8;:81::i;:::-;11960:4;11953:11;;11759:213;;;;:::o;13989:160::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;14091:5;14072:7;:16;14080:7;14072:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;14112:29;14126:7;14135:5;14112:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13989:160;;:::o;10147:517::-;10222:4;5123:7;;;;;;;;;;;5122:8;5114:17;;;;;;10243:27;;;;;;;;;;;:67;;;;;10283:27;;10274:5;:36;10243:67;:99;;;;;10327:15;10339:2;10327:11;:15::i;:::-;10243:99;:127;;;;;10347:23;10359:10;10347:11;:23::i;:::-;10346:24;10243:127;:156;;;;;10374:25;10388:10;10374:13;:25::i;:::-;10243:156;10239:418;;;10467:29;10481:10;10493:2;10467:13;:29::i;:::-;10518:4;10511:11;;;;10239:418;10587:32;10597:10;10609:2;10613:5;10587:9;:32::i;:::-;10641:4;10634:11;;5142:1;10147:517;;;;:::o;13827:104::-;13883:4;13907:7;:16;13915:7;13907:16;;;;;;;;;;;;;;;;;;;;;;;;;13900:23;;13827:104;;;:::o;3828:339::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;3933:13;3956:9;3933:33;;4005:1;3985:22;;:8;:22;;;;3977:31;;;;;;4019:15;4037:6;:16;;;4062:4;4037:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4037:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4037:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4037:31:0;;;;;;;;;;;;;;;;4019:49;;4100:6;4089:7;:17;;4081:26;;;;;;4125:6;:15;;;4141:8;4151:6;4125:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4125:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4125:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4125:33:0;;;;;;;;;;;;;;;;4118:41;;;;3216:1;;3828:339;;;:::o;9841:131::-;9913:7;9940:8;:15;9949:5;9940:15;;;;;;;;;;;;;;;:24;9956:7;9940:24;;;;;;;;;;;;;;;;9933:31;;9841:131;;;;:::o;15628:123::-;15687:4;15741:1;15711:32;;:9;:18;15721:7;15711:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;15704:39;;15628:123;;;:::o;16041:109::-;16097:7;16124:9;:18;16134:7;16124:18;;;;;;;;;;;;;;;;16117:25;;16041:109;;;:::o;3402:196::-;3198:6;;;;;;;;;;;3184:20;;:10;:20;;;3176:29;;;;;;3505:1;3485:22;;:8;:22;;;;3477:31;;;;;;3528:8;3519:6;;:17;;;;;;;;;;;;;;;;;;3581:8;3552:38;;3573:6;;;;;;;;;;;3552:38;;;;;;;;;;;;3402:196;:::o;13325:254::-;13435:1;13418:19;;:5;:19;;;;13410:28;;;;;;13476:1;13457:21;;:7;:21;;;;13449:30;;;;;;13519:5;13492:8;:15;13501:5;13492:15;;;;;;;;;;;;;;;:24;13508:7;13492:24;;;;;;;;;;;;;;;:32;;;;13556:7;13540:31;;13549:5;13540:31;;;13565:5;13540:31;;;;;;;;;;;;;;;;;;13325:254;;;:::o;12790:262::-;12892:1;12878:16;;:2;:16;;;;12870:25;;;;;;12926:26;12946:5;12926:9;:15;12936:4;12926:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;12908:9;:15;12918:4;12908:15;;;;;;;;;;;;;;;:44;;;;12979:24;12997:5;12979:9;:13;12989:2;12979:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;12963:9;:13;12973:2;12963:13;;;;;;;;;;;;;;;:40;;;;13034:2;13019:25;;13028:4;13019:25;;;13038:5;13019:25;;;;;;;;;;;;;;;;;;12790:262;;;:::o;515:123::-;573:7;605:1;600;:6;;593:14;;;;629:1;625;:5;618:12;;515:123;;;;:::o;236:141::-;294:9;324:1;320;:5;316:9;;348:1;343;:6;;336:14;;;;368:1;361:8;;236:141;;;;:::o;14783:356::-;14885:4;;14858:23;14875:5;14858:12;;:16;;:23;;;;:::i;:::-;:31;;14850:40;;;;;;14928:1;14909:21;;:7;:21;;;;14901:30;;;;;;14959:23;14976:5;14959:12;;:16;;:23;;;;:::i;:::-;14944:12;:38;;;;15014:29;15037:5;15014:9;:18;15024:7;15014:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;14993:9;:18;15003:7;14993:18;;;;;;;;;;;;;;;:50;;;;15064:7;15059:20;;;15073:5;15059:20;;;;;;;;;;;;;;;;;;15116:7;15095:36;;15112:1;15095:36;;;15125:5;15095:36;;;;;;;;;;;;;;;;;;14783:356;;:::o;18471:191::-;18531:4;18548:9;18612:4;18600:17;18592:25;;18653:1;18645:4;:9;18638:16;;;18471:191;;;:::o;16502:1419::-;16606:28;16632:1;16606:9;:21;16616:10;16606:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;16582:9;:21;16592:10;16582:21;;;;;;;;;;;;;;;:52;;;;16666:10;16645:9;:18;16655:7;16645:18;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;16733:10;16694:50;;16724:7;16694:50;;;;;;;;;;;;16808:65;16818:10;16838:4;16845:27;;16808:9;:65::i;:::-;16884:14;16901:7;16884:24;;16919:14;16936:27;;16919:44;;16974:25;17002:1;16974:29;;17018:6;17027:1;17018:10;;17014:776;17034:27;17030:1;:31;17014:776;;;17083:16;17102:9;:17;17112:6;17102:17;;;;;;;;;;;;;;;;;;;;;;;;;17083:36;;17150:8;17140:18;;:6;:18;;;17136:600;;17205:1;17183:9;:19;17193:8;17183:19;;;;;;;;;;;;;;;;:23;17179:428;;;17231:59;17249:4;17256:8;17266:20;17287:1;17266:23;;;;;;;;;17231:9;:59::i;:::-;17322:35;17333:20;17354:1;17333:23;;;;;;;;;17322:6;:10;;:35;;;;:::i;:::-;17313:44;;17179:428;;;17443:46;17465:20;17486:1;17465:23;;;;;;;;;17443:17;:21;;:46;;;;:::i;:::-;17423:66;;17521:35;17532:20;17553:1;17532:23;;;;;;;;;17521:6;:10;;:35;;;;:::i;:::-;17512:44;;17579:8;;;17179:428;17136:600;;;17667:29;17689:6;17667:17;:21;;:29;;;;:::i;:::-;17647:49;;17715:5;;;17136:600;17761:9;:17;17771:6;17761:17;;;;;;;;;;;;;;;;;;;;;;;;;17752:26;;17014:776;;17063:3;;;;;;;17014:776;;;;17826:1;17806:17;:21;17802:112;;;17844:58;17862:4;17877;17884:17;17844:9;:58::i;:::-;17802:112;16502:1419;;;;;:::o
Swarm Source
bzzr://2a9b46a3990d45efe607389c91c6814aeea7b1f833f3678bd8571fc4facaf055
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.