ERC-20
Overview
Max Total Supply
1,000,000,000 Tsukiyomi
Holders
106
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,680,039.739087411152968872 TsukiyomiValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Tsukiyomi
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-05 */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } pragma solidity ^0.8.0; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } pragma solidity 0.8.16; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function allPairsLength() external view returns (uint256); function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function decimals() external view returns (uint8); function symbol() external view returns (string memory); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function symbol() external view virtual override returns (string memory) { return _symbol; } function name() external view virtual override returns (string memory) { return _name; } function totalSupply() external view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function decimals() public view virtual override returns (uint8) { return 18; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function transfer(address to, uint256 amount) external virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } function approve(address spender, uint256 amount) external virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) external virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; unchecked { _balances[account] += amount; } emit Transfer(address(0), account, amount); } 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"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } 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); } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); } } contract Tsukiyomi is Ownable, ERC20 { uint256 private _numTokensSellToAddToSwap = 100000 * (10**decimals()); bool inSwapAndLiquify; // 1% buy/sell tax uint256 public constant buySellLiquidityTax = 0; uint256 public constant sellDevelopmentTax = 0; address public developmentWallet = 0x1ED00Ec214EB055C583bF38d5D7Eaa7D2673aDc7; address public constant DEAD = address(0xdead);// burn LP to dead address IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; mapping(address => bool) private _isExcludedFromFee; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() ERC20("Tsukiyomi", "Tsukiyomi") { _mint(msg.sender, (1000000000 * 10**decimals())); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[msg.sender] = true; _isExcludedFromFee[address(uniswapV2Router)] = true; } function _swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 half = (contractTokenBalance / 2); uint256 otherHalf = (contractTokenBalance - half); uint256 initialBalance = address(this).balance; _swapTokensForEth(half); uint256 newBalance = (address(this).balance - initialBalance); _addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function excludeFromFee (address _user, bool value) external onlyOwner { _isExcludedFromFee[_user]= value; } function swapAndSendToMarketing (uint256 tokens) private lockTheSwap { uint256 initialBalance = address(this).balance; _swapTokensForEth(tokens); uint256 newBalance = address(this).balance - initialBalance; payable (developmentWallet).transfer(newBalance); } function _swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), (block.timestamp + 300) ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, DEAD, block.timestamp ); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require( balanceOf(from) >= amount, "ERC20: transfer amount exceeds balance" ); uint256 transferAmount; if ( (from == uniswapV2Pair || to == uniswapV2Pair) && !inSwapAndLiquify ) { if ( from != uniswapV2Pair && ((balanceOf(address(this))) >= _numTokensSellToAddToSwap) ) { uint256 totalfee = 2*(buySellLiquidityTax)+sellDevelopmentTax; _numTokensSellToAddToSwap = balanceOf(address(this)); uint256 marketingTokens = _numTokensSellToAddToSwap * sellDevelopmentTax / totalfee; swapAndSendToMarketing(marketingTokens); uint256 liquidityTokens = _numTokensSellToAddToSwap - marketingTokens; _swapAndLiquify(liquidityTokens); } if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { transferAmount = amount; } else { uint256 liquidityAmount = ((amount * buySellLiquidityTax) / 100); if (from == uniswapV2Pair) { transferAmount = amount - liquidityAmount; } else { uint256 developmentAmount = ((amount * sellDevelopmentTax) / 100); transferAmount = amount - liquidityAmount - developmentAmount; super._transfer(from, address(this), developmentAmount); // only on sell transaction } super._transfer(from, address(this), liquidityAmount); // on buy/sell both transactions } } else { // normal wallet transaction transferAmount = amount; } super._transfer(from, to, transferAmount); } receive() external payable {} }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buySellLiquidityTax","outputs":[{"internalType":"uint256","name":"","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":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052620000146200042860201b60201c565b600a620000229190620007dd565b620186a06200003291906200082e565b600655731ed00ec214eb055c583bf38d5d7eaa7d2673adc7600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200009757600080fd5b506040518060400160405280600981526020017f5473756b69796f6d6900000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f5473756b69796f6d69000000000000000000000000000000000000000000000081525062000124620001186200043160201b60201c565b6200043960201b60201c565b816004908162000135919062000aff565b50806005908162000147919062000aff565b5050506200018a336200015f6200042860201b60201c565b600a6200016d9190620007dd565b633b9aca006200017e91906200082e565b620004fd60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000215919062000c50565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000c50565b6040518363ffffffff1660e01b8152600401620002c292919062000c93565b6020604051808303816000875af1158015620002e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000308919062000c50565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000dac565b60006012905090565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200056f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005669062000d21565b60405180910390fd5b806003600082825462000583919062000d43565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000637919062000d8f565b60405180910390a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006d157808604811115620006a957620006a862000643565b5b6001851615620006b95780820291505b8081029050620006c98562000672565b945062000689565b94509492505050565b600082620006ec5760019050620007bf565b81620006fc5760009050620007bf565b8160018114620007155760028114620007205762000756565b6001915050620007bf565b60ff84111562000735576200073462000643565b5b8360020a9150848211156200074f576200074e62000643565b5b50620007bf565b5060208310610133831016604e8410600b8410161715620007905782820a9050838111156200078a576200078962000643565b5b620007bf565b6200079f84848460016200067f565b92509050818404811115620007b957620007b862000643565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007ea82620007c6565b9150620007f783620007d0565b9250620008267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006da565b905092915050565b60006200083b82620007c6565b91506200084883620007c6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000884576200088362000643565b5b828202905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200091157607f821691505b602082108103620009275762000926620008c9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000952565b6200099d868362000952565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620009e0620009da620009d484620007c6565b620009b5565b620007c6565b9050919050565b6000819050919050565b620009fc83620009bf565b62000a1462000a0b82620009e7565b8484546200095f565b825550505050565b600090565b62000a2b62000a1c565b62000a38818484620009f1565b505050565b5b8181101562000a605762000a5460008262000a21565b60018101905062000a3e565b5050565b601f82111562000aaf5762000a79816200092d565b62000a848462000942565b8101602085101562000a94578190505b62000aac62000aa38562000942565b83018262000a3d565b50505b505050565b600082821c905092915050565b600062000ad46000198460080262000ab4565b1980831691505092915050565b600062000aef838362000ac1565b9150826002028217905092915050565b62000b0a826200088f565b67ffffffffffffffff81111562000b265762000b256200089a565b5b62000b328254620008f8565b62000b3f82828562000a64565b600060209050601f83116001811462000b77576000841562000b62578287015190505b62000b6e858262000ae1565b86555062000bde565b601f19841662000b87866200092d565b60005b8281101562000bb15784890151825560018201915060208501945060208101905062000b8a565b8683101562000bd1578489015162000bcd601f89168262000ac1565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c188262000beb565b9050919050565b62000c2a8162000c0b565b811462000c3657600080fd5b50565b60008151905062000c4a8162000c1f565b92915050565b60006020828403121562000c695762000c6862000be6565b5b600062000c798482850162000c39565b91505092915050565b62000c8d8162000c0b565b82525050565b600060408201905062000caa600083018562000c82565b62000cb9602083018462000c82565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d09601f8362000cc0565b915062000d168262000cd1565b602082019050919050565b6000602082019050818103600083015262000d3c8162000cfa565b9050919050565b600062000d5082620007c6565b915062000d5d83620007c6565b925082820190508082111562000d785762000d7762000643565b5b92915050565b62000d8981620007c6565b82525050565b600060208201905062000da6600083018462000d7e565b92915050565b60805160a05161278362000e116000396000818161068101528181610ed801528181610f2d01528181610f9b01526111430152600081816105e40152818161175a0152818161183b015281816118620152818161190b015261193201526127836000f3fe60806040526004361061012e5760003560e01c8063715018a6116100ab578063a9059cbb1161006f578063a9059cbb14610405578063ad8052bb14610442578063c04a54141461046d578063dd62ed3e14610498578063df8408fe146104d5578063f2fde38b146104fe57610135565b8063715018a614610330578063739822b2146103475780638da5cb5b1461037257806395d89b411461039d578063a457c2d7146103c857610135565b806323b872dd116100f257806323b872dd14610223578063313ce56714610260578063395093511461028b57806349bd5a5e146102c857806370a08231146102f357610135565b806303fd2a451461013a57806306fdde0314610165578063095ea7b3146101905780631694505e146101cd57806318160ddd146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f610527565b60405161015c9190611a22565b60405180910390f35b34801561017157600080fd5b5061017a61052d565b6040516101879190611acd565b60405180910390f35b34801561019c57600080fd5b506101b760048036038101906101b29190611b56565b6105bf565b6040516101c49190611bb1565b60405180910390f35b3480156101d957600080fd5b506101e26105e2565b6040516101ef9190611c2b565b60405180910390f35b34801561020457600080fd5b5061020d610606565b60405161021a9190611c55565b60405180910390f35b34801561022f57600080fd5b5061024a60048036038101906102459190611c70565b610610565b6040516102579190611bb1565b60405180910390f35b34801561026c57600080fd5b5061027561063f565b6040516102829190611cdf565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190611b56565b610648565b6040516102bf9190611bb1565b60405180910390f35b3480156102d457600080fd5b506102dd61067f565b6040516102ea9190611a22565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190611cfa565b6106a3565b6040516103279190611c55565b60405180910390f35b34801561033c57600080fd5b506103456106ec565b005b34801561035357600080fd5b5061035c610774565b6040516103699190611c55565b60405180910390f35b34801561037e57600080fd5b50610387610779565b6040516103949190611a22565b60405180910390f35b3480156103a957600080fd5b506103b26107a2565b6040516103bf9190611acd565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190611b56565b610834565b6040516103fc9190611bb1565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190611b56565b6108ab565b6040516104399190611bb1565b60405180910390f35b34801561044e57600080fd5b506104576108ce565b6040516104649190611c55565b60405180910390f35b34801561047957600080fd5b506104826108d3565b60405161048f9190611a22565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190611d27565b6108f9565b6040516104cc9190611c55565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f79190611d93565b610980565b005b34801561050a57600080fd5b5061052560048036038101906105209190611cfa565b610a57565b005b61dead81565b60606004805461053c90611e02565b80601f016020809104026020016040519081016040528092919081815260200182805461056890611e02565b80156105b55780601f1061058a576101008083540402835291602001916105b5565b820191906000526020600020905b81548152906001019060200180831161059857829003601f168201915b5050505050905090565b6000806105ca610b4e565b90506105d7818585610b56565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600354905090565b60008061061b610b4e565b9050610628858285610d1f565b610633858585610dab565b60019150509392505050565b60006012905090565b600080610653610b4e565b905061067481858561066585896108f9565b61066f9190611e62565b610b56565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106f4610b4e565b73ffffffffffffffffffffffffffffffffffffffff16610712610779565b73ffffffffffffffffffffffffffffffffffffffff1614610768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075f90611ee2565b60405180910390fd5b6107726000611211565b565b600081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546107b190611e02565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd90611e02565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b5050505050905090565b60008061083f610b4e565b9050600061084d82866108f9565b905083811015610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088990611f74565b60405180910390fd5b61089f8286868403610b56565b60019250505092915050565b6000806108b6610b4e565b90506108c3818585610dab565b600191505092915050565b600081565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610988610b4e565b73ffffffffffffffffffffffffffffffffffffffff166109a6610779565b73ffffffffffffffffffffffffffffffffffffffff16146109fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f390611ee2565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610a5f610b4e565b73ffffffffffffffffffffffffffffffffffffffff16610a7d610779565b73ffffffffffffffffffffffffffffffffffffffff1614610ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aca90611ee2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990612006565b60405180910390fd5b610b4b81611211565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc90612098565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b9061212a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d129190611c55565b60405180910390a3505050565b6000610d2b84846108f9565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da55781811015610d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8e90612196565b60405180910390fd5b610da48484848403610b56565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1190612228565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e80906122ba565b60405180910390fd5b80610e93846106a3565b1015610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb9061234c565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610f7b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015610f945750600760009054906101000a900460ff16155b156111fc577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610fff5750600654610ffc306106a3565b10155b156110765760008060006002611015919061236c565b61101f9190611e62565b905061102a306106a3565b6006819055506000816000600654611042919061236c565b61104c91906123f5565b9050611057816112d5565b6000816006546110679190612426565b905061107281611397565b5050505b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806111175750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611124578190506111f7565b60006064600084611135919061236c565b61113f91906123f5565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036111a75780836111a09190612426565b91506111ea565b600060646000856111b8919061236c565b6111c291906123f5565b90508082856111d19190612426565b6111db9190612426565b92506111e8863083611458565b505b6111f5853083611458565b505b611200565b8190505b61120b848483611458565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600760006101000a81548160ff02191690831515021790555060004790506112fe826116bb565b6000814761130c9190612426565b9050600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611376573d6000803e3d6000fd5b5050506000600760006101000a81548160ff02191690831515021790555050565b6001600760006101000a81548160ff02191690831515021790555060006002826113c191906123f5565b9050600081836113d19190612426565b905060004790506113e1836116bb565b600081476113ef9190612426565b90506113fb8382611905565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161142e9392919061245a565b60405180910390a1505050506000600760006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612228565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d906122ba565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b49061234c565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ad9190611c55565b60405180910390a350505050565b6000600267ffffffffffffffff8111156116d8576116d7612491565b5b6040519080825280602002602001820160405280156117065781602001602082028036833780820191505090505b509050308160008151811061171e5761171d6124c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e79190612504565b816001815181106117fb576117fa6124c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611860307f000000000000000000000000000000000000000000000000000000000000000084610b56565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843061012c426118af9190611e62565b6040518663ffffffff1660e01b81526004016118cf95949392919061262a565b600060405180830381600087803b1580156118e957600080fd5b505af11580156118fd573d6000803e3d6000fd5b505050505050565b611930307f000000000000000000000000000000000000000000000000000000000000000084610b56565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161199796959493929190612684565b60606040518083038185885af11580156119b5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119da91906126fa565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a0c826119e1565b9050919050565b611a1c81611a01565b82525050565b6000602082019050611a376000830184611a13565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a77578082015181840152602081019050611a5c565b60008484015250505050565b6000601f19601f8301169050919050565b6000611a9f82611a3d565b611aa98185611a48565b9350611ab9818560208601611a59565b611ac281611a83565b840191505092915050565b60006020820190508181036000830152611ae78184611a94565b905092915050565b600080fd5b611afd81611a01565b8114611b0857600080fd5b50565b600081359050611b1a81611af4565b92915050565b6000819050919050565b611b3381611b20565b8114611b3e57600080fd5b50565b600081359050611b5081611b2a565b92915050565b60008060408385031215611b6d57611b6c611aef565b5b6000611b7b85828601611b0b565b9250506020611b8c85828601611b41565b9150509250929050565b60008115159050919050565b611bab81611b96565b82525050565b6000602082019050611bc66000830184611ba2565b92915050565b6000819050919050565b6000611bf1611bec611be7846119e1565b611bcc565b6119e1565b9050919050565b6000611c0382611bd6565b9050919050565b6000611c1582611bf8565b9050919050565b611c2581611c0a565b82525050565b6000602082019050611c406000830184611c1c565b92915050565b611c4f81611b20565b82525050565b6000602082019050611c6a6000830184611c46565b92915050565b600080600060608486031215611c8957611c88611aef565b5b6000611c9786828701611b0b565b9350506020611ca886828701611b0b565b9250506040611cb986828701611b41565b9150509250925092565b600060ff82169050919050565b611cd981611cc3565b82525050565b6000602082019050611cf46000830184611cd0565b92915050565b600060208284031215611d1057611d0f611aef565b5b6000611d1e84828501611b0b565b91505092915050565b60008060408385031215611d3e57611d3d611aef565b5b6000611d4c85828601611b0b565b9250506020611d5d85828601611b0b565b9150509250929050565b611d7081611b96565b8114611d7b57600080fd5b50565b600081359050611d8d81611d67565b92915050565b60008060408385031215611daa57611da9611aef565b5b6000611db885828601611b0b565b9250506020611dc985828601611d7e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611e1a57607f821691505b602082108103611e2d57611e2c611dd3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e6d82611b20565b9150611e7883611b20565b9250828201905080821115611e9057611e8f611e33565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611ecc602083611a48565b9150611ed782611e96565b602082019050919050565b60006020820190508181036000830152611efb81611ebf565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611f5e602583611a48565b9150611f6982611f02565b604082019050919050565b60006020820190508181036000830152611f8d81611f51565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611ff0602683611a48565b9150611ffb82611f94565b604082019050919050565b6000602082019050818103600083015261201f81611fe3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612082602483611a48565b915061208d82612026565b604082019050919050565b600060208201905081810360008301526120b181612075565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612114602283611a48565b915061211f826120b8565b604082019050919050565b6000602082019050818103600083015261214381612107565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612180601d83611a48565b915061218b8261214a565b602082019050919050565b600060208201905081810360008301526121af81612173565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612212602583611a48565b915061221d826121b6565b604082019050919050565b6000602082019050818103600083015261224181612205565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006122a4602383611a48565b91506122af82612248565b604082019050919050565b600060208201905081810360008301526122d381612297565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612336602683611a48565b9150612341826122da565b604082019050919050565b6000602082019050818103600083015261236581612329565b9050919050565b600061237782611b20565b915061238283611b20565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123bb576123ba611e33565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061240082611b20565b915061240b83611b20565b92508261241b5761241a6123c6565b5b828204905092915050565b600061243182611b20565b915061243c83611b20565b925082820390508181111561245457612453611e33565b5b92915050565b600060608201905061246f6000830186611c46565b61247c6020830185611c46565b6124896040830184611c46565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506124fe81611af4565b92915050565b60006020828403121561251a57612519611aef565b5b6000612528848285016124ef565b91505092915050565b6000819050919050565b600061255661255161254c84612531565b611bcc565b611b20565b9050919050565b6125668161253b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125a181611a01565b82525050565b60006125b38383612598565b60208301905092915050565b6000602082019050919050565b60006125d78261256c565b6125e18185612577565b93506125ec83612588565b8060005b8381101561261d57815161260488826125a7565b975061260f836125bf565b9250506001810190506125f0565b5085935050505092915050565b600060a08201905061263f6000830188611c46565b61264c602083018761255d565b818103604083015261265e81866125cc565b905061266d6060830185611a13565b61267a6080830184611c46565b9695505050505050565b600060c0820190506126996000830189611a13565b6126a66020830188611c46565b6126b3604083018761255d565b6126c0606083018661255d565b6126cd6080830185611a13565b6126da60a0830184611c46565b979650505050505050565b6000815190506126f481611b2a565b92915050565b60008060006060848603121561271357612712611aef565b5b6000612721868287016126e5565b9350506020612732868287016126e5565b9250506040612743868287016126e5565b915050925092509256fea2646970667358221220413c663a19c885edc7aa76a18381284b5253614cc6b6f620bcc44a553e9aac4964736f6c63430008100033
Deployed Bytecode
0x60806040526004361061012e5760003560e01c8063715018a6116100ab578063a9059cbb1161006f578063a9059cbb14610405578063ad8052bb14610442578063c04a54141461046d578063dd62ed3e14610498578063df8408fe146104d5578063f2fde38b146104fe57610135565b8063715018a614610330578063739822b2146103475780638da5cb5b1461037257806395d89b411461039d578063a457c2d7146103c857610135565b806323b872dd116100f257806323b872dd14610223578063313ce56714610260578063395093511461028b57806349bd5a5e146102c857806370a08231146102f357610135565b806303fd2a451461013a57806306fdde0314610165578063095ea7b3146101905780631694505e146101cd57806318160ddd146101f857610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f610527565b60405161015c9190611a22565b60405180910390f35b34801561017157600080fd5b5061017a61052d565b6040516101879190611acd565b60405180910390f35b34801561019c57600080fd5b506101b760048036038101906101b29190611b56565b6105bf565b6040516101c49190611bb1565b60405180910390f35b3480156101d957600080fd5b506101e26105e2565b6040516101ef9190611c2b565b60405180910390f35b34801561020457600080fd5b5061020d610606565b60405161021a9190611c55565b60405180910390f35b34801561022f57600080fd5b5061024a60048036038101906102459190611c70565b610610565b6040516102579190611bb1565b60405180910390f35b34801561026c57600080fd5b5061027561063f565b6040516102829190611cdf565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190611b56565b610648565b6040516102bf9190611bb1565b60405180910390f35b3480156102d457600080fd5b506102dd61067f565b6040516102ea9190611a22565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190611cfa565b6106a3565b6040516103279190611c55565b60405180910390f35b34801561033c57600080fd5b506103456106ec565b005b34801561035357600080fd5b5061035c610774565b6040516103699190611c55565b60405180910390f35b34801561037e57600080fd5b50610387610779565b6040516103949190611a22565b60405180910390f35b3480156103a957600080fd5b506103b26107a2565b6040516103bf9190611acd565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190611b56565b610834565b6040516103fc9190611bb1565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190611b56565b6108ab565b6040516104399190611bb1565b60405180910390f35b34801561044e57600080fd5b506104576108ce565b6040516104649190611c55565b60405180910390f35b34801561047957600080fd5b506104826108d3565b60405161048f9190611a22565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190611d27565b6108f9565b6040516104cc9190611c55565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f79190611d93565b610980565b005b34801561050a57600080fd5b5061052560048036038101906105209190611cfa565b610a57565b005b61dead81565b60606004805461053c90611e02565b80601f016020809104026020016040519081016040528092919081815260200182805461056890611e02565b80156105b55780601f1061058a576101008083540402835291602001916105b5565b820191906000526020600020905b81548152906001019060200180831161059857829003601f168201915b5050505050905090565b6000806105ca610b4e565b90506105d7818585610b56565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600354905090565b60008061061b610b4e565b9050610628858285610d1f565b610633858585610dab565b60019150509392505050565b60006012905090565b600080610653610b4e565b905061067481858561066585896108f9565b61066f9190611e62565b610b56565b600191505092915050565b7f00000000000000000000000078107cc1cef80814c1883ebb87ab5a65eaf4333281565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106f4610b4e565b73ffffffffffffffffffffffffffffffffffffffff16610712610779565b73ffffffffffffffffffffffffffffffffffffffff1614610768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075f90611ee2565b60405180910390fd5b6107726000611211565b565b600081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546107b190611e02565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd90611e02565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b5050505050905090565b60008061083f610b4e565b9050600061084d82866108f9565b905083811015610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088990611f74565b60405180910390fd5b61089f8286868403610b56565b60019250505092915050565b6000806108b6610b4e565b90506108c3818585610dab565b600191505092915050565b600081565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610988610b4e565b73ffffffffffffffffffffffffffffffffffffffff166109a6610779565b73ffffffffffffffffffffffffffffffffffffffff16146109fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f390611ee2565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610a5f610b4e565b73ffffffffffffffffffffffffffffffffffffffff16610a7d610779565b73ffffffffffffffffffffffffffffffffffffffff1614610ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aca90611ee2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990612006565b60405180910390fd5b610b4b81611211565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc90612098565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b9061212a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d129190611c55565b60405180910390a3505050565b6000610d2b84846108f9565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da55781811015610d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8e90612196565b60405180910390fd5b610da48484848403610b56565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1190612228565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e80906122ba565b60405180910390fd5b80610e93846106a3565b1015610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb9061234c565b60405180910390fd5b60007f00000000000000000000000078107cc1cef80814c1883ebb87ab5a65eaf4333273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610f7b57507f00000000000000000000000078107cc1cef80814c1883ebb87ab5a65eaf4333273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015610f945750600760009054906101000a900460ff16155b156111fc577f00000000000000000000000078107cc1cef80814c1883ebb87ab5a65eaf4333273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610fff5750600654610ffc306106a3565b10155b156110765760008060006002611015919061236c565b61101f9190611e62565b905061102a306106a3565b6006819055506000816000600654611042919061236c565b61104c91906123f5565b9050611057816112d5565b6000816006546110679190612426565b905061107281611397565b5050505b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806111175750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611124578190506111f7565b60006064600084611135919061236c565b61113f91906123f5565b90507f00000000000000000000000078107cc1cef80814c1883ebb87ab5a65eaf4333273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036111a75780836111a09190612426565b91506111ea565b600060646000856111b8919061236c565b6111c291906123f5565b90508082856111d19190612426565b6111db9190612426565b92506111e8863083611458565b505b6111f5853083611458565b505b611200565b8190505b61120b848483611458565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600760006101000a81548160ff02191690831515021790555060004790506112fe826116bb565b6000814761130c9190612426565b9050600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611376573d6000803e3d6000fd5b5050506000600760006101000a81548160ff02191690831515021790555050565b6001600760006101000a81548160ff02191690831515021790555060006002826113c191906123f5565b9050600081836113d19190612426565b905060004790506113e1836116bb565b600081476113ef9190612426565b90506113fb8382611905565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161142e9392919061245a565b60405180910390a1505050506000600760006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612228565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d906122ba565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b49061234c565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ad9190611c55565b60405180910390a350505050565b6000600267ffffffffffffffff8111156116d8576116d7612491565b5b6040519080825280602002602001820160405280156117065781602001602082028036833780820191505090505b509050308160008151811061171e5761171d6124c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e79190612504565b816001815181106117fb576117fa6124c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611860307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610b56565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843061012c426118af9190611e62565b6040518663ffffffff1660e01b81526004016118cf95949392919061262a565b600060405180830381600087803b1580156118e957600080fd5b505af11580156118fd573d6000803e3d6000fd5b505050505050565b611930307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610b56565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161199796959493929190612684565b60606040518083038185885af11580156119b5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119da91906126fa565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a0c826119e1565b9050919050565b611a1c81611a01565b82525050565b6000602082019050611a376000830184611a13565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a77578082015181840152602081019050611a5c565b60008484015250505050565b6000601f19601f8301169050919050565b6000611a9f82611a3d565b611aa98185611a48565b9350611ab9818560208601611a59565b611ac281611a83565b840191505092915050565b60006020820190508181036000830152611ae78184611a94565b905092915050565b600080fd5b611afd81611a01565b8114611b0857600080fd5b50565b600081359050611b1a81611af4565b92915050565b6000819050919050565b611b3381611b20565b8114611b3e57600080fd5b50565b600081359050611b5081611b2a565b92915050565b60008060408385031215611b6d57611b6c611aef565b5b6000611b7b85828601611b0b565b9250506020611b8c85828601611b41565b9150509250929050565b60008115159050919050565b611bab81611b96565b82525050565b6000602082019050611bc66000830184611ba2565b92915050565b6000819050919050565b6000611bf1611bec611be7846119e1565b611bcc565b6119e1565b9050919050565b6000611c0382611bd6565b9050919050565b6000611c1582611bf8565b9050919050565b611c2581611c0a565b82525050565b6000602082019050611c406000830184611c1c565b92915050565b611c4f81611b20565b82525050565b6000602082019050611c6a6000830184611c46565b92915050565b600080600060608486031215611c8957611c88611aef565b5b6000611c9786828701611b0b565b9350506020611ca886828701611b0b565b9250506040611cb986828701611b41565b9150509250925092565b600060ff82169050919050565b611cd981611cc3565b82525050565b6000602082019050611cf46000830184611cd0565b92915050565b600060208284031215611d1057611d0f611aef565b5b6000611d1e84828501611b0b565b91505092915050565b60008060408385031215611d3e57611d3d611aef565b5b6000611d4c85828601611b0b565b9250506020611d5d85828601611b0b565b9150509250929050565b611d7081611b96565b8114611d7b57600080fd5b50565b600081359050611d8d81611d67565b92915050565b60008060408385031215611daa57611da9611aef565b5b6000611db885828601611b0b565b9250506020611dc985828601611d7e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611e1a57607f821691505b602082108103611e2d57611e2c611dd3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e6d82611b20565b9150611e7883611b20565b9250828201905080821115611e9057611e8f611e33565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611ecc602083611a48565b9150611ed782611e96565b602082019050919050565b60006020820190508181036000830152611efb81611ebf565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611f5e602583611a48565b9150611f6982611f02565b604082019050919050565b60006020820190508181036000830152611f8d81611f51565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611ff0602683611a48565b9150611ffb82611f94565b604082019050919050565b6000602082019050818103600083015261201f81611fe3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612082602483611a48565b915061208d82612026565b604082019050919050565b600060208201905081810360008301526120b181612075565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612114602283611a48565b915061211f826120b8565b604082019050919050565b6000602082019050818103600083015261214381612107565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612180601d83611a48565b915061218b8261214a565b602082019050919050565b600060208201905081810360008301526121af81612173565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612212602583611a48565b915061221d826121b6565b604082019050919050565b6000602082019050818103600083015261224181612205565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006122a4602383611a48565b91506122af82612248565b604082019050919050565b600060208201905081810360008301526122d381612297565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612336602683611a48565b9150612341826122da565b604082019050919050565b6000602082019050818103600083015261236581612329565b9050919050565b600061237782611b20565b915061238283611b20565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156123bb576123ba611e33565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061240082611b20565b915061240b83611b20565b92508261241b5761241a6123c6565b5b828204905092915050565b600061243182611b20565b915061243c83611b20565b925082820390508181111561245457612453611e33565b5b92915050565b600060608201905061246f6000830186611c46565b61247c6020830185611c46565b6124896040830184611c46565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506124fe81611af4565b92915050565b60006020828403121561251a57612519611aef565b5b6000612528848285016124ef565b91505092915050565b6000819050919050565b600061255661255161254c84612531565b611bcc565b611b20565b9050919050565b6125668161253b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125a181611a01565b82525050565b60006125b38383612598565b60208301905092915050565b6000602082019050919050565b60006125d78261256c565b6125e18185612577565b93506125ec83612588565b8060005b8381101561261d57815161260488826125a7565b975061260f836125bf565b9250506001810190506125f0565b5085935050505092915050565b600060a08201905061263f6000830188611c46565b61264c602083018761255d565b818103604083015261265e81866125cc565b905061266d6060830185611a13565b61267a6080830184611c46565b9695505050505050565b600060c0820190506126996000830189611a13565b6126a66020830188611c46565b6126b3604083018761255d565b6126c0606083018661255d565b6126cd6080830185611a13565b6126da60a0830184611c46565b979650505050505050565b6000815190506126f481611b2a565b92915050565b60008060006060848603121561271357612712611aef565b5b6000612721868287016126e5565b9350506020612732868287016126e5565b9250506040612743868287016126e5565b915050925092509256fea2646970667358221220413c663a19c885edc7aa76a18381284b5253614cc6b6f620bcc44a553e9aac4964736f6c63430008100033
Deployed Bytecode Sourcemap
17082:5494:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17447:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12202:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13169:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17533:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12312:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13421:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12615:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13726:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17591:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12430:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;801:103;;;;;;;;;;;;;:::i;:::-;;17256:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;578:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12088:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14006:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12925:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17310:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17363:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12716:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18994:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;912:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17447:47;17487:6;17447:47;:::o;12202:102::-;12258:13;12291:5;12284:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12202:102;:::o;13169:244::-;13290:4;13312:13;13328:12;:10;:12::i;:::-;13312:28;;13351:32;13360:5;13367:7;13376:6;13351:8;:32::i;:::-;13401:4;13394:11;;;13169:244;;;;:::o;17533:51::-;;;:::o;12312:110::-;12375:7;12402:12;;12395:19;;12312:110;:::o;13421:297::-;13554:4;13571:15;13589:12;:10;:12::i;:::-;13571:30;;13612:38;13628:4;13634:7;13643:6;13612:15;:38::i;:::-;13661:27;13671:4;13677:2;13681:6;13661:9;:27::i;:::-;13706:4;13699:11;;;13421:297;;;;;:::o;12615:93::-;12673:5;12698:2;12691:9;;12615:93;:::o;13726:272::-;13843:4;13865:13;13881:12;:10;:12::i;:::-;13865:28;;13904:64;13913:5;13920:7;13957:10;13929:25;13939:5;13946:7;13929:9;:25::i;:::-;:38;;;;:::i;:::-;13904:8;:64::i;:::-;13986:4;13979:11;;;13726:272;;;;:::o;17591:38::-;;;:::o;12430:177::-;12549:7;12581:9;:18;12591:7;12581:18;;;;;;;;;;;;;;;;12574:25;;12430:177;;;:::o;801:103::-;724:12;:10;:12::i;:::-;713:23;;:7;:5;:7::i;:::-;:23;;;705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;866:30:::1;893:1;866:18;:30::i;:::-;801:103::o:0;17256:47::-;17302:1;17256:47;:::o;578:87::-;624:7;651:6;;;;;;;;;;;644:13;;578:87;:::o;12088:106::-;12146:13;12179:7;12172:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12088:106;:::o;14006:507::-;14128:4;14150:13;14166:12;:10;:12::i;:::-;14150:28;;14189:24;14216:25;14226:5;14233:7;14216:9;:25::i;:::-;14189:52;;14294:15;14274:16;:35;;14252:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;14410:60;14419:5;14426:7;14454:15;14435:16;:34;14410:8;:60::i;:::-;14501:4;14494:11;;;;14006:507;;;;:::o;12925:236::-;13042:4;13064:13;13080:12;:10;:12::i;:::-;13064:28;;13103;13113:5;13120:2;13124:6;13103:9;:28::i;:::-;13149:4;13142:11;;;12925:236;;;;:::o;17310:46::-;17355:1;17310:46;:::o;17363:77::-;;;;;;;;;;;;;:::o;12716:201::-;12850:7;12882:11;:18;12894:5;12882:18;;;;;;;;;;;;;;;:27;12901:7;12882:27;;;;;;;;;;;;;;;;12875:34;;12716:201;;;;:::o;18994:122::-;724:12;:10;:12::i;:::-;713:23;;:7;:5;:7::i;:::-;:23;;;705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19103:5:::1;19076:18;:25;19095:5;19076:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18994:122:::0;;:::o;912:201::-;724:12;:10;:12::i;:::-;713:23;;:7;:5;:7::i;:::-;:23;;;705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1021:1:::1;1001:22;;:8;:22;;::::0;993:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1077:28;1096:8;1077:18;:28::i;:::-;912:201:::0;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;15911:380::-;16064:1;16047:19;;:5;:19;;;16039:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16145:1;16126:21;;:7;:21;;;16118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16229:6;16199:11;:18;16211:5;16199:18;;;;;;;;;;;;;;;:27;16218:7;16199:27;;;;;;;;;;;;;;;:36;;;;16267:7;16251:32;;16260:5;16251:32;;;16276:6;16251:32;;;;;;:::i;:::-;;;;;;;;15911:380;;;:::o;15401:502::-;15536:24;15563:25;15573:5;15580:7;15563:9;:25::i;:::-;15536:52;;15623:17;15603:16;:37;15599:297;;15703:6;15683:16;:26;;15657:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15818:51;15827:5;15834:7;15862:6;15843:16;:25;15818:8;:51::i;:::-;15599:297;15525:378;15401:502;;;:::o;20293:2243::-;20441:1;20425:18;;:4;:18;;;20417:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20518:1;20504:16;;:2;:16;;;20496:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20612:6;20593:15;20603:4;20593:9;:15::i;:::-;:25;;20571:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;20697:22;20757:13;20749:21;;:4;:21;;;:44;;;;20780:13;20774:19;;:2;:19;;;20749:44;20748:67;;;;;20799:16;;;;;;;;;;;20798:17;20748:67;20730:1747;;;20872:13;20864:21;;:4;:21;;;;:99;;;;;20937:25;;20908:24;20926:4;20908:9;:24::i;:::-;20907:55;;20864:99;20842:632;;;21004:16;17355:1;17302;21023;:23;;;;:::i;:::-;:42;;;;:::i;:::-;21004:61;;21116:24;21134:4;21116:9;:24::i;:::-;21088:25;:52;;;;21165:23;21240:8;17355:1;21191:25;;:46;;;;:::i;:::-;:57;;;;:::i;:::-;21165:83;;21271:39;21294:15;21271:22;:39::i;:::-;21336:23;21390:15;21362:25;;:43;;;;:::i;:::-;21336:69;;21426:32;21442:15;21426;:32::i;:::-;20981:493;;;20842:632;21492:18;:24;21511:4;21492:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;21520:18;:22;21539:2;21520:22;;;;;;;;;;;;;;;;;;;;;;;;;21492:50;21488:880;;;21580:6;21563:23;;21488:880;;;21627:23;21708:3;17302:1;21655:6;:28;;;;:::i;:::-;21654:57;;;;:::i;:::-;21627:85;;21743:13;21735:21;;:4;:21;;;21731:517;;21807:15;21798:6;:24;;;;:::i;:::-;21781:41;;21731:517;;;21871:25;21957:3;17355:1;21901:6;:27;;;;:::i;:::-;21900:60;;;;:::i;:::-;21871:90;;22105:17;22062:15;22028:6;:49;;;;:::i;:::-;:94;;;;:::i;:::-;21986:136;;22145:55;22161:4;22175;22182:17;22145:15;:55::i;:::-;21848:400;21731:517;22266:53;22282:4;22296;22303:15;22266;:53::i;:::-;21608:760;21488:880;20730:1747;;;22459:6;22442:23;;20730:1747;22487:41;22503:4;22509:2;22513:14;22487:15;:41::i;:::-;20406:2130;20293:2243;;;:::o;1121:191::-;1195:16;1214:6;;;;;;;;;;;1195:25;;1240:8;1231:6;;:17;;;;;;;;;;;;;;;;;;1295:8;1264:40;;1285:8;1264:40;;;;;;;;;;;;1184:128;1121:191;:::o;19124:301::-;17884:4;17865:16;;:23;;;;;;;;;;;;;;;;;;19204:22:::1;19229:21;19204:46;;19261:25;19279:6;19261:17;:25::i;:::-;19297:18;19342:14;19318:21;:38;;;;:::i;:::-;19297:59;;19376:17;;;;;;;;;;;19367:36;;:48;19404:10;19367:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19193:232;;17930:5:::0;17911:16;;:24;;;;;;;;;;;;;;;;;;19124:301;:::o;18503:483::-;17884:4;17865:16;;:23;;;;;;;;;;;;;;;;;;18598:12:::1;18637:1;18614:20;:24;;;;:::i;:::-;18598:41;;18650:17;18694:4;18671:20;:27;;;;:::i;:::-;18650:49;;18712:22;18737:21;18712:46;;18771:23;18789:4;18771:17;:23::i;:::-;18807:18;18853:14;18829:21;:38;;;;:::i;:::-;18807:61;;18881:36;18895:9;18906:10;18881:13;:36::i;:::-;18935:43;18950:4;18956:10;18968:9;18935:43;;;;;;;;:::i;:::-;;;;;;;;18578:408;;;;17930:5:::0;17911:16;;:24;;;;;;;;;;;;;;;;;;18503:483;:::o;16299:776::-;16446:1;16430:18;;:4;:18;;;16422:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16523:1;16509:16;;:2;:16;;;16501:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16578:19;16600:9;:15;16610:4;16600:15;;;;;;;;;;;;;;;;16578:37;;16663:6;16648:11;:21;;16626:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;16803:6;16789:11;:20;16771:9;:15;16781:4;16771:15;;;;;;;;;;;;;;;:38;;;;17006:6;16989:9;:13;16999:2;16989:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;17056:2;17041:26;;17050:4;17041:26;;;17060:6;17041:26;;;;;;:::i;:::-;;;;;;;;16411:664;16299:776;;;:::o;19433:484::-;19500:21;19538:1;19524:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19500:40;;19569:4;19551;19556:1;19551:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19595:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19585:4;19590:1;19585:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;19630:62;19647:4;19662:15;19680:11;19630:8;:62::i;:::-;19705:15;:66;;;19786:11;19812:1;19828:4;19855;19894:3;19876:15;:21;;;;:::i;:::-;19705:204;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19489:428;19433:484;:::o;19925:360::-;20007:62;20024:4;20039:15;20057:11;20007:8;:62::i;:::-;20082:15;:31;;;20121:9;20154:4;20174:11;20200:1;20216;17487:6;20251:15;20082:195;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19925:360;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:246::-;954:1;964:113;978:6;975:1;972:13;964:113;;;1063:1;1058:3;1054:11;1048:18;1044:1;1039:3;1035:11;1028:39;1000:2;997:1;993:10;988:15;;964:113;;;1111:1;1102:6;1097:3;1093:16;1086:27;935:184;873:246;;;:::o;1125:102::-;1166:6;1217:2;1213:7;1208:2;1201:5;1197:14;1193:28;1183:38;;1125:102;;;:::o;1233:377::-;1321:3;1349:39;1382:5;1349:39;:::i;:::-;1404:71;1468:6;1463:3;1404:71;:::i;:::-;1397:78;;1484:65;1542:6;1537:3;1530:4;1523:5;1519:16;1484:65;:::i;:::-;1574:29;1596:6;1574:29;:::i;:::-;1569:3;1565:39;1558:46;;1325:285;1233:377;;;;:::o;1616:313::-;1729:4;1767:2;1756:9;1752:18;1744:26;;1816:9;1810:4;1806:20;1802:1;1791:9;1787:17;1780:47;1844:78;1917:4;1908:6;1844:78;:::i;:::-;1836:86;;1616:313;;;;:::o;2016:117::-;2125:1;2122;2115:12;2262:122;2335:24;2353:5;2335:24;:::i;:::-;2328:5;2325:35;2315:63;;2374:1;2371;2364:12;2315:63;2262:122;:::o;2390:139::-;2436:5;2474:6;2461:20;2452:29;;2490:33;2517:5;2490:33;:::i;:::-;2390:139;;;;:::o;2535:77::-;2572:7;2601:5;2590:16;;2535:77;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:118::-;4858:24;4876:5;4858:24;:::i;:::-;4853:3;4846:37;4771:118;;:::o;4895:222::-;4988:4;5026:2;5015:9;5011:18;5003:26;;5039:71;5107:1;5096:9;5092:17;5083:6;5039:71;:::i;:::-;4895:222;;;;:::o;5123:619::-;5200:6;5208;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5646:2;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5617:118;5123:619;;;;;:::o;5748:86::-;5783:7;5823:4;5816:5;5812:16;5801:27;;5748:86;;;:::o;5840:112::-;5923:22;5939:5;5923:22;:::i;:::-;5918:3;5911:35;5840:112;;:::o;5958:214::-;6047:4;6085:2;6074:9;6070:18;6062:26;;6098:67;6162:1;6151:9;6147:17;6138:6;6098:67;:::i;:::-;5958:214;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:474::-;6581:6;6589;6638:2;6626:9;6617:7;6613:23;6609:32;6606:119;;;6644:79;;:::i;:::-;6606:119;6764:1;6789:53;6834:7;6825:6;6814:9;6810:22;6789:53;:::i;:::-;6779:63;;6735:117;6891:2;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6862:118;6513:474;;;;;:::o;6993:116::-;7063:21;7078:5;7063:21;:::i;:::-;7056:5;7053:32;7043:60;;7099:1;7096;7089:12;7043:60;6993:116;:::o;7115:133::-;7158:5;7196:6;7183:20;7174:29;;7212:30;7236:5;7212:30;:::i;:::-;7115:133;;;;:::o;7254:468::-;7319:6;7327;7376:2;7364:9;7355:7;7351:23;7347:32;7344:119;;;7382:79;;:::i;:::-;7344:119;7502:1;7527:53;7572:7;7563:6;7552:9;7548:22;7527:53;:::i;:::-;7517:63;;7473:117;7629:2;7655:50;7697:7;7688:6;7677:9;7673:22;7655:50;:::i;:::-;7645:60;;7600:115;7254:468;;;;;:::o;7728:180::-;7776:77;7773:1;7766:88;7873:4;7870:1;7863:15;7897:4;7894:1;7887:15;7914:320;7958:6;7995:1;7989:4;7985:12;7975:22;;8042:1;8036:4;8032:12;8063:18;8053:81;;8119:4;8111:6;8107:17;8097:27;;8053:81;8181:2;8173:6;8170:14;8150:18;8147:38;8144:84;;8200:18;;:::i;:::-;8144:84;7965:269;7914:320;;;:::o;8240:180::-;8288:77;8285:1;8278:88;8385:4;8382:1;8375:15;8409:4;8406:1;8399:15;8426:191;8466:3;8485:20;8503:1;8485:20;:::i;:::-;8480:25;;8519:20;8537:1;8519:20;:::i;:::-;8514:25;;8562:1;8559;8555:9;8548:16;;8583:3;8580:1;8577:10;8574:36;;;8590:18;;:::i;:::-;8574:36;8426:191;;;;:::o;8623:182::-;8763:34;8759:1;8751:6;8747:14;8740:58;8623:182;:::o;8811:366::-;8953:3;8974:67;9038:2;9033:3;8974:67;:::i;:::-;8967:74;;9050:93;9139:3;9050:93;:::i;:::-;9168:2;9163:3;9159:12;9152:19;;8811:366;;;:::o;9183:419::-;9349:4;9387:2;9376:9;9372:18;9364:26;;9436:9;9430:4;9426:20;9422:1;9411:9;9407:17;9400:47;9464:131;9590:4;9464:131;:::i;:::-;9456:139;;9183:419;;;:::o;9608:224::-;9748:34;9744:1;9736:6;9732:14;9725:58;9817:7;9812:2;9804:6;9800:15;9793:32;9608:224;:::o;9838:366::-;9980:3;10001:67;10065:2;10060:3;10001:67;:::i;:::-;9994:74;;10077:93;10166:3;10077:93;:::i;:::-;10195:2;10190:3;10186:12;10179:19;;9838:366;;;:::o;10210:419::-;10376:4;10414:2;10403:9;10399:18;10391:26;;10463:9;10457:4;10453:20;10449:1;10438:9;10434:17;10427:47;10491:131;10617:4;10491:131;:::i;:::-;10483:139;;10210:419;;;:::o;10635:225::-;10775:34;10771:1;10763:6;10759:14;10752:58;10844:8;10839:2;10831:6;10827:15;10820:33;10635:225;:::o;10866:366::-;11008:3;11029:67;11093:2;11088:3;11029:67;:::i;:::-;11022:74;;11105:93;11194:3;11105:93;:::i;:::-;11223:2;11218:3;11214:12;11207:19;;10866:366;;;:::o;11238:419::-;11404:4;11442:2;11431:9;11427:18;11419:26;;11491:9;11485:4;11481:20;11477:1;11466:9;11462:17;11455:47;11519:131;11645:4;11519:131;:::i;:::-;11511:139;;11238:419;;;:::o;11663:223::-;11803:34;11799:1;11791:6;11787:14;11780:58;11872:6;11867:2;11859:6;11855:15;11848:31;11663:223;:::o;11892:366::-;12034:3;12055:67;12119:2;12114:3;12055:67;:::i;:::-;12048:74;;12131:93;12220:3;12131:93;:::i;:::-;12249:2;12244:3;12240:12;12233:19;;11892:366;;;:::o;12264:419::-;12430:4;12468:2;12457:9;12453:18;12445:26;;12517:9;12511:4;12507:20;12503:1;12492:9;12488:17;12481:47;12545:131;12671:4;12545:131;:::i;:::-;12537:139;;12264:419;;;:::o;12689:221::-;12829:34;12825:1;12817:6;12813:14;12806:58;12898:4;12893:2;12885:6;12881:15;12874:29;12689:221;:::o;12916:366::-;13058:3;13079:67;13143:2;13138:3;13079:67;:::i;:::-;13072:74;;13155:93;13244:3;13155:93;:::i;:::-;13273:2;13268:3;13264:12;13257:19;;12916:366;;;:::o;13288:419::-;13454:4;13492:2;13481:9;13477:18;13469:26;;13541:9;13535:4;13531:20;13527:1;13516:9;13512:17;13505:47;13569:131;13695:4;13569:131;:::i;:::-;13561:139;;13288:419;;;:::o;13713:179::-;13853:31;13849:1;13841:6;13837:14;13830:55;13713:179;:::o;13898:366::-;14040:3;14061:67;14125:2;14120:3;14061:67;:::i;:::-;14054:74;;14137:93;14226:3;14137:93;:::i;:::-;14255:2;14250:3;14246:12;14239:19;;13898:366;;;:::o;14270:419::-;14436:4;14474:2;14463:9;14459:18;14451:26;;14523:9;14517:4;14513:20;14509:1;14498:9;14494:17;14487:47;14551:131;14677:4;14551:131;:::i;:::-;14543:139;;14270:419;;;:::o;14695:224::-;14835:34;14831:1;14823:6;14819:14;14812:58;14904:7;14899:2;14891:6;14887:15;14880:32;14695:224;:::o;14925:366::-;15067:3;15088:67;15152:2;15147:3;15088:67;:::i;:::-;15081:74;;15164:93;15253:3;15164:93;:::i;:::-;15282:2;15277:3;15273:12;15266:19;;14925:366;;;:::o;15297:419::-;15463:4;15501:2;15490:9;15486:18;15478:26;;15550:9;15544:4;15540:20;15536:1;15525:9;15521:17;15514:47;15578:131;15704:4;15578:131;:::i;:::-;15570:139;;15297:419;;;:::o;15722:222::-;15862:34;15858:1;15850:6;15846:14;15839:58;15931:5;15926:2;15918:6;15914:15;15907:30;15722:222;:::o;15950:366::-;16092:3;16113:67;16177:2;16172:3;16113:67;:::i;:::-;16106:74;;16189:93;16278:3;16189:93;:::i;:::-;16307:2;16302:3;16298:12;16291:19;;15950:366;;;:::o;16322:419::-;16488:4;16526:2;16515:9;16511:18;16503:26;;16575:9;16569:4;16565:20;16561:1;16550:9;16546:17;16539:47;16603:131;16729:4;16603:131;:::i;:::-;16595:139;;16322:419;;;:::o;16747:225::-;16887:34;16883:1;16875:6;16871:14;16864:58;16956:8;16951:2;16943:6;16939:15;16932:33;16747:225;:::o;16978:366::-;17120:3;17141:67;17205:2;17200:3;17141:67;:::i;:::-;17134:74;;17217:93;17306:3;17217:93;:::i;:::-;17335:2;17330:3;17326:12;17319:19;;16978:366;;;:::o;17350:419::-;17516:4;17554:2;17543:9;17539:18;17531:26;;17603:9;17597:4;17593:20;17589:1;17578:9;17574:17;17567:47;17631:131;17757:4;17631:131;:::i;:::-;17623:139;;17350:419;;;:::o;17775:348::-;17815:7;17838:20;17856:1;17838:20;:::i;:::-;17833:25;;17872:20;17890:1;17872:20;:::i;:::-;17867:25;;18060:1;17992:66;17988:74;17985:1;17982:81;17977:1;17970:9;17963:17;17959:105;17956:131;;;18067:18;;:::i;:::-;17956:131;18115:1;18112;18108:9;18097:20;;17775:348;;;;:::o;18129:180::-;18177:77;18174:1;18167:88;18274:4;18271:1;18264:15;18298:4;18295:1;18288:15;18315:185;18355:1;18372:20;18390:1;18372:20;:::i;:::-;18367:25;;18406:20;18424:1;18406:20;:::i;:::-;18401:25;;18445:1;18435:35;;18450:18;;:::i;:::-;18435:35;18492:1;18489;18485:9;18480:14;;18315:185;;;;:::o;18506:194::-;18546:4;18566:20;18584:1;18566:20;:::i;:::-;18561:25;;18600:20;18618:1;18600:20;:::i;:::-;18595:25;;18644:1;18641;18637:9;18629:17;;18668:1;18662:4;18659:11;18656:37;;;18673:18;;:::i;:::-;18656:37;18506:194;;;;:::o;18706:442::-;18855:4;18893:2;18882:9;18878:18;18870:26;;18906:71;18974:1;18963:9;18959:17;18950:6;18906:71;:::i;:::-;18987:72;19055:2;19044:9;19040:18;19031:6;18987:72;:::i;:::-;19069;19137:2;19126:9;19122:18;19113:6;19069:72;:::i;:::-;18706:442;;;;;;:::o;19154:180::-;19202:77;19199:1;19192:88;19299:4;19296:1;19289:15;19323:4;19320:1;19313:15;19340:180;19388:77;19385:1;19378:88;19485:4;19482:1;19475:15;19509:4;19506:1;19499:15;19526:143;19583:5;19614:6;19608:13;19599:22;;19630:33;19657:5;19630:33;:::i;:::-;19526:143;;;;:::o;19675:351::-;19745:6;19794:2;19782:9;19773:7;19769:23;19765:32;19762:119;;;19800:79;;:::i;:::-;19762:119;19920:1;19945:64;20001:7;19992:6;19981:9;19977:22;19945:64;:::i;:::-;19935:74;;19891:128;19675:351;;;;:::o;20032:85::-;20077:7;20106:5;20095:16;;20032:85;;;:::o;20123:158::-;20181:9;20214:61;20232:42;20241:32;20267:5;20241:32;:::i;:::-;20232:42;:::i;:::-;20214:61;:::i;:::-;20201:74;;20123:158;;;:::o;20287:147::-;20382:45;20421:5;20382:45;:::i;:::-;20377:3;20370:58;20287:147;;:::o;20440:114::-;20507:6;20541:5;20535:12;20525:22;;20440:114;;;:::o;20560:184::-;20659:11;20693:6;20688:3;20681:19;20733:4;20728:3;20724:14;20709:29;;20560:184;;;;:::o;20750:132::-;20817:4;20840:3;20832:11;;20870:4;20865:3;20861:14;20853:22;;20750:132;;;:::o;20888:108::-;20965:24;20983:5;20965:24;:::i;:::-;20960:3;20953:37;20888:108;;:::o;21002:179::-;21071:10;21092:46;21134:3;21126:6;21092:46;:::i;:::-;21170:4;21165:3;21161:14;21147:28;;21002:179;;;;:::o;21187:113::-;21257:4;21289;21284:3;21280:14;21272:22;;21187:113;;;:::o;21336:732::-;21455:3;21484:54;21532:5;21484:54;:::i;:::-;21554:86;21633:6;21628:3;21554:86;:::i;:::-;21547:93;;21664:56;21714:5;21664:56;:::i;:::-;21743:7;21774:1;21759:284;21784:6;21781:1;21778:13;21759:284;;;21860:6;21854:13;21887:63;21946:3;21931:13;21887:63;:::i;:::-;21880:70;;21973:60;22026:6;21973:60;:::i;:::-;21963:70;;21819:224;21806:1;21803;21799:9;21794:14;;21759:284;;;21763:14;22059:3;22052:10;;21460:608;;;21336:732;;;;:::o;22074:831::-;22337:4;22375:3;22364:9;22360:19;22352:27;;22389:71;22457:1;22446:9;22442:17;22433:6;22389:71;:::i;:::-;22470:80;22546:2;22535:9;22531:18;22522:6;22470:80;:::i;:::-;22597:9;22591:4;22587:20;22582:2;22571:9;22567:18;22560:48;22625:108;22728:4;22719:6;22625:108;:::i;:::-;22617:116;;22743:72;22811:2;22800:9;22796:18;22787:6;22743:72;:::i;:::-;22825:73;22893:3;22882:9;22878:19;22869:6;22825:73;:::i;:::-;22074:831;;;;;;;;:::o;22911:807::-;23160:4;23198:3;23187:9;23183:19;23175:27;;23212:71;23280:1;23269:9;23265:17;23256:6;23212:71;:::i;:::-;23293:72;23361:2;23350:9;23346:18;23337:6;23293:72;:::i;:::-;23375:80;23451:2;23440:9;23436:18;23427:6;23375:80;:::i;:::-;23465;23541:2;23530:9;23526:18;23517:6;23465:80;:::i;:::-;23555:73;23623:3;23612:9;23608:19;23599:6;23555:73;:::i;:::-;23638;23706:3;23695:9;23691:19;23682:6;23638:73;:::i;:::-;22911:807;;;;;;;;;:::o;23724:143::-;23781:5;23812:6;23806:13;23797:22;;23828:33;23855:5;23828:33;:::i;:::-;23724:143;;;;:::o;23873:663::-;23961:6;23969;23977;24026:2;24014:9;24005:7;24001:23;23997:32;23994:119;;;24032:79;;:::i;:::-;23994:119;24152:1;24177:64;24233:7;24224:6;24213:9;24209:22;24177:64;:::i;:::-;24167:74;;24123:128;24290:2;24316:64;24372:7;24363:6;24352:9;24348:22;24316:64;:::i;:::-;24306:74;;24261:129;24429:2;24455:64;24511:7;24502:6;24491:9;24487:22;24455:64;:::i;:::-;24445:74;;24400:129;23873:663;;;;;:::o
Swarm Source
ipfs://413c663a19c885edc7aa76a18381284b5253614cc6b6f620bcc44a553e9aac49
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.