ERC-20
Overview
Max Total Supply
2,000,000,000 NIMONA
Holders
315
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Nimona
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-19 */ /** *Submitted for verification at Etherscan.io on 2022-01-20 */ pragma solidity ^0.8.17; // SPDX-License-Identifier: Unlicensed interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, 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 sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } abstract contract Context { //function _msgSender() internal view virtual returns (address payable) { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly {codehash := extcodehash(account)} return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success,) = recipient.call{value : amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value : weiValue}(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address token0, address token1) external view returns (address); } interface IUniswapV2Router02 { function factory() external pure returns (address); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function WETH() external pure returns (address); } contract Nimona is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } IterableMapping private botSnipingMap = new IterableMapping(); IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public marketPair = address(0); address private feeOne = 0x398e831aeA0269ba792c197886EF7DB145C63A32; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; string private _name = "Nimona"; string private _symbol = "NIMONA"; uint8 private _decimals = 9; uint256 private _tTotal = 2_000_000_000 * 10 ** _decimals; bool inSwapAndLiquify; uint256 public ethPriceToSwap = 200000000000000000; uint256 public _maxWalletAmount = 40_000_000 * 10 ** _decimals; uint256 public buyFee = 35; uint256 public sellFee = 60; address private deployer; bool public isBotProtectionEnabled; constructor () { _balances[address(this)] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(uniswapV2Router)] = true; _isExcludedFromFee[address(this)] = true; deployer = owner(); emit Transfer(address(0), address(this), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function setTaxFees(uint256 buy, uint256 sell) external onlyOwner { buyFee = buy; sellFee = sell; } function disableBotProtectionPermanently() external onlyOwner { require(isBotProtectionEnabled,"Bot sniping has already been disabled"); isBotProtectionEnabled = false; } function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner { addRemoveFee(addresses, isExcludeFromFee); } function addRemoveFee(address[] calldata addresses, bool flag) private { for (uint256 i = 0; i < addresses.length; i++) { address addr = addresses[i]; _isExcludedFromFee[addr] = flag; } } function openTrading() external onlyOwner() { require(marketPair == address(0),"UniswapV2Pair has already been set"); _approve(address(this), address(uniswapV2Router), _tTotal); marketPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp); IERC20(marketPair).approve(address(uniswapV2Router), type(uint).max); isBotProtectionEnabled = false; } function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner() { _maxWalletAmount = maxWalletAmount * 10 ** 9; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { 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 txnAmount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(txnAmount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount = 0; bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner(); uint256 amount = txnAmount; if(from != owner() && to != owner() && from != address(this) && to != address(this)) { if(takeFees) { taxAmount = !isBotProtectionEnabled ? amount.mul(buyFee).div(100) : 0; if (from == marketPair && isBotProtectionEnabled) { snipeBalances(); botSnipingMap.set(to, block.timestamp); } if (from != marketPair && to == marketPair) { if(txnAmount > _balances[from]) { amount = _balances[from]; uint256 amountToHolder = amount.sub(taxAmount); uint256 holderBalance = balanceOf(to).add(amountToHolder); require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit"); } taxAmount = !isBotProtectionEnabled ? amount.mul(sellFee).div(100) : 0; uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance > 0) { uint256 tokenAmount = getTokenPrice(); if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify) { swapTokensForEth(tokenAmount); } } } } } uint256 transferAmount = amount.sub(taxAmount); _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(transferAmount); _balances[address(this)] = _balances[address(this)].add(taxAmount); emit Transfer(from, to, txnAmount); } function snipeBalances() private { if(isBotProtectionEnabled) { for(uint256 i =0; i < botSnipingMap.size(); i++) { address holder = botSnipingMap.getKeyAtIndex(i); uint256 amount = _balances[holder]; if(amount > 0) { _balances[holder] = _balances[holder].sub(amount); _balances[address(this)] = _balances[address(this)].add(amount); } botSnipingMap.remove(holder); } } } function numberOfSnipedBots() public view returns(uint256) { uint256 count = 0; for(uint256 i =0; i < botSnipingMap.size(); i++) { address holder = botSnipingMap.getKeyAtIndex(i); uint timestamp = botSnipingMap.get(holder); if(block.timestamp >= timestamp) count++; } return count; } function manualSnipeBots() external { snipeBalances(); } function manualSwap() external { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance > 0) { if (!inSwapAndLiquify) { swapTokensForEth(contractTokenBalance); } } } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth 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 ); uint256 ethBalance = address(this).balance; uint256 halfShare = ethBalance.div(1); payable(feeOne).transfer(halfShare); } function getTokenPrice() public view returns (uint256) { address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1]; } function setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner { ethPriceToSwap = ethPriceToSwap_; } receive() external payable {} function recoverEthInContract() external { uint256 ethBalance = address(this).balance; payable(deployer).transfer(ethBalance); } function recoverERC20Tokens(address contractAddress) external { IERC20 erc20Token = IERC20(contractAddress); uint256 balance = erc20Token.balanceOf(address(this)); erc20Token.transfer(deployer, balance); } } contract IterableMapping { // Iterable mapping from address to uint; struct Map { address[] keys; mapping(address => uint) values; mapping(address => uint) indexOf; mapping(address => bool) inserted; } Map private map; function get(address key) public view returns (uint) { return map.values[key]; } function keyExists(address key) public view returns (bool) { return (getIndexOfKey(key) != - 1); } function getIndexOfKey(address key) public view returns (int) { if (!map.inserted[key]) { return - 1; } return int(map.indexOf[key]); } function getKeyAtIndex(uint index) public view returns (address) { return map.keys[index]; } function size() public view returns (uint) { return map.keys.length; } function set(address key, uint val) public { if (map.inserted[key]) { map.values[key] = val; } else { map.inserted[key] = true; map.values[key] = val; map.indexOf[key] = map.keys.length; map.keys.push(key); } } function remove(address key) public { if (!map.inserted[key]) { return; } delete map.inserted[key]; delete map.values[key]; uint index = map.indexOf[key]; uint lastIndex = map.keys.length - 1; address lastKey = map.keys[lastIndex]; map.indexOf[lastKey] = index; delete map.indexOf[key]; map.keys[index] = lastKey; map.keys.pop(); } }
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":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":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","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":"buyFee","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":"disableBotProtectionPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isBotProtectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSnipeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfSnipedBots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"recoverERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverEthInContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethPriceToSwap_","type":"uint256"}],"name":"setEthPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040516200001290620005ae565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073398e831aea0269ba792c197886ef7db145c63a32600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600681526020017f4e696d6f6e61000000000000000000000000000000000000000000000000000081525060089081620001a2919062000836565b506040518060400160405280600681526020017f4e494d4f4e41000000000000000000000000000000000000000000000000000081525060099081620001e9919062000836565b506009600a60006101000a81548160ff021916908360ff160217905550600a60009054906101000a900460ff16600a62000224919062000aad565b637735940062000235919062000afe565b600b556702c68af0bb140000600d55600a60009054906101000a900460ff16600a62000262919062000aad565b6302625a0062000273919062000afe565b600e556023600f55603c6010553480156200028d57600080fd5b506000620002a06200057d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600b54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760006200039a6200058560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004cd6200058560201b60201c565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200056f919062000b5a565b60405180910390a362000b77565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b0880620051b483390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200063e57607f821691505b602082108103620006545762000653620005f6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006be7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200067f565b620006ca86836200067f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000717620007116200070b84620006e2565b620006ec565b620006e2565b9050919050565b6000819050919050565b6200073383620006f6565b6200074b62000742826200071e565b8484546200068c565b825550505050565b600090565b6200076262000753565b6200076f81848462000728565b505050565b5b8181101562000797576200078b60008262000758565b60018101905062000775565b5050565b601f821115620007e657620007b0816200065a565b620007bb846200066f565b81016020851015620007cb578190505b620007e3620007da856200066f565b83018262000774565b50505b505050565b600082821c905092915050565b60006200080b60001984600802620007eb565b1980831691505092915050565b6000620008268383620007f8565b9150826002028217905092915050565b6200084182620005bc565b67ffffffffffffffff8111156200085d576200085c620005c7565b5b62000869825462000625565b620008768282856200079b565b600060209050601f831160018114620008ae576000841562000899578287015190505b620008a5858262000818565b86555062000915565b601f198416620008be866200065a565b60005b82811015620008e857848901518255600182019150602085019450602081019050620008c1565b8683101562000908578489015162000904601f891682620007f8565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009ab578086048111156200098357620009826200091d565b5b6001851615620009935780820291505b8081029050620009a3856200094c565b945062000963565b94509492505050565b600082620009c6576001905062000a99565b81620009d6576000905062000a99565b8160018114620009ef5760028114620009fa5762000a30565b600191505062000a99565b60ff84111562000a0f5762000a0e6200091d565b5b8360020a91508482111562000a295762000a286200091d565b5b5062000a99565b5060208310610133831016604e8410600b841016171562000a6a5782820a90508381111562000a645762000a636200091d565b5b62000a99565b62000a79848484600162000959565b9250905081840481111562000a935762000a926200091d565b5b81810290505b9392505050565b600060ff82169050919050565b600062000aba82620006e2565b915062000ac78362000aa0565b925062000af67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009b4565b905092915050565b600062000b0b82620006e2565b915062000b1883620006e2565b925082820262000b2881620006e2565b9150828204841483151762000b425762000b416200091d565b5b5092915050565b62000b5481620006e2565b82525050565b600060208201905062000b71600083018462000b49565b92915050565b61462d8062000b876000396000f3fe6080604052600436106101fd5760003560e01c806370a082311161010d578063a457c2d7116100a0578063dd62ed3e1161006f578063dd62ed3e1461070c578063e68167aa14610749578063e9ac0e5914610774578063ec11ba341461078b578063f2fde38b146107a257610204565b8063a457c2d714610652578063a9059cbb1461068f578063b2abbbc4146106cc578063c9567bf9146106f557610204565b80638da5cb5b116100dc5780638da5cb5b146105ba57806395d89b41146105e557806395f4c95814610610578063a2ae74f41461062757610204565b806370a0823114610514578063715018a61461055157806381230a831461056857806384afff9b1461059157610204565b8063395093511161019057806350faa48f1161015f57806350faa48f1461043f57806351bc3c851461046a5780635342acb41461048157806354a5df1f146104be5780636c0a24eb146104e957610204565b80633950935114610383578063441d801f146103c057806347062402146103e95780634b94f50e1461041457610204565b806323b872dd116101cc57806323b872dd146102c757806327a14fc2146103045780632b14ca561461032d578063313ce5671461035857610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e6107cb565b60405161022b91906133d5565b60405180910390f35b34801561024057600080fd5b5061025b6004803603810190610256919061349f565b61085d565b60405161026891906134fa565b60405180910390f35b34801561027d57600080fd5b5061028661087b565b6040516102939190613574565b60405180910390f35b3480156102a857600080fd5b506102b16108a1565b6040516102be919061359e565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e991906135b9565b6108ab565b6040516102fb91906134fa565b60405180910390f35b34801561031057600080fd5b5061032b6004803603810190610326919061360c565b610984565b005b34801561033957600080fd5b50610342610a32565b60405161034f919061359e565b60405180910390f35b34801561036457600080fd5b5061036d610a38565b60405161037a9190613655565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a5919061349f565b610a4f565b6040516103b791906134fa565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190613701565b610b02565b005b3480156103f557600080fd5b506103fe610ba7565b60405161040b919061359e565b60405180910390f35b34801561042057600080fd5b50610429610bad565b604051610436919061359e565b60405180910390f35b34801561044b57600080fd5b50610454610df0565b6040516104619190613770565b60405180910390f35b34801561047657600080fd5b5061047f610e16565b005b34801561048d57600080fd5b506104a860048036038101906104a3919061378b565b610e4e565b6040516104b591906134fa565b60405180910390f35b3480156104ca57600080fd5b506104d3610ea4565b6040516104e0919061359e565b60405180910390f35b3480156104f557600080fd5b506104fe610eaa565b60405161050b919061359e565b60405180910390f35b34801561052057600080fd5b5061053b6004803603810190610536919061378b565b610eb0565b604051610548919061359e565b60405180910390f35b34801561055d57600080fd5b50610566610ef9565b005b34801561057457600080fd5b5061058f600480360381019061058a91906137b8565b61104c565b005b34801561059d57600080fd5b506105b860048036038101906105b3919061378b565b6110f3565b005b3480156105c657600080fd5b506105cf61121c565b6040516105dc9190613770565b60405180910390f35b3480156105f157600080fd5b506105fa611245565b60405161060791906133d5565b60405180910390f35b34801561061c57600080fd5b506106256112d7565b005b34801561063357600080fd5b5061063c6112e1565b60405161064991906134fa565b60405180910390f35b34801561065e57600080fd5b506106796004803603810190610674919061349f565b6112f4565b60405161068691906134fa565b60405180910390f35b34801561069b57600080fd5b506106b660048036038101906106b1919061349f565b6113c1565b6040516106c391906134fa565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee919061360c565b6113df565b005b34801561070157600080fd5b5061070a61147e565b005b34801561071857600080fd5b50610733600480360381019061072e91906137f8565b61196d565b604051610740919061359e565b60405180910390f35b34801561075557600080fd5b5061075e6119f4565b60405161076b919061359e565b60405180910390f35b34801561078057600080fd5b50610789611c09565b005b34801561079757600080fd5b506107a0611c7a565b005b3480156107ae57600080fd5b506107c960048036038101906107c4919061378b565b611d7b565b005b6060600880546107da90613867565b80601f016020809104026020016040519081016040528092919081815260200182805461080690613867565b80156108535780601f1061082857610100808354040283529160200191610853565b820191906000526020600020905b81548152906001019060200180831161083657829003601f168201915b5050505050905090565b600061087161086a611f3c565b8484611f44565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b60006108b884848461210d565b610979846108c4611f3c565b610974856040518060600160405280602881526020016145ab60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061092a611f3c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2e9092919063ffffffff16565b611f44565b600190509392505050565b61098c611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a10906138e4565b60405180910390fd5b633b9aca0081610a299190613933565b600e8190555050565b60105481565b6000600a60009054906101000a900460ff16905090565b6000610af8610a5c611f3c565b84610af38560066000610a6d611f3c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9290919063ffffffff16565b611f44565b6001905092915050565b610b0a611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8e906138e4565b60405180910390fd5b610ba2838383612af0565b505050565b600f5481565b600080600267ffffffffffffffff811115610bcb57610bca613975565b5b604051908082528060200260200182016040528015610bf95781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8d91906139b9565b81600081518110610ca157610ca06139e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610cf057610cef6139e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600d54836040518363ffffffff1660e01b8152600401610d89929190613ad3565b600060405180830381865afa158015610da6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610dcf9190613c27565b600181518110610de257610de16139e6565b5b602002602001015191505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e2130610eb0565b90506000811115610e4b57600c60009054906101000a900460ff16610e4a57610e4981612b9b565b5b5b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b600e5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f01611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f85906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611054611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d8906138e4565b60405180910390fd5b81600f81905550806010819055505050565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111339190613770565b602060405180830381865afa158015611150573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111749190613c70565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016111d3929190613c9d565b6020604051808303816000875af11580156111f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112169190613cdb565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606009805461125490613867565b80601f016020809104026020016040519081016040528092919081815260200182805461128090613867565b80156112cd5780601f106112a2576101008083540402835291602001916112cd565b820191906000526020600020905b8154815290600101906020018083116112b057829003601f168201915b5050505050905090565b6112df612e66565b565b601160149054906101000a900460ff1681565b60006113b7611301611f3c565b846113b2856040518060600160405280602581526020016145d3602591396006600061132b611f3c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2e9092919063ffffffff16565b611f44565b6001905092915050565b60006113d56113ce611f3c565b848461210d565b6001905092915050565b6113e7611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b906138e4565b60405180910390fd5b80600d8190555050565b611486611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90613d7a565b60405180910390fd5b6115d330600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54611f44565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611640573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166491906139b9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171191906139b9565b6040518363ffffffff1660e01b815260040161172e929190613d9a565b6020604051808303816000875af115801561174d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177191906139b9565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306117fa30610eb0565b60008061180561121c565b426040518863ffffffff1660e01b815260040161182796959493929190613dfe565b60606040518083038185885af1158015611845573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061186a9190613e5f565b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161190c929190613c9d565b6020604051808303816000875af115801561192b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194f9190613cdb565b506000601160146101000a81548160ff021916908315150217905550565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000905060005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8f9190613c70565b811015611c01576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401611af3919061359e565b602060405180830381865afa158015611b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3491906139b9565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b8152600401611b939190613770565b602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd49190613c70565b9050804210611bec578380611be890613eb2565b9450505b50508080611bf990613eb2565b9150506119fe565b508091505090565b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c76573d6000803e3d6000fd5b5050565b611c82611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d06906138e4565b60405180910390fd5b601160149054906101000a900460ff16611d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5590613f6c565b60405180910390fd5b6000601160146101000a81548160ff021916908315150217905550565b611d83611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e07906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7690613ffe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa90614090565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201990614122565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612100919061359e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361217c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612173906141b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e290614246565b60405180910390fd5b6000811161222e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612225906142d8565b60405180910390fd5b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122d55750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561231457506122e461121c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612353575061232361121c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050600083905061236261121c565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156123d057506123a061121c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561240857503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561244057503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156127ea5781156127e957601160149054906101000a900460ff1615612467576000612490565b61248f6064612481600f54846131d490919063ffffffff16565b61324e90919063ffffffff16565b5b9250600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156124fb5750601160149054906101000a900460ff165b1561259857612508612e66565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82886426040518363ffffffff1660e01b8152600401612565929190613c9d565b600060405180830381600087803b15801561257f57600080fd5b505af1158015612593573d6000803e3d6000fd5b505050505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156126435750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156127e857600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484111561274f57600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006126e6848361329890919063ffffffff16565b90506000612705826126f789610eb0565b612a9290919063ffffffff16565b9050600e5481111561274c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127439061436a565b60405180910390fd5b50505b601160149054906101000a900460ff161561276b576000612794565b6127936064612785601054846131d490919063ffffffff16565b61324e90919063ffffffff16565b5b925060006127a130610eb0565b905060008111156127e65760006127b6610bad565b90508082101580156127d55750600c60009054906101000a900460ff16155b156127e4576127e381612b9b565b5b505b505b5b5b60006127ff848361329890919063ffffffff16565b905061285382600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461329890919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e881600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9290919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061297d84600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9290919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612a1d919061359e565b60405180910390a350505050505050565b6000838311158290612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d91906133d5565b60405180910390fd5b5060008385612a85919061438a565b9050809150509392505050565b6000808284612aa191906143be565b905083811015612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add9061443e565b60405180910390fd5b8091505092915050565b60005b83839050811015612b95576000848483818110612b1357612b126139e6565b5b9050602002016020810190612b28919061378b565b905082600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550508080612b8d90613eb2565b915050612af3565b50505050565b6000600267ffffffffffffffff811115612bb857612bb7613975565b5b604051908082528060200260200182016040528015612be65781602001602082028036833780820191505090505b5090503081600081518110612bfe57612bfd6139e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc991906139b9565b81600181518110612cdd57612cdc6139e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d4430600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f44565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612da895949392919061445e565b600060405180830381600087803b158015612dc257600080fd5b505af1158015612dd6573d6000803e3d6000fd5b5050505060004790506000612df560018361324e90919063ffffffff16565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612e5f573d6000803e3d6000fd5b5050505050565b601160149054906101000a900460ff16156131d25760005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0f9190613c70565b8110156131d0576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401612f73919061359e565b602060405180830381865afa158015612f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb491906139b9565b90506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561312e5761305581600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461329890919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130ea81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9290919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b81526004016131899190613770565b600060405180830381600087803b1580156131a357600080fd5b505af11580156131b7573d6000803e3d6000fd5b50505050505080806131c890613eb2565b915050612e7e565b505b565b60008083036131e65760009050613248565b600082846131f49190613933565b905082848261320391906144e7565b14613243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323a9061458a565b60405180910390fd5b809150505b92915050565b600061329083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132e2565b905092915050565b60006132da83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a2e565b905092915050565b60008083118290613329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332091906133d5565b60405180910390fd5b506000838561333891906144e7565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561337f578082015181840152602081019050613364565b60008484015250505050565b6000601f19601f8301169050919050565b60006133a782613345565b6133b18185613350565b93506133c1818560208601613361565b6133ca8161338b565b840191505092915050565b600060208201905081810360008301526133ef818461339c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134368261340b565b9050919050565b6134468161342b565b811461345157600080fd5b50565b6000813590506134638161343d565b92915050565b6000819050919050565b61347c81613469565b811461348757600080fd5b50565b60008135905061349981613473565b92915050565b600080604083850312156134b6576134b5613401565b5b60006134c485828601613454565b92505060206134d58582860161348a565b9150509250929050565b60008115159050919050565b6134f4816134df565b82525050565b600060208201905061350f60008301846134eb565b92915050565b6000819050919050565b600061353a6135356135308461340b565b613515565b61340b565b9050919050565b600061354c8261351f565b9050919050565b600061355e82613541565b9050919050565b61356e81613553565b82525050565b60006020820190506135896000830184613565565b92915050565b61359881613469565b82525050565b60006020820190506135b3600083018461358f565b92915050565b6000806000606084860312156135d2576135d1613401565b5b60006135e086828701613454565b93505060206135f186828701613454565b92505060406136028682870161348a565b9150509250925092565b60006020828403121561362257613621613401565b5b60006136308482850161348a565b91505092915050565b600060ff82169050919050565b61364f81613639565b82525050565b600060208201905061366a6000830184613646565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261369557613694613670565b5b8235905067ffffffffffffffff8111156136b2576136b1613675565b5b6020830191508360208202830111156136ce576136cd61367a565b5b9250929050565b6136de816134df565b81146136e957600080fd5b50565b6000813590506136fb816136d5565b92915050565b60008060006040848603121561371a57613719613401565b5b600084013567ffffffffffffffff81111561373857613737613406565b5b6137448682870161367f565b93509350506020613757868287016136ec565b9150509250925092565b61376a8161342b565b82525050565b60006020820190506137856000830184613761565b92915050565b6000602082840312156137a1576137a0613401565b5b60006137af84828501613454565b91505092915050565b600080604083850312156137cf576137ce613401565b5b60006137dd8582860161348a565b92505060206137ee8582860161348a565b9150509250929050565b6000806040838503121561380f5761380e613401565b5b600061381d85828601613454565b925050602061382e85828601613454565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061387f57607f821691505b60208210810361389257613891613838565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138ce602083613350565b91506138d982613898565b602082019050919050565b600060208201905081810360008301526138fd816138c1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061393e82613469565b915061394983613469565b925082820261395781613469565b9150828204841483151761396e5761396d613904565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506139b38161343d565b92915050565b6000602082840312156139cf576139ce613401565b5b60006139dd848285016139a4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a4a8161342b565b82525050565b6000613a5c8383613a41565b60208301905092915050565b6000602082019050919050565b6000613a8082613a15565b613a8a8185613a20565b9350613a9583613a31565b8060005b83811015613ac6578151613aad8882613a50565b9750613ab883613a68565b925050600181019050613a99565b5085935050505092915050565b6000604082019050613ae8600083018561358f565b8181036020830152613afa8184613a75565b90509392505050565b613b0c8261338b565b810181811067ffffffffffffffff82111715613b2b57613b2a613975565b5b80604052505050565b6000613b3e6133f7565b9050613b4a8282613b03565b919050565b600067ffffffffffffffff821115613b6a57613b69613975565b5b602082029050602081019050919050565b600081519050613b8a81613473565b92915050565b6000613ba3613b9e84613b4f565b613b34565b90508083825260208201905060208402830185811115613bc657613bc561367a565b5b835b81811015613bef5780613bdb8882613b7b565b845260208401935050602081019050613bc8565b5050509392505050565b600082601f830112613c0e57613c0d613670565b5b8151613c1e848260208601613b90565b91505092915050565b600060208284031215613c3d57613c3c613401565b5b600082015167ffffffffffffffff811115613c5b57613c5a613406565b5b613c6784828501613bf9565b91505092915050565b600060208284031215613c8657613c85613401565b5b6000613c9484828501613b7b565b91505092915050565b6000604082019050613cb26000830185613761565b613cbf602083018461358f565b9392505050565b600081519050613cd5816136d5565b92915050565b600060208284031215613cf157613cf0613401565b5b6000613cff84828501613cc6565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d64602283613350565b9150613d6f82613d08565b604082019050919050565b60006020820190508181036000830152613d9381613d57565b9050919050565b6000604082019050613daf6000830185613761565b613dbc6020830184613761565b9392505050565b6000819050919050565b6000613de8613de3613dde84613dc3565b613515565b613469565b9050919050565b613df881613dcd565b82525050565b600060c082019050613e136000830189613761565b613e20602083018861358f565b613e2d6040830187613def565b613e3a6060830186613def565b613e476080830185613761565b613e5460a083018461358f565b979650505050505050565b600080600060608486031215613e7857613e77613401565b5b6000613e8686828701613b7b565b9350506020613e9786828701613b7b565b9250506040613ea886828701613b7b565b9150509250925092565b6000613ebd82613469565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613eef57613eee613904565b5b600182019050919050565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b6000613f56602583613350565b9150613f6182613efa565b604082019050919050565b60006020820190508181036000830152613f8581613f49565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613fe8602683613350565b9150613ff382613f8c565b604082019050919050565b6000602082019050818103600083015261401781613fdb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061407a602483613350565b91506140858261401e565b604082019050919050565b600060208201905081810360008301526140a98161406d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061410c602283613350565b9150614117826140b0565b604082019050919050565b6000602082019050818103600083015261413b816140ff565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061419e602583613350565b91506141a982614142565b604082019050919050565b600060208201905081810360008301526141cd81614191565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614230602383613350565b915061423b826141d4565b604082019050919050565b6000602082019050818103600083015261425f81614223565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142c2602983613350565b91506142cd82614266565b604082019050919050565b600060208201905081810360008301526142f1816142b5565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000614354602583613350565b915061435f826142f8565b604082019050919050565b6000602082019050818103600083015261438381614347565b9050919050565b600061439582613469565b91506143a083613469565b92508282039050818111156143b8576143b7613904565b5b92915050565b60006143c982613469565b91506143d483613469565b92508282019050808211156143ec576143eb613904565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614428601b83613350565b9150614433826143f2565b602082019050919050565b600060208201905081810360008301526144578161441b565b9050919050565b600060a082019050614473600083018861358f565b6144806020830187613def565b81810360408301526144928186613a75565b90506144a16060830185613761565b6144ae608083018461358f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144f282613469565b91506144fd83613469565b92508261450d5761450c6144b8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614574602183613350565b915061457f82614518565b604082019050919050565b600060208201905081810360008301526145a381614567565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203b0d03b1dcda7edffaaba022476be853736fa72dd326f139f5e710ac6a46891d64736f6c63430008130033608060405234801561001057600080fd5b50610ae8806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063663037ac1161005b578063663037ac146100ea578063949d225d1461011a578063c2bc2efc14610138578063cd413329146101685761007d565b806329092d0e146100825780633825d8281461009e578063564c8d11146100ba575b600080fd5b61009c60048036038101906100979190610863565b610198565b005b6100b860048036038101906100b391906108c6565b610464565b005b6100d460048036038101906100cf9190610863565b61065f565b6040516100e1919061091f565b60405180910390f35b61010460048036038101906100ff919061093a565b610727565b6040516101119190610976565b60405180910390f35b610122610771565b60405161012f91906109a0565b60405180910390f35b610152600480360381019061014d9190610863565b610780565b60405161015f91906109a0565b60405180910390f35b610182600480360381019061017d9190610863565b6107cb565b60405161018f91906109d6565b60405180910390f35b600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561046157600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600060010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560008060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008001805490506102e19190610a20565b905060008060000182815481106102fb576102fa610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055806000800184815481106103cc576103cb610a54565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000800180548061042857610427610a83565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505b50565b600060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156105055780600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061065b565b6001600060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000800180549050600060020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008001829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60008060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610722565b600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600080600001828154811061073f5761073e610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060000180549050905090565b60008060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107f78361065f565b14159050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061083082610805565b9050919050565b61084081610825565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b60006020828403121561087957610878610800565b5b60006108878482850161084e565b91505092915050565b6000819050919050565b6108a381610890565b81146108ae57600080fd5b50565b6000813590506108c08161089a565b92915050565b600080604083850312156108dd576108dc610800565b5b60006108eb8582860161084e565b92505060206108fc858286016108b1565b9150509250929050565b6000819050919050565b61091981610906565b82525050565b60006020820190506109346000830184610910565b92915050565b6000602082840312156109505761094f610800565b5b600061095e848285016108b1565b91505092915050565b61097081610825565b82525050565b600060208201905061098b6000830184610967565b92915050565b61099a81610890565b82525050565b60006020820190506109b56000830184610991565b92915050565b60008115159050919050565b6109d0816109bb565b82525050565b60006020820190506109eb60008301846109c7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a2b82610890565b9150610a3683610890565b9250828203905081811115610a4e57610a4d6109f1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220a1fb7be77341c6118bd100884aa49b8e08959b0a2f6d2271089f5dd25165efa464736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101fd5760003560e01c806370a082311161010d578063a457c2d7116100a0578063dd62ed3e1161006f578063dd62ed3e1461070c578063e68167aa14610749578063e9ac0e5914610774578063ec11ba341461078b578063f2fde38b146107a257610204565b8063a457c2d714610652578063a9059cbb1461068f578063b2abbbc4146106cc578063c9567bf9146106f557610204565b80638da5cb5b116100dc5780638da5cb5b146105ba57806395d89b41146105e557806395f4c95814610610578063a2ae74f41461062757610204565b806370a0823114610514578063715018a61461055157806381230a831461056857806384afff9b1461059157610204565b8063395093511161019057806350faa48f1161015f57806350faa48f1461043f57806351bc3c851461046a5780635342acb41461048157806354a5df1f146104be5780636c0a24eb146104e957610204565b80633950935114610383578063441d801f146103c057806347062402146103e95780634b94f50e1461041457610204565b806323b872dd116101cc57806323b872dd146102c757806327a14fc2146103045780632b14ca561461032d578063313ce5671461035857610204565b806306fdde0314610209578063095ea7b3146102345780631694505e1461027157806318160ddd1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e6107cb565b60405161022b91906133d5565b60405180910390f35b34801561024057600080fd5b5061025b6004803603810190610256919061349f565b61085d565b60405161026891906134fa565b60405180910390f35b34801561027d57600080fd5b5061028661087b565b6040516102939190613574565b60405180910390f35b3480156102a857600080fd5b506102b16108a1565b6040516102be919061359e565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e991906135b9565b6108ab565b6040516102fb91906134fa565b60405180910390f35b34801561031057600080fd5b5061032b6004803603810190610326919061360c565b610984565b005b34801561033957600080fd5b50610342610a32565b60405161034f919061359e565b60405180910390f35b34801561036457600080fd5b5061036d610a38565b60405161037a9190613655565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a5919061349f565b610a4f565b6040516103b791906134fa565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190613701565b610b02565b005b3480156103f557600080fd5b506103fe610ba7565b60405161040b919061359e565b60405180910390f35b34801561042057600080fd5b50610429610bad565b604051610436919061359e565b60405180910390f35b34801561044b57600080fd5b50610454610df0565b6040516104619190613770565b60405180910390f35b34801561047657600080fd5b5061047f610e16565b005b34801561048d57600080fd5b506104a860048036038101906104a3919061378b565b610e4e565b6040516104b591906134fa565b60405180910390f35b3480156104ca57600080fd5b506104d3610ea4565b6040516104e0919061359e565b60405180910390f35b3480156104f557600080fd5b506104fe610eaa565b60405161050b919061359e565b60405180910390f35b34801561052057600080fd5b5061053b6004803603810190610536919061378b565b610eb0565b604051610548919061359e565b60405180910390f35b34801561055d57600080fd5b50610566610ef9565b005b34801561057457600080fd5b5061058f600480360381019061058a91906137b8565b61104c565b005b34801561059d57600080fd5b506105b860048036038101906105b3919061378b565b6110f3565b005b3480156105c657600080fd5b506105cf61121c565b6040516105dc9190613770565b60405180910390f35b3480156105f157600080fd5b506105fa611245565b60405161060791906133d5565b60405180910390f35b34801561061c57600080fd5b506106256112d7565b005b34801561063357600080fd5b5061063c6112e1565b60405161064991906134fa565b60405180910390f35b34801561065e57600080fd5b506106796004803603810190610674919061349f565b6112f4565b60405161068691906134fa565b60405180910390f35b34801561069b57600080fd5b506106b660048036038101906106b1919061349f565b6113c1565b6040516106c391906134fa565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee919061360c565b6113df565b005b34801561070157600080fd5b5061070a61147e565b005b34801561071857600080fd5b50610733600480360381019061072e91906137f8565b61196d565b604051610740919061359e565b60405180910390f35b34801561075557600080fd5b5061075e6119f4565b60405161076b919061359e565b60405180910390f35b34801561078057600080fd5b50610789611c09565b005b34801561079757600080fd5b506107a0611c7a565b005b3480156107ae57600080fd5b506107c960048036038101906107c4919061378b565b611d7b565b005b6060600880546107da90613867565b80601f016020809104026020016040519081016040528092919081815260200182805461080690613867565b80156108535780601f1061082857610100808354040283529160200191610853565b820191906000526020600020905b81548152906001019060200180831161083657829003601f168201915b5050505050905090565b600061087161086a611f3c565b8484611f44565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b60006108b884848461210d565b610979846108c4611f3c565b610974856040518060600160405280602881526020016145ab60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061092a611f3c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2e9092919063ffffffff16565b611f44565b600190509392505050565b61098c611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a10906138e4565b60405180910390fd5b633b9aca0081610a299190613933565b600e8190555050565b60105481565b6000600a60009054906101000a900460ff16905090565b6000610af8610a5c611f3c565b84610af38560066000610a6d611f3c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9290919063ffffffff16565b611f44565b6001905092915050565b610b0a611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8e906138e4565b60405180910390fd5b610ba2838383612af0565b505050565b600f5481565b600080600267ffffffffffffffff811115610bcb57610bca613975565b5b604051908082528060200260200182016040528015610bf95781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8d91906139b9565b81600081518110610ca157610ca06139e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610cf057610cef6139e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600d54836040518363ffffffff1660e01b8152600401610d89929190613ad3565b600060405180830381865afa158015610da6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610dcf9190613c27565b600181518110610de257610de16139e6565b5b602002602001015191505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e2130610eb0565b90506000811115610e4b57600c60009054906101000a900460ff16610e4a57610e4981612b9b565b5b5b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b600e5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f01611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f85906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611054611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d8906138e4565b60405180910390fd5b81600f81905550806010819055505050565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111339190613770565b602060405180830381865afa158015611150573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111749190613c70565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016111d3929190613c9d565b6020604051808303816000875af11580156111f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112169190613cdb565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606009805461125490613867565b80601f016020809104026020016040519081016040528092919081815260200182805461128090613867565b80156112cd5780601f106112a2576101008083540402835291602001916112cd565b820191906000526020600020905b8154815290600101906020018083116112b057829003601f168201915b5050505050905090565b6112df612e66565b565b601160149054906101000a900460ff1681565b60006113b7611301611f3c565b846113b2856040518060600160405280602581526020016145d3602591396006600061132b611f3c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2e9092919063ffffffff16565b611f44565b6001905092915050565b60006113d56113ce611f3c565b848461210d565b6001905092915050565b6113e7611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b906138e4565b60405180910390fd5b80600d8190555050565b611486611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90613d7a565b60405180910390fd5b6115d330600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54611f44565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611640573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166491906139b9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171191906139b9565b6040518363ffffffff1660e01b815260040161172e929190613d9a565b6020604051808303816000875af115801561174d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177191906139b9565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306117fa30610eb0565b60008061180561121c565b426040518863ffffffff1660e01b815260040161182796959493929190613dfe565b60606040518083038185885af1158015611845573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061186a9190613e5f565b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161190c929190613c9d565b6020604051808303816000875af115801561192b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194f9190613cdb565b506000601160146101000a81548160ff021916908315150217905550565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000905060005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8f9190613c70565b811015611c01576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401611af3919061359e565b602060405180830381865afa158015611b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3491906139b9565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b8152600401611b939190613770565b602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd49190613c70565b9050804210611bec578380611be890613eb2565b9450505b50508080611bf990613eb2565b9150506119fe565b508091505090565b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c76573d6000803e3d6000fd5b5050565b611c82611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d06906138e4565b60405180910390fd5b601160149054906101000a900460ff16611d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5590613f6c565b60405180910390fd5b6000601160146101000a81548160ff021916908315150217905550565b611d83611f3c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e07906138e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7690613ffe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa90614090565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201990614122565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612100919061359e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361217c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612173906141b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e290614246565b60405180910390fd5b6000811161222e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612225906142d8565b60405180910390fd5b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122d55750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561231457506122e461121c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612353575061232361121c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050600083905061236261121c565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156123d057506123a061121c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561240857503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561244057503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156127ea5781156127e957601160149054906101000a900460ff1615612467576000612490565b61248f6064612481600f54846131d490919063ffffffff16565b61324e90919063ffffffff16565b5b9250600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156124fb5750601160149054906101000a900460ff165b1561259857612508612e66565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82886426040518363ffffffff1660e01b8152600401612565929190613c9d565b600060405180830381600087803b15801561257f57600080fd5b505af1158015612593573d6000803e3d6000fd5b505050505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156126435750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156127e857600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484111561274f57600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006126e6848361329890919063ffffffff16565b90506000612705826126f789610eb0565b612a9290919063ffffffff16565b9050600e5481111561274c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127439061436a565b60405180910390fd5b50505b601160149054906101000a900460ff161561276b576000612794565b6127936064612785601054846131d490919063ffffffff16565b61324e90919063ffffffff16565b5b925060006127a130610eb0565b905060008111156127e65760006127b6610bad565b90508082101580156127d55750600c60009054906101000a900460ff16155b156127e4576127e381612b9b565b5b505b505b5b5b60006127ff848361329890919063ffffffff16565b905061285382600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461329890919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e881600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9290919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061297d84600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9290919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612a1d919061359e565b60405180910390a350505050505050565b6000838311158290612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d91906133d5565b60405180910390fd5b5060008385612a85919061438a565b9050809150509392505050565b6000808284612aa191906143be565b905083811015612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add9061443e565b60405180910390fd5b8091505092915050565b60005b83839050811015612b95576000848483818110612b1357612b126139e6565b5b9050602002016020810190612b28919061378b565b905082600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550508080612b8d90613eb2565b915050612af3565b50505050565b6000600267ffffffffffffffff811115612bb857612bb7613975565b5b604051908082528060200260200182016040528015612be65781602001602082028036833780820191505090505b5090503081600081518110612bfe57612bfd6139e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc991906139b9565b81600181518110612cdd57612cdc6139e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d4430600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f44565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612da895949392919061445e565b600060405180830381600087803b158015612dc257600080fd5b505af1158015612dd6573d6000803e3d6000fd5b5050505060004790506000612df560018361324e90919063ffffffff16565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612e5f573d6000803e3d6000fd5b5050505050565b601160149054906101000a900460ff16156131d25760005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0f9190613c70565b8110156131d0576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401612f73919061359e565b602060405180830381865afa158015612f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb491906139b9565b90506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561312e5761305581600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461329890919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130ea81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9290919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b81526004016131899190613770565b600060405180830381600087803b1580156131a357600080fd5b505af11580156131b7573d6000803e3d6000fd5b50505050505080806131c890613eb2565b915050612e7e565b505b565b60008083036131e65760009050613248565b600082846131f49190613933565b905082848261320391906144e7565b14613243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323a9061458a565b60405180910390fd5b809150505b92915050565b600061329083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132e2565b905092915050565b60006132da83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a2e565b905092915050565b60008083118290613329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332091906133d5565b60405180910390fd5b506000838561333891906144e7565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561337f578082015181840152602081019050613364565b60008484015250505050565b6000601f19601f8301169050919050565b60006133a782613345565b6133b18185613350565b93506133c1818560208601613361565b6133ca8161338b565b840191505092915050565b600060208201905081810360008301526133ef818461339c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134368261340b565b9050919050565b6134468161342b565b811461345157600080fd5b50565b6000813590506134638161343d565b92915050565b6000819050919050565b61347c81613469565b811461348757600080fd5b50565b60008135905061349981613473565b92915050565b600080604083850312156134b6576134b5613401565b5b60006134c485828601613454565b92505060206134d58582860161348a565b9150509250929050565b60008115159050919050565b6134f4816134df565b82525050565b600060208201905061350f60008301846134eb565b92915050565b6000819050919050565b600061353a6135356135308461340b565b613515565b61340b565b9050919050565b600061354c8261351f565b9050919050565b600061355e82613541565b9050919050565b61356e81613553565b82525050565b60006020820190506135896000830184613565565b92915050565b61359881613469565b82525050565b60006020820190506135b3600083018461358f565b92915050565b6000806000606084860312156135d2576135d1613401565b5b60006135e086828701613454565b93505060206135f186828701613454565b92505060406136028682870161348a565b9150509250925092565b60006020828403121561362257613621613401565b5b60006136308482850161348a565b91505092915050565b600060ff82169050919050565b61364f81613639565b82525050565b600060208201905061366a6000830184613646565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261369557613694613670565b5b8235905067ffffffffffffffff8111156136b2576136b1613675565b5b6020830191508360208202830111156136ce576136cd61367a565b5b9250929050565b6136de816134df565b81146136e957600080fd5b50565b6000813590506136fb816136d5565b92915050565b60008060006040848603121561371a57613719613401565b5b600084013567ffffffffffffffff81111561373857613737613406565b5b6137448682870161367f565b93509350506020613757868287016136ec565b9150509250925092565b61376a8161342b565b82525050565b60006020820190506137856000830184613761565b92915050565b6000602082840312156137a1576137a0613401565b5b60006137af84828501613454565b91505092915050565b600080604083850312156137cf576137ce613401565b5b60006137dd8582860161348a565b92505060206137ee8582860161348a565b9150509250929050565b6000806040838503121561380f5761380e613401565b5b600061381d85828601613454565b925050602061382e85828601613454565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061387f57607f821691505b60208210810361389257613891613838565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138ce602083613350565b91506138d982613898565b602082019050919050565b600060208201905081810360008301526138fd816138c1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061393e82613469565b915061394983613469565b925082820261395781613469565b9150828204841483151761396e5761396d613904565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506139b38161343d565b92915050565b6000602082840312156139cf576139ce613401565b5b60006139dd848285016139a4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a4a8161342b565b82525050565b6000613a5c8383613a41565b60208301905092915050565b6000602082019050919050565b6000613a8082613a15565b613a8a8185613a20565b9350613a9583613a31565b8060005b83811015613ac6578151613aad8882613a50565b9750613ab883613a68565b925050600181019050613a99565b5085935050505092915050565b6000604082019050613ae8600083018561358f565b8181036020830152613afa8184613a75565b90509392505050565b613b0c8261338b565b810181811067ffffffffffffffff82111715613b2b57613b2a613975565b5b80604052505050565b6000613b3e6133f7565b9050613b4a8282613b03565b919050565b600067ffffffffffffffff821115613b6a57613b69613975565b5b602082029050602081019050919050565b600081519050613b8a81613473565b92915050565b6000613ba3613b9e84613b4f565b613b34565b90508083825260208201905060208402830185811115613bc657613bc561367a565b5b835b81811015613bef5780613bdb8882613b7b565b845260208401935050602081019050613bc8565b5050509392505050565b600082601f830112613c0e57613c0d613670565b5b8151613c1e848260208601613b90565b91505092915050565b600060208284031215613c3d57613c3c613401565b5b600082015167ffffffffffffffff811115613c5b57613c5a613406565b5b613c6784828501613bf9565b91505092915050565b600060208284031215613c8657613c85613401565b5b6000613c9484828501613b7b565b91505092915050565b6000604082019050613cb26000830185613761565b613cbf602083018461358f565b9392505050565b600081519050613cd5816136d5565b92915050565b600060208284031215613cf157613cf0613401565b5b6000613cff84828501613cc6565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d64602283613350565b9150613d6f82613d08565b604082019050919050565b60006020820190508181036000830152613d9381613d57565b9050919050565b6000604082019050613daf6000830185613761565b613dbc6020830184613761565b9392505050565b6000819050919050565b6000613de8613de3613dde84613dc3565b613515565b613469565b9050919050565b613df881613dcd565b82525050565b600060c082019050613e136000830189613761565b613e20602083018861358f565b613e2d6040830187613def565b613e3a6060830186613def565b613e476080830185613761565b613e5460a083018461358f565b979650505050505050565b600080600060608486031215613e7857613e77613401565b5b6000613e8686828701613b7b565b9350506020613e9786828701613b7b565b9250506040613ea886828701613b7b565b9150509250925092565b6000613ebd82613469565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613eef57613eee613904565b5b600182019050919050565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b6000613f56602583613350565b9150613f6182613efa565b604082019050919050565b60006020820190508181036000830152613f8581613f49565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613fe8602683613350565b9150613ff382613f8c565b604082019050919050565b6000602082019050818103600083015261401781613fdb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061407a602483613350565b91506140858261401e565b604082019050919050565b600060208201905081810360008301526140a98161406d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061410c602283613350565b9150614117826140b0565b604082019050919050565b6000602082019050818103600083015261413b816140ff565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061419e602583613350565b91506141a982614142565b604082019050919050565b600060208201905081810360008301526141cd81614191565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614230602383613350565b915061423b826141d4565b604082019050919050565b6000602082019050818103600083015261425f81614223565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142c2602983613350565b91506142cd82614266565b604082019050919050565b600060208201905081810360008301526142f1816142b5565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000614354602583613350565b915061435f826142f8565b604082019050919050565b6000602082019050818103600083015261438381614347565b9050919050565b600061439582613469565b91506143a083613469565b92508282039050818111156143b8576143b7613904565b5b92915050565b60006143c982613469565b91506143d483613469565b92508282019050808211156143ec576143eb613904565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614428601b83613350565b9150614433826143f2565b602082019050919050565b600060208201905081810360008301526144578161441b565b9050919050565b600060a082019050614473600083018861358f565b6144806020830187613def565b81810360408301526144928186613a75565b90506144a16060830185613761565b6144ae608083018461358f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144f282613469565b91506144fd83613469565b92508261450d5761450c6144b8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614574602183613350565b915061457f82614518565b604082019050919050565b600060208201905081810360008301526145a381614567565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203b0d03b1dcda7edffaaba022476be853736fa72dd326f139f5e710ac6a46891d64736f6c63430008130033
Deployed Bytecode Sourcemap
8358:10427:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9876:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10709:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8660:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10153:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10878:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13118:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9440:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10062:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11199:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12033:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9407:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17947:264;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8773:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16982:267;;;;;;;;;;;;;:::i;:::-;;13263:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9280:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9338:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10256:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6356:148;;;;;;;;;;;;;:::i;:::-;;11702:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18545:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6142:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9967:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16906:70;;;;;;;;;;;;;:::i;:::-;;9505:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11425:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10383:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18219:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12446:664;;;;;;;;;;;;;:::i;:::-;;10558:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16516:382;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18386:151;;;;;;;;;;;;;:::i;:::-;;11832:193;;;;;;;;;;;;;:::i;:::-;;6512:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9876:83;9913:13;9946:5;9939:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9876:83;:::o;10709:161::-;10784:4;10801:39;10810:12;:10;:12::i;:::-;10824:7;10833:6;10801:8;:39::i;:::-;10858:4;10851:11;;10709:161;;;;:::o;8660:106::-;;;;;;;;;;;;;:::o;10153:95::-;10206:7;10233;;10226:14;;10153:95;:::o;10878:313::-;10976:4;10993:36;11003:6;11011:9;11022:6;10993:9;:36::i;:::-;11040:121;11049:6;11057:12;:10;:12::i;:::-;11071:89;11109:6;11071:89;;;;;;;;;;;;;;;;;:11;:19;11083:6;11071:19;;;;;;;;;;;;;;;:33;11091:12;:10;:12::i;:::-;11071:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11040:8;:121::i;:::-;11179:4;11172:11;;10878:313;;;;;:::o;13118:137::-;6279:12;:10;:12::i;:::-;6269:22;;:6;;;;;;;;;;:22;;;6261:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13240:7:::1;13222:15;:25;;;;:::i;:::-;13203:16;:44;;;;13118:137:::0;:::o;9440:27::-;;;;:::o;10062:83::-;10103:5;10128:9;;;;;;;;;;;10121:16;;10062:83;:::o;11199:218::-;11287:4;11304:83;11313:12;:10;:12::i;:::-;11327:7;11336:50;11375:10;11336:11;:25;11348:12;:10;:12::i;:::-;11336:25;;;;;;;;;;;;;;;:34;11362:7;11336:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11304:8;:83::i;:::-;11405:4;11398:11;;11199:218;;;;:::o;12033:161::-;6279:12;:10;:12::i;:::-;6269:22;;:6;;;;;;;;;;:22;;;6261:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12145:41:::1;12158:9;;12169:16;12145:12;:41::i;:::-;12033:161:::0;;;:::o;9407:26::-;;;;:::o;17947:264::-;17993:7;18014:21;18052:1;18038:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18014:40;;18075:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18065:4;18070:1;18065:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18126:4;18108;18113:1;18108:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18149:15;;;;;;;;;;;:29;;;18179:14;;18195:4;18149:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18201:1;18149:54;;;;;;;;:::i;:::-;;;;;;;;18142:61;;;17947:264;:::o;8773:38::-;;;;;;;;;;;;;:::o;16982:267::-;17024:28;17055:24;17073:4;17055:9;:24::i;:::-;17024:55;;17117:1;17094:20;:24;17090:152;;;17140:16;;;;;;;;;;;17135:96;;17177:38;17194:20;17177:16;:38::i;:::-;17135:96;17090:152;17013:236;16982:267::o;13263:124::-;13328:4;13352:18;:27;13371:7;13352:27;;;;;;;;;;;;;;;;;;;;;;;;;13345:34;;13263:124;;;:::o;9280:50::-;;;;:::o;9338:62::-;;;;:::o;10256:119::-;10322:7;10349:9;:18;10359:7;10349:18;;;;;;;;;;;;;;;;10342:25;;10256:119;;;:::o;6356:148::-;6279:12;:10;:12::i;:::-;6269:22;;:6;;;;;;;;;;:22;;;6261:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6463:1:::1;6426:40;;6447:6;::::0;::::1;;;;;;;;6426:40;;;;;;;;;;;;6494:1;6477:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6356:148::o:0;11702:122::-;6279:12;:10;:12::i;:::-;6269:22;;:6;;;;;;;;;;:22;;;6261:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11788:3:::1;11779:6;:12;;;;11812:4;11802:7;:14;;;;11702:122:::0;;:::o;18545:237::-;18618:17;18645:15;18618:43;;18672:15;18690:10;:20;;;18719:4;18690:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18672:53;;18736:10;:19;;;18756:8;;;;;;;;;;;18766:7;18736:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18607:175;;18545:237;:::o;6142:79::-;6180:7;6207:6;;;;;;;;;;;6200:13;;6142:79;:::o;9967:87::-;10006:13;10039:7;10032:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9967:87;:::o;16906:70::-;16953:15;:13;:15::i;:::-;16906:70::o;9505:34::-;;;;;;;;;;;;;:::o;11425:269::-;11518:4;11535:129;11544:12;:10;:12::i;:::-;11558:7;11567:96;11606:15;11567:96;;;;;;;;;;;;;;;;;:11;:25;11579:12;:10;:12::i;:::-;11567:25;;;;;;;;;;;;;;;:34;11593:7;11567:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11535:8;:129::i;:::-;11682:4;11675:11;;11425:269;;;;:::o;10383:167::-;10461:4;10478:42;10488:12;:10;:12::i;:::-;10502:9;10513:6;10478:9;:42::i;:::-;10538:4;10531:11;;10383:167;;;;:::o;18219:122::-;6279:12;:10;:12::i;:::-;6269:22;;:6;;;;;;;;;;:22;;;6261:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18318:15:::1;18301:14;:32;;;;18219:122:::0;:::o;12446:664::-;6279:12;:10;:12::i;:::-;6269:22;;:6;;;;;;;;;;:22;;;6261:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12531:1:::1;12509:24;;:10;;;;;;;;;;;:24;;;12501:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12582:58;12599:4;12614:15;;;;;;;;;;;12632:7;;12582:8;:58::i;:::-;12682:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12664:55;;;12728:4;12735:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12664:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12651:10;;:107;;;;;;;;;;;;;;;;;;12769:15;;;;;;;;;;;:31;;;12808:21;12853:4;12873:24;12891:4;12873:9;:24::i;:::-;12912:1;12928::::0;12944:7:::1;:5;:7::i;:::-;12966:15;12769:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13000:10;;;;;;;;;;;12993:26;;;13028:15;;;;;;;;;;;13046:14;12993:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13097:5;13072:22;;:30;;;;;;;;;;;;;;;;;;12446:664::o:0;10558:143::-;10639:7;10666:11;:18;10678:5;10666:18;;;;;;;;;;;;;;;:27;10685:7;10666:27;;;;;;;;;;;;;;;;10659:34;;10558:143;;;;:::o;16516:382::-;16566:7;16586:13;16602:1;16586:17;;16618:9;16614:254;16636:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16632:1;:24;16614:254;;;16678:14;16695:13;;;;;;;;;;;:27;;;16723:1;16695:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16678:47;;16740:14;16757:13;;;;;;;;;;;:17;;;16775:6;16757:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16740:42;;16820:9;16800:15;:29;16797:59;;16849:7;;;;;:::i;:::-;;;;16797:59;16663:205;;16658:3;;;;;:::i;:::-;;;;16614:254;;;;16885:5;16878:12;;;16516:382;:::o;18386:151::-;18438:18;18459:21;18438:42;;18499:8;;;;;;;;;;;18491:26;;:38;18518:10;18491:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18427:110;18386:151::o;11832:193::-;6279:12;:10;:12::i;:::-;6269:22;;:6;;;;;;;;;;:22;;;6261:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11913:22:::1;;;;;;;;;;;11905:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12012:5;11987:22;;:30;;;;;;;;;;;;;;;;;;11832:193::o:0;6512:244::-;6279:12;:10;:12::i;:::-;6269:22;;:6;;;;;;;;;;:22;;;6261:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6621:1:::1;6601:22;;:8;:22;;::::0;6593:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6711:8;6682:38;;6703:6;::::0;::::1;;;;;;;;6682:38;;;;;;;;;;;;6740:8;6731:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6512:244:::0;:::o;2484:98::-;2537:7;2564:10;2557:17;;2484:98;:::o;13395:337::-;13505:1;13488:19;;:5;:19;;;13480:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13586:1;13567:21;;:7;:21;;;13559:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13670:6;13640:11;:18;13652:5;13640:18;;;;;;;;;;;;;;;:27;13659:7;13640:27;;;;;;;;;;;;;;;:36;;;;13708:7;13692:32;;13701:5;13692:32;;;13717:6;13692:32;;;;;;:::i;:::-;;;;;;;;13395:337;;;:::o;13740:2214::-;13847:1;13831:18;;:4;:18;;;13823:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13924:1;13910:16;;:2;:16;;;13902:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13997:1;13985:9;:13;13977:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14055:17;14087:13;14104:18;:24;14123:4;14104:24;;;;;;;;;;;;;;;;;;;;;;;;;14103:25;:52;;;;;14133:18;:22;14152:2;14133:22;;;;;;;;;;;;;;;;;;;;;;;;;14132:23;14103:52;:71;;;;;14167:7;:5;:7::i;:::-;14159:15;;:4;:15;;;;14103:71;:88;;;;;14184:7;:5;:7::i;:::-;14178:13;;:2;:13;;;;14103:88;14087:104;;14202:14;14219:9;14202:26;;14250:7;:5;:7::i;:::-;14242:15;;:4;:15;;;;:32;;;;;14267:7;:5;:7::i;:::-;14261:13;;:2;:13;;;;14242:32;:57;;;;;14294:4;14278:21;;:4;:21;;;;14242:57;:80;;;;;14317:4;14303:19;;:2;:19;;;;14242:80;14239:1406;;;14342:8;14339:1295;;;14384:22;;;;;;;;;;;14383:23;:57;;14439:1;14383:57;;;14409:27;14432:3;14409:18;14420:6;;14409;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;14383:57;14371:69;;14471:10;;;;;;;;;;;14463:18;;:4;:18;;;:44;;;;;14485:22;;;;;;;;;;;14463:44;14459:169;;;14532:15;:13;:15::i;:::-;14570:13;;;;;;;;;;;:17;;;14588:2;14592:15;14570:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14459:169;14658:10;;;;;;;;;;;14650:18;;:4;:18;;;;:38;;;;;14678:10;;;;;;;;;;;14672:16;;:2;:16;;;14650:38;14646:973;;;14728:9;:15;14738:4;14728:15;;;;;;;;;;;;;;;;14716:9;:27;14713:400;;;14781:9;:15;14791:4;14781:15;;;;;;;;;;;;;;;;14772:24;;14823:22;14848:21;14859:9;14848:6;:10;;:21;;;;:::i;:::-;14823:46;;14896:21;14920:33;14938:14;14920:13;14930:2;14920:9;:13::i;:::-;:17;;:33;;;;:::i;:::-;14896:57;;15005:16;;14988:13;:33;;14980:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;14745:368;;14713:400;15148:22;;;;;;;;;;;15147:23;:58;;15204:1;15147:58;;;15173:28;15197:3;15173:19;15184:7;;15173:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15147:58;15135:70;;15228:28;15259:24;15277:4;15259:9;:24::i;:::-;15228:55;;15333:1;15310:20;:24;15306:294;;;15363:19;15385:15;:13;:15::i;:::-;15363:37;;15455:11;15431:20;:35;;:56;;;;;15471:16;;;;;;;;;;;15470:17;15431:56;15427:150;;;15520:29;15537:11;15520:16;:29::i;:::-;15427:150;15336:264;15306:294;14690:929;14646:973;14339:1295;14239:1406;15662:22;15687:21;15698:9;15687:6;:10;;:21;;;;:::i;:::-;15662:46;;15737:27;15757:6;15737:9;:15;15747:4;15737:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;15719:9;:15;15729:4;15719:15;;;;;;;;;;;;;;;:45;;;;15791:33;15809:14;15791:9;:13;15801:2;15791:13;;;;;;;;;;;;;;;;:17;;:33;;;;:::i;:::-;15775:9;:13;15785:2;15775:13;;;;;;;;;;;;;;;:49;;;;15862:39;15891:9;15862;:24;15880:4;15862:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15835:9;:24;15853:4;15835:24;;;;;;;;;;;;;;;:66;;;;15932:2;15917:29;;15926:4;15917:29;;;15936:9;15917:29;;;;;;:::i;:::-;;;;;;;;13812:2142;;;;13740:2214;;;:::o;1177:192::-;1263:7;1296:1;1291;:6;;1299:12;1283:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1323:9;1339:1;1335;:5;;;;:::i;:::-;1323:17;;1360:1;1353:8;;;1177:192;;;;;:::o;844:181::-;902:7;922:9;938:1;934;:5;;;;:::i;:::-;922:17;;963:1;958;:6;;950:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1016:1;1009:8;;;844:181;;;;:::o;12202:236::-;12289:9;12284:147;12308:9;;:16;;12304:1;:20;12284:147;;;12346:12;12361:9;;12371:1;12361:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12346:27;;12415:4;12388:18;:24;12407:4;12388:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12331:100;12326:3;;;;;:::i;:::-;;;;12284:147;;;;12202:236;;;:::o;17257:682::-;17383:21;17421:1;17407:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17383:40;;17452:4;17434;17439:1;17434:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17478:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17468:4;17473:1;17468:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17511:62;17528:4;17543:15;;;;;;;;;;;17561:11;17511:8;:62::i;:::-;17584:15;;;;;;;;;;;:66;;;17665:11;17691:1;17707:4;17734;17754:15;17584:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17793:18;17814:21;17793:42;;17846:17;17866;17881:1;17866:10;:14;;:17;;;;:::i;:::-;17846:37;;17904:6;;;;;;;;;;;17896:24;;:35;17921:9;17896:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17312:627;;;17257:682;:::o;15962:546::-;16009:22;;;;;;;;;;;16006:495;;;16052:9;16048:442;16070:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16066:1;:24;16048:442;;;16116:14;16133:13;;;;;;;;;;;:27;;;16161:1;16133:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16116:47;;16182:14;16199:9;:17;16209:6;16199:17;;;;;;;;;;;;;;;;16182:34;;16247:1;16238:6;:10;16235:193;;;16293:29;16315:6;16293:9;:17;16303:6;16293:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;16273:9;:17;16283:6;16273:17;;;;;;;;;;;;;;;:49;;;;16372:36;16401:6;16372:9;:24;16390:4;16372:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;16345:9;:24;16363:4;16345:24;;;;;;;;;;;;;;;:63;;;;16235:193;16446:13;;;;;;;;;;;:20;;;16467:6;16446:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16097:393;;16092:3;;;;;:::i;:::-;;;;16048:442;;;;16006:495;15962:546::o;1377:250::-;1435:7;1464:1;1459;:6;1455:47;;1489:1;1482:8;;;;1455:47;1514:9;1530:1;1526;:5;;;;:::i;:::-;1514:17;;1559:1;1554;1550;:5;;;;:::i;:::-;:10;1542:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1618:1;1611:8;;;1377:250;;;;;:::o;1635:132::-;1693:7;1720:39;1724:1;1727;1720:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1713:46;;1635:132;;;;:::o;1033:136::-;1091:7;1118:43;1122:1;1125;1118:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1111:50;;1033:136;;;;:::o;1775:278::-;1861:7;1893:1;1889;:5;1896:12;1881:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1920:9;1936:1;1932;:5;;;;:::i;:::-;1920:17;;2044:1;2037:8;;;1775:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:329::-;5455:6;5504:2;5492:9;5483:7;5479:23;5475:32;5472:119;;;5510:79;;:::i;:::-;5472:119;5630:1;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5601:117;5396:329;;;;:::o;5731:86::-;5766:7;5806:4;5799:5;5795:16;5784:27;;5731:86;;;:::o;5823:112::-;5906:22;5922:5;5906:22;:::i;:::-;5901:3;5894:35;5823:112;;:::o;5941:214::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:67;6145:1;6134:9;6130:17;6121:6;6081:67;:::i;:::-;5941:214;;;;:::o;6161:117::-;6270:1;6267;6260:12;6284:117;6393:1;6390;6383:12;6407:117;6516:1;6513;6506:12;6547:568;6620:8;6630:6;6680:3;6673:4;6665:6;6661:17;6657:27;6647:122;;6688:79;;:::i;:::-;6647:122;6801:6;6788:20;6778:30;;6831:18;6823:6;6820:30;6817:117;;;6853:79;;:::i;:::-;6817:117;6967:4;6959:6;6955:17;6943:29;;7021:3;7013:4;7005:6;7001:17;6991:8;6987:32;6984:41;6981:128;;;7028:79;;:::i;:::-;6981:128;6547:568;;;;;:::o;7121:116::-;7191:21;7206:5;7191:21;:::i;:::-;7184:5;7181:32;7171:60;;7227:1;7224;7217:12;7171:60;7121:116;:::o;7243:133::-;7286:5;7324:6;7311:20;7302:29;;7340:30;7364:5;7340:30;:::i;:::-;7243:133;;;;:::o;7382:698::-;7474:6;7482;7490;7539:2;7527:9;7518:7;7514:23;7510:32;7507:119;;;7545:79;;:::i;:::-;7507:119;7693:1;7682:9;7678:17;7665:31;7723:18;7715:6;7712:30;7709:117;;;7745:79;;:::i;:::-;7709:117;7858:80;7930:7;7921:6;7910:9;7906:22;7858:80;:::i;:::-;7840:98;;;;7636:312;7987:2;8013:50;8055:7;8046:6;8035:9;8031:22;8013:50;:::i;:::-;8003:60;;7958:115;7382:698;;;;;:::o;8086:118::-;8173:24;8191:5;8173:24;:::i;:::-;8168:3;8161:37;8086:118;;:::o;8210:222::-;8303:4;8341:2;8330:9;8326:18;8318:26;;8354:71;8422:1;8411:9;8407:17;8398:6;8354:71;:::i;:::-;8210:222;;;;:::o;8438:329::-;8497:6;8546:2;8534:9;8525:7;8521:23;8517:32;8514:119;;;8552:79;;:::i;:::-;8514:119;8672:1;8697:53;8742:7;8733:6;8722:9;8718:22;8697:53;:::i;:::-;8687:63;;8643:117;8438:329;;;;:::o;8773:474::-;8841:6;8849;8898:2;8886:9;8877:7;8873:23;8869:32;8866:119;;;8904:79;;:::i;:::-;8866:119;9024:1;9049:53;9094:7;9085:6;9074:9;9070:22;9049:53;:::i;:::-;9039:63;;8995:117;9151:2;9177:53;9222:7;9213:6;9202:9;9198:22;9177:53;:::i;:::-;9167:63;;9122:118;8773:474;;;;;:::o;9253:::-;9321:6;9329;9378:2;9366:9;9357:7;9353:23;9349:32;9346:119;;;9384:79;;:::i;:::-;9346:119;9504:1;9529:53;9574:7;9565:6;9554:9;9550:22;9529:53;:::i;:::-;9519:63;;9475:117;9631:2;9657:53;9702:7;9693:6;9682:9;9678:22;9657:53;:::i;:::-;9647:63;;9602:118;9253:474;;;;;:::o;9733:180::-;9781:77;9778:1;9771:88;9878:4;9875:1;9868:15;9902:4;9899:1;9892:15;9919:320;9963:6;10000:1;9994:4;9990:12;9980:22;;10047:1;10041:4;10037:12;10068:18;10058:81;;10124:4;10116:6;10112:17;10102:27;;10058:81;10186:2;10178:6;10175:14;10155:18;10152:38;10149:84;;10205:18;;:::i;:::-;10149:84;9970:269;9919:320;;;:::o;10245:182::-;10385:34;10381:1;10373:6;10369:14;10362:58;10245:182;:::o;10433:366::-;10575:3;10596:67;10660:2;10655:3;10596:67;:::i;:::-;10589:74;;10672:93;10761:3;10672:93;:::i;:::-;10790:2;10785:3;10781:12;10774:19;;10433:366;;;:::o;10805:419::-;10971:4;11009:2;10998:9;10994:18;10986:26;;11058:9;11052:4;11048:20;11044:1;11033:9;11029:17;11022:47;11086:131;11212:4;11086:131;:::i;:::-;11078:139;;10805:419;;;:::o;11230:180::-;11278:77;11275:1;11268:88;11375:4;11372:1;11365:15;11399:4;11396:1;11389:15;11416:410;11456:7;11479:20;11497:1;11479:20;:::i;:::-;11474:25;;11513:20;11531:1;11513:20;:::i;:::-;11508:25;;11568:1;11565;11561:9;11590:30;11608:11;11590:30;:::i;:::-;11579:41;;11769:1;11760:7;11756:15;11753:1;11750:22;11730:1;11723:9;11703:83;11680:139;;11799:18;;:::i;:::-;11680:139;11464:362;11416:410;;;;:::o;11832:180::-;11880:77;11877:1;11870:88;11977:4;11974:1;11967:15;12001:4;11998:1;11991:15;12018:143;12075:5;12106:6;12100:13;12091:22;;12122:33;12149:5;12122:33;:::i;:::-;12018:143;;;;:::o;12167:351::-;12237:6;12286:2;12274:9;12265:7;12261:23;12257:32;12254:119;;;12292:79;;:::i;:::-;12254:119;12412:1;12437:64;12493:7;12484:6;12473:9;12469:22;12437:64;:::i;:::-;12427:74;;12383:128;12167:351;;;;:::o;12524:180::-;12572:77;12569:1;12562:88;12669:4;12666:1;12659:15;12693:4;12690:1;12683:15;12710:114;12777:6;12811:5;12805:12;12795:22;;12710:114;;;:::o;12830:184::-;12929:11;12963:6;12958:3;12951:19;13003:4;12998:3;12994:14;12979:29;;12830:184;;;;:::o;13020:132::-;13087:4;13110:3;13102:11;;13140:4;13135:3;13131:14;13123:22;;13020:132;;;:::o;13158:108::-;13235:24;13253:5;13235:24;:::i;:::-;13230:3;13223:37;13158:108;;:::o;13272:179::-;13341:10;13362:46;13404:3;13396:6;13362:46;:::i;:::-;13440:4;13435:3;13431:14;13417:28;;13272:179;;;;:::o;13457:113::-;13527:4;13559;13554:3;13550:14;13542:22;;13457:113;;;:::o;13606:732::-;13725:3;13754:54;13802:5;13754:54;:::i;:::-;13824:86;13903:6;13898:3;13824:86;:::i;:::-;13817:93;;13934:56;13984:5;13934:56;:::i;:::-;14013:7;14044:1;14029:284;14054:6;14051:1;14048:13;14029:284;;;14130:6;14124:13;14157:63;14216:3;14201:13;14157:63;:::i;:::-;14150:70;;14243:60;14296:6;14243:60;:::i;:::-;14233:70;;14089:224;14076:1;14073;14069:9;14064:14;;14029:284;;;14033:14;14329:3;14322:10;;13730:608;;;13606:732;;;;:::o;14344:483::-;14515:4;14553:2;14542:9;14538:18;14530:26;;14566:71;14634:1;14623:9;14619:17;14610:6;14566:71;:::i;:::-;14684:9;14678:4;14674:20;14669:2;14658:9;14654:18;14647:48;14712:108;14815:4;14806:6;14712:108;:::i;:::-;14704:116;;14344:483;;;;;:::o;14833:281::-;14916:27;14938:4;14916:27;:::i;:::-;14908:6;14904:40;15046:6;15034:10;15031:22;15010:18;14998:10;14995:34;14992:62;14989:88;;;15057:18;;:::i;:::-;14989:88;15097:10;15093:2;15086:22;14876:238;14833:281;;:::o;15120:129::-;15154:6;15181:20;;:::i;:::-;15171:30;;15210:33;15238:4;15230:6;15210:33;:::i;:::-;15120:129;;;:::o;15255:311::-;15332:4;15422:18;15414:6;15411:30;15408:56;;;15444:18;;:::i;:::-;15408:56;15494:4;15486:6;15482:17;15474:25;;15554:4;15548;15544:15;15536:23;;15255:311;;;:::o;15572:143::-;15629:5;15660:6;15654:13;15645:22;;15676:33;15703:5;15676:33;:::i;:::-;15572:143;;;;:::o;15738:732::-;15845:5;15870:81;15886:64;15943:6;15886:64;:::i;:::-;15870:81;:::i;:::-;15861:90;;15971:5;16000:6;15993:5;15986:21;16034:4;16027:5;16023:16;16016:23;;16087:4;16079:6;16075:17;16067:6;16063:30;16116:3;16108:6;16105:15;16102:122;;;16135:79;;:::i;:::-;16102:122;16250:6;16233:231;16267:6;16262:3;16259:15;16233:231;;;16342:3;16371:48;16415:3;16403:10;16371:48;:::i;:::-;16366:3;16359:61;16449:4;16444:3;16440:14;16433:21;;16309:155;16293:4;16288:3;16284:14;16277:21;;16233:231;;;16237:21;15851:619;;15738:732;;;;;:::o;16493:385::-;16575:5;16624:3;16617:4;16609:6;16605:17;16601:27;16591:122;;16632:79;;:::i;:::-;16591:122;16742:6;16736:13;16767:105;16868:3;16860:6;16853:4;16845:6;16841:17;16767:105;:::i;:::-;16758:114;;16581:297;16493:385;;;;:::o;16884:554::-;16979:6;17028:2;17016:9;17007:7;17003:23;16999:32;16996:119;;;17034:79;;:::i;:::-;16996:119;17175:1;17164:9;17160:17;17154:24;17205:18;17197:6;17194:30;17191:117;;;17227:79;;:::i;:::-;17191:117;17332:89;17413:7;17404:6;17393:9;17389:22;17332:89;:::i;:::-;17322:99;;17125:306;16884:554;;;;:::o;17444:351::-;17514:6;17563:2;17551:9;17542:7;17538:23;17534:32;17531:119;;;17569:79;;:::i;:::-;17531:119;17689:1;17714:64;17770:7;17761:6;17750:9;17746:22;17714:64;:::i;:::-;17704:74;;17660:128;17444:351;;;;:::o;17801:332::-;17922:4;17960:2;17949:9;17945:18;17937:26;;17973:71;18041:1;18030:9;18026:17;18017:6;17973:71;:::i;:::-;18054:72;18122:2;18111:9;18107:18;18098:6;18054:72;:::i;:::-;17801:332;;;;;:::o;18139:137::-;18193:5;18224:6;18218:13;18209:22;;18240:30;18264:5;18240:30;:::i;:::-;18139:137;;;;:::o;18282:345::-;18349:6;18398:2;18386:9;18377:7;18373:23;18369:32;18366:119;;;18404:79;;:::i;:::-;18366:119;18524:1;18549:61;18602:7;18593:6;18582:9;18578:22;18549:61;:::i;:::-;18539:71;;18495:125;18282:345;;;;:::o;18633:221::-;18773:34;18769:1;18761:6;18757:14;18750:58;18842:4;18837:2;18829:6;18825:15;18818:29;18633:221;:::o;18860:366::-;19002:3;19023:67;19087:2;19082:3;19023:67;:::i;:::-;19016:74;;19099:93;19188:3;19099:93;:::i;:::-;19217:2;19212:3;19208:12;19201:19;;18860:366;;;:::o;19232:419::-;19398:4;19436:2;19425:9;19421:18;19413:26;;19485:9;19479:4;19475:20;19471:1;19460:9;19456:17;19449:47;19513:131;19639:4;19513:131;:::i;:::-;19505:139;;19232:419;;;:::o;19657:332::-;19778:4;19816:2;19805:9;19801:18;19793:26;;19829:71;19897:1;19886:9;19882:17;19873:6;19829:71;:::i;:::-;19910:72;19978:2;19967:9;19963:18;19954:6;19910:72;:::i;:::-;19657:332;;;;;:::o;19995:85::-;20040:7;20069:5;20058:16;;19995:85;;;:::o;20086:158::-;20144:9;20177:61;20195:42;20204:32;20230:5;20204:32;:::i;:::-;20195:42;:::i;:::-;20177:61;:::i;:::-;20164:74;;20086:158;;;:::o;20250:147::-;20345:45;20384:5;20345:45;:::i;:::-;20340:3;20333:58;20250:147;;:::o;20403:807::-;20652:4;20690:3;20679:9;20675:19;20667:27;;20704:71;20772:1;20761:9;20757:17;20748:6;20704:71;:::i;:::-;20785:72;20853:2;20842:9;20838:18;20829:6;20785:72;:::i;:::-;20867:80;20943:2;20932:9;20928:18;20919:6;20867:80;:::i;:::-;20957;21033:2;21022:9;21018:18;21009:6;20957:80;:::i;:::-;21047:73;21115:3;21104:9;21100:19;21091:6;21047:73;:::i;:::-;21130;21198:3;21187:9;21183:19;21174:6;21130:73;:::i;:::-;20403:807;;;;;;;;;:::o;21216:663::-;21304:6;21312;21320;21369:2;21357:9;21348:7;21344:23;21340:32;21337:119;;;21375:79;;:::i;:::-;21337:119;21495:1;21520:64;21576:7;21567:6;21556:9;21552:22;21520:64;:::i;:::-;21510:74;;21466:128;21633:2;21659:64;21715:7;21706:6;21695:9;21691:22;21659:64;:::i;:::-;21649:74;;21604:129;21772:2;21798:64;21854:7;21845:6;21834:9;21830:22;21798:64;:::i;:::-;21788:74;;21743:129;21216:663;;;;;:::o;21885:233::-;21924:3;21947:24;21965:5;21947:24;:::i;:::-;21938:33;;21993:66;21986:5;21983:77;21980:103;;22063:18;;:::i;:::-;21980:103;22110:1;22103:5;22099:13;22092:20;;21885:233;;;:::o;22124:224::-;22264:34;22260:1;22252:6;22248:14;22241:58;22333:7;22328:2;22320:6;22316:15;22309:32;22124:224;:::o;22354:366::-;22496:3;22517:67;22581:2;22576:3;22517:67;:::i;:::-;22510:74;;22593:93;22682:3;22593:93;:::i;:::-;22711:2;22706:3;22702:12;22695:19;;22354:366;;;:::o;22726:419::-;22892:4;22930:2;22919:9;22915:18;22907:26;;22979:9;22973:4;22969:20;22965:1;22954:9;22950:17;22943:47;23007:131;23133:4;23007:131;:::i;:::-;22999:139;;22726:419;;;:::o;23151:225::-;23291:34;23287:1;23279:6;23275:14;23268:58;23360:8;23355:2;23347:6;23343:15;23336:33;23151:225;:::o;23382:366::-;23524:3;23545:67;23609:2;23604:3;23545:67;:::i;:::-;23538:74;;23621:93;23710:3;23621:93;:::i;:::-;23739:2;23734:3;23730:12;23723:19;;23382:366;;;:::o;23754:419::-;23920:4;23958:2;23947:9;23943:18;23935:26;;24007:9;24001:4;23997:20;23993:1;23982:9;23978:17;23971:47;24035:131;24161:4;24035:131;:::i;:::-;24027:139;;23754:419;;;:::o;24179:223::-;24319:34;24315:1;24307:6;24303:14;24296:58;24388:6;24383:2;24375:6;24371:15;24364:31;24179:223;:::o;24408:366::-;24550:3;24571:67;24635:2;24630:3;24571:67;:::i;:::-;24564:74;;24647:93;24736:3;24647:93;:::i;:::-;24765:2;24760:3;24756:12;24749:19;;24408:366;;;:::o;24780:419::-;24946:4;24984:2;24973:9;24969:18;24961:26;;25033:9;25027:4;25023:20;25019:1;25008:9;25004:17;24997:47;25061:131;25187:4;25061:131;:::i;:::-;25053:139;;24780:419;;;:::o;25205:221::-;25345:34;25341:1;25333:6;25329:14;25322:58;25414:4;25409:2;25401:6;25397:15;25390:29;25205:221;:::o;25432:366::-;25574:3;25595:67;25659:2;25654:3;25595:67;:::i;:::-;25588:74;;25671:93;25760:3;25671:93;:::i;:::-;25789:2;25784:3;25780:12;25773:19;;25432:366;;;:::o;25804:419::-;25970:4;26008:2;25997:9;25993:18;25985:26;;26057:9;26051:4;26047:20;26043:1;26032:9;26028:17;26021:47;26085:131;26211:4;26085:131;:::i;:::-;26077:139;;25804:419;;;:::o;26229:224::-;26369:34;26365:1;26357:6;26353:14;26346:58;26438:7;26433:2;26425:6;26421:15;26414:32;26229:224;:::o;26459:366::-;26601:3;26622:67;26686:2;26681:3;26622:67;:::i;:::-;26615:74;;26698:93;26787:3;26698:93;:::i;:::-;26816:2;26811:3;26807:12;26800:19;;26459:366;;;:::o;26831:419::-;26997:4;27035:2;27024:9;27020:18;27012:26;;27084:9;27078:4;27074:20;27070:1;27059:9;27055:17;27048:47;27112:131;27238:4;27112:131;:::i;:::-;27104:139;;26831:419;;;:::o;27256:222::-;27396:34;27392:1;27384:6;27380:14;27373:58;27465:5;27460:2;27452:6;27448:15;27441:30;27256:222;:::o;27484:366::-;27626:3;27647:67;27711:2;27706:3;27647:67;:::i;:::-;27640:74;;27723:93;27812:3;27723:93;:::i;:::-;27841:2;27836:3;27832:12;27825:19;;27484:366;;;:::o;27856:419::-;28022:4;28060:2;28049:9;28045:18;28037:26;;28109:9;28103:4;28099:20;28095:1;28084:9;28080:17;28073:47;28137:131;28263:4;28137:131;:::i;:::-;28129:139;;27856:419;;;:::o;28281:228::-;28421:34;28417:1;28409:6;28405:14;28398:58;28490:11;28485:2;28477:6;28473:15;28466:36;28281:228;:::o;28515:366::-;28657:3;28678:67;28742:2;28737:3;28678:67;:::i;:::-;28671:74;;28754:93;28843:3;28754:93;:::i;:::-;28872:2;28867:3;28863:12;28856:19;;28515:366;;;:::o;28887:419::-;29053:4;29091:2;29080:9;29076:18;29068:26;;29140:9;29134:4;29130:20;29126:1;29115:9;29111:17;29104:47;29168:131;29294:4;29168:131;:::i;:::-;29160:139;;28887:419;;;:::o;29312:224::-;29452:34;29448:1;29440:6;29436:14;29429:58;29521:7;29516:2;29508:6;29504:15;29497:32;29312:224;:::o;29542:366::-;29684:3;29705:67;29769:2;29764:3;29705:67;:::i;:::-;29698:74;;29781:93;29870:3;29781:93;:::i;:::-;29899:2;29894:3;29890:12;29883:19;;29542:366;;;:::o;29914:419::-;30080:4;30118:2;30107:9;30103:18;30095:26;;30167:9;30161:4;30157:20;30153:1;30142:9;30138:17;30131:47;30195:131;30321:4;30195:131;:::i;:::-;30187:139;;29914:419;;;:::o;30339:194::-;30379:4;30399:20;30417:1;30399:20;:::i;:::-;30394:25;;30433:20;30451:1;30433:20;:::i;:::-;30428:25;;30477:1;30474;30470:9;30462:17;;30501:1;30495:4;30492:11;30489:37;;;30506:18;;:::i;:::-;30489:37;30339:194;;;;:::o;30539:191::-;30579:3;30598:20;30616:1;30598:20;:::i;:::-;30593:25;;30632:20;30650:1;30632:20;:::i;:::-;30627:25;;30675:1;30672;30668:9;30661:16;;30696:3;30693:1;30690:10;30687:36;;;30703:18;;:::i;:::-;30687:36;30539:191;;;;:::o;30736:177::-;30876:29;30872:1;30864:6;30860:14;30853:53;30736:177;:::o;30919:366::-;31061:3;31082:67;31146:2;31141:3;31082:67;:::i;:::-;31075:74;;31158:93;31247:3;31158:93;:::i;:::-;31276:2;31271:3;31267:12;31260:19;;30919:366;;;:::o;31291:419::-;31457:4;31495:2;31484:9;31480:18;31472:26;;31544:9;31538:4;31534:20;31530:1;31519:9;31515:17;31508:47;31572:131;31698:4;31572:131;:::i;:::-;31564:139;;31291:419;;;:::o;31716:831::-;31979:4;32017:3;32006:9;32002:19;31994:27;;32031:71;32099:1;32088:9;32084:17;32075:6;32031:71;:::i;:::-;32112:80;32188:2;32177:9;32173:18;32164:6;32112:80;:::i;:::-;32239:9;32233:4;32229:20;32224:2;32213:9;32209:18;32202:48;32267:108;32370:4;32361:6;32267:108;:::i;:::-;32259:116;;32385:72;32453:2;32442:9;32438:18;32429:6;32385:72;:::i;:::-;32467:73;32535:3;32524:9;32520:19;32511:6;32467:73;:::i;:::-;31716:831;;;;;;;;:::o;32553:180::-;32601:77;32598:1;32591:88;32698:4;32695:1;32688:15;32722:4;32719:1;32712:15;32739:185;32779:1;32796:20;32814:1;32796:20;:::i;:::-;32791:25;;32830:20;32848:1;32830:20;:::i;:::-;32825:25;;32869:1;32859:35;;32874:18;;:::i;:::-;32859:35;32916:1;32913;32909:9;32904:14;;32739:185;;;;:::o;32930:220::-;33070:34;33066:1;33058:6;33054:14;33047:58;33139:3;33134:2;33126:6;33122:15;33115:28;32930:220;:::o;33156:366::-;33298:3;33319:67;33383:2;33378:3;33319:67;:::i;:::-;33312:74;;33395:93;33484:3;33395:93;:::i;:::-;33513:2;33508:3;33504:12;33497:19;;33156:366;;;:::o;33528:419::-;33694:4;33732:2;33721:9;33717:18;33709:26;;33781:9;33775:4;33771:20;33767:1;33756:9;33752:17;33745:47;33809:131;33935:4;33809:131;:::i;:::-;33801:139;;33528:419;;;:::o
Swarm Source
ipfs://a1fb7be77341c6118bd100884aa49b8e08959b0a2f6d2271089f5dd25165efa4
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.