ERC-20
Overview
Max Total Supply
928,947,280.762172981478438588 RUBBER
Holders
16,000
Market
Price
$0.00 @ 0.000000 POL
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
4,405.286343612334 RUBBERValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
RubberDucky
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2024-03-27 */ //SPDX-License-Identifier: MIT pragma solidity 0.8.20; /** * @title Owner * @dev Set & change owner */ contract Ownable { address private owner; // event for EVM logging event OwnerSet(address indexed oldOwner, address indexed newOwner); // modifier to check if caller is owner modifier onlyOwner() { // If the first argument of 'require' evaluates to 'false', execution terminates and all // changes to the state and to Ether balances are reverted. // This used to consume all gas in old EVM versions, but not anymore. // It is often a good idea to use 'require' to check if functions are called correctly. // As a second argument, you can also provide an explanation about what went wrong. require(msg.sender == owner, "Caller is not owner"); _; } /** * @dev Set contract deployer as owner */ constructor() { owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor emit OwnerSet(address(0), owner); } /** * @dev Change owner * @param newOwner address of new owner */ function changeOwner(address newOwner) public onlyOwner { emit OwnerSet(owner, newOwner); owner = newOwner; } /** * @dev Return owner address * @return address of owner */ function getOwner() external view returns (address) { return owner; } } interface IERC20 { function totalSupply() external view returns (uint256); function symbol() external view returns(string memory); function name() external view returns(string memory); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Returns the number of decimal places */ function decimals() external view returns (uint8); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IFeeReceiver { function trigger() external; } interface ISwapper { function buy(address recipient, uint256 minOut) external payable; } /** Modular Upgradeable-Tokenomics Immutable Token System Created by DeFi Mark */ contract RubberDucky is IERC20, Ownable { // total supply uint256 private _totalSupply = 1_000_000_000 * 10**18; // token data string private constant _name = 'Rubber Ducky'; string private constant _symbol = 'RUBBER'; uint8 private constant _decimals = 18; // balances mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; // Taxation on transfers uint256 public buyFee = 0; uint256 public sellFee = 5000; uint256 public transferFee = 0; uint256 public constant TAX_DENOM = 10000; // permissions struct Permissions { bool isFeeExempt; bool isLiquidityPool; bool isEunuch; bool onPlanB; bool maxWalletExempt; } mapping ( address => Permissions ) public permissions; // Fee Recipients address public sellFeeRecipient; address public buyFeeRecipient; address public transferFeeRecipient; // Trigger Fee Recipients bool public triggerBuyRecipient = false; bool public triggerTransferRecipient = false; bool public triggerSellRecipient = false; // For Contract Set Up And Anti-Bot Measures uint256 public maxWallet; bool public blueBalls; uint256 internal blockBusted; bool internal precumCheckApplied; // Swapper Contract address public swapper; event PutOnPlanB(address indexed account); event TakenOffPlanB(address indexed account); constructor() { // set initial anti-bot measures maxWallet = ( _totalSupply * 5 ) / 1_000; // set blueBalls blueBalls = true; // exempt sender for tax-free initial distribution permissions[msg.sender].isFeeExempt = true; permissions[msg.sender].isEunuch = true; permissions[msg.sender].maxWalletExempt = true; // initial supply allocation _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } ///////////////////////////////// ///// ERC20 FUNCTIONS ///// ///////////////////////////////// function totalSupply() external view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function name() public pure override returns (string memory) { return _name; } function symbol() public pure override returns (string memory) { return _symbol; } function decimals() public pure override returns (uint8) { return _decimals; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** Transfer Function */ function transfer(address recipient, uint256 amount) external override returns (bool) { return _transfer(msg.sender, recipient, amount); } /** Transfer Function */ function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require( _allowances[sender][msg.sender] >= amount, 'Insufficient Allowance' ); _allowances[sender][msg.sender] -= amount; return _transfer(sender, recipient, amount); } ///////////////////////////////// ///// PUBLIC FUNCTIONS ///// ///////////////////////////////// function burn(uint256 amount) external { _burn(msg.sender, amount); } function burnFrom(address account, uint256 amount) external { require( _allowances[account][msg.sender] >= amount, 'Insufficient Allowance' ); _allowances[account][msg.sender] -= amount; _burn(account, amount); } function buyFor(address recipient, uint256 minOut) external payable { ISwapper(swapper).buy{value: msg.value}(recipient, minOut); } receive() external payable { ISwapper(swapper).buy{value: msg.value}(msg.sender, 1); } ///////////////////////////////// ///// OWNER FUNCTIONS ///// ///////////////////////////////// function setSwapper(address _swapper) external onlyOwner { swapper = _swapper; } function bust() external onlyOwner { require(blockBusted == 0, 'Already Busted'); blockBusted = block.number; blueBalls = false; } function withdrawTokens(address token) external onlyOwner { require(token != address(0), 'Zero'); bool s = IERC20(token).transfer(msg.sender, IERC20(token).balanceOf(address(this))); require(s); } function withdrawNative() external onlyOwner { (bool s,) = payable(msg.sender).call{value: address(this).balance}(""); require(s); } function setMaxWalletSize(uint256 newMaxWallet) external onlyOwner { require(newMaxWallet >= _totalSupply / 500, 'Max Wallet Too Small'); maxWallet = newMaxWallet; } function setIsEunuch(address user, bool isEunuch) external onlyOwner { require(user != address(0), 'Zero'); permissions[user].isEunuch = isEunuch; } function setMaxWalletExempt(address user, bool exempt) external onlyOwner { require(user != address(0), 'Zero'); permissions[user].maxWalletExempt = exempt; } function setTransferFeeRecipient(address recipient) external onlyOwner { require(recipient != address(0), 'Zero'); transferFeeRecipient = recipient; permissions[recipient].isFeeExempt = true; permissions[recipient].maxWalletExempt = true; } function setBuyFeeRecipient(address recipient) external onlyOwner { require(recipient != address(0), 'Zero'); buyFeeRecipient = recipient; permissions[recipient].isFeeExempt = true; permissions[recipient].maxWalletExempt = true; } function setSellFeeRecipient(address recipient) external onlyOwner { require(recipient != address(0), 'Zero'); sellFeeRecipient = recipient; permissions[recipient].isFeeExempt = true; permissions[recipient].maxWalletExempt = true; } function registerAutomatedMarketMaker(address account) external onlyOwner { require(account != address(0), 'Zero Address'); require(!permissions[account].isLiquidityPool, 'AMM'); permissions[account].isLiquidityPool = true; permissions[account].maxWalletExempt = true; } function unRegisterAutomatedMarketMaker(address account) external onlyOwner { require(account != address(0), 'Zero Address'); require(permissions[account].isLiquidityPool, 'Not AMM'); permissions[account].isLiquidityPool = false; permissions[account].maxWalletExempt = true; } function setAutoTriggers( bool autoBuyTrigger, bool autoTransferTrigger, bool autoSellTrigger ) external onlyOwner { triggerBuyRecipient = autoBuyTrigger; triggerTransferRecipient = autoTransferTrigger; triggerSellRecipient = autoSellTrigger; } function setFees(uint _buyFee, uint _sellFee, uint _transferFee) external onlyOwner { require( _buyFee <= 1000, 'Buy Fee Too High' ); require( _sellFee <= 1000, 'Sell Fee Too High' ); require( _transferFee <= 1000, 'Transfer Fee Too High' ); buyFee = _buyFee; sellFee = _sellFee; transferFee = _transferFee; } function setFeeExempt(address account, bool isExempt) external onlyOwner { require(account != address(0), 'Zero Address'); permissions[account].isFeeExempt = isExempt; } function getOffPlanB(address account) external onlyOwner { require(account != address(0), 'Zero Address'); require(permissions[account].onPlanB == true, 'Not On Plan B'); permissions[account].onPlanB = false; emit TakenOffPlanB(account); } ///////////////////////////////// ///// READ FUNCTIONS ///// ///////////////////////////////// function getTax(address sender, address recipient, uint256 amount) public view returns (uint256, address, bool) { if ( permissions[sender].isFeeExempt || permissions[recipient].isFeeExempt ) { return (0, address(0), false); } return permissions[recipient].isLiquidityPool ? ((amount * sellFee) / TAX_DENOM, sellFeeRecipient, triggerSellRecipient) : permissions[sender].isLiquidityPool ? ((amount * buyFee) / TAX_DENOM, buyFeeRecipient, triggerBuyRecipient) : ((amount * transferFee) / TAX_DENOM, transferFeeRecipient, triggerTransferRecipient); } ////////////////////////////////// ///// INTERNAL FUNCTIONS ///// ////////////////////////////////// /** Internal Transfer */ function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) { require( recipient != address(0), 'Zero Recipient' ); require( amount > 0, 'Zero Amount' ); require( amount <= balanceOf(sender), 'Insufficient Balance' ); require( blueBalls == false || permissions[msg.sender].isEunuch, 'Blue Balls' ); require( permissions[sender].onPlanB == false, 'Sender On Plan B' ); if (precumCheckApplied == false && blockBusted > 0) { if (block.number >= blockBusted + 30) { // set checks applied to be true so this code is never re-run precumCheckApplied = true; // set state to desireable amount maxWallet = _totalSupply / 100; sellFee = 500; } else if (block.number <= blockBusted + 7) { if (permissions[recipient].isLiquidityPool == false && permissions[recipient].isEunuch == false && permissions[recipient].maxWalletExempt == false) { permissions[recipient].onPlanB = true; emit PutOnPlanB(recipient); } } } // decrement sender balance _balances[sender] -= amount; // fee for transaction (uint256 fee, address feeDestination, bool trigger) = getTax(sender, recipient, amount); // give amount to recipient less fee uint256 sendAmount = amount - fee; require(sendAmount > 0, 'Zero Amount'); // allocate balance unchecked { _balances[recipient] += sendAmount; } emit Transfer(sender, recipient, sendAmount); // enforce max wallet if (permissions[recipient].maxWalletExempt == false && permissions[tx.origin].isEunuch == false) { require( _balances[recipient] <= maxWallet, 'Exceeds Max Wallet' ); } // allocate fee if any if (fee > 0) { // if recipient field is valid bool isValidRecipient = feeDestination != address(0) && feeDestination != address(this); // allocate amount to recipient address feeRecipient = isValidRecipient ? feeDestination : address(this); // allocate fee unchecked { _balances[feeRecipient] += fee; } emit Transfer(sender, feeRecipient, fee); // if valid and trigger is enabled, trigger tokenomics mid transfer if (trigger && isValidRecipient) { (bool success,) = feeRecipient.call( abi.encodeWithSelector(bytes4(keccak256(bytes('trigger()')))) ); success; } } return true; } function _burn(address account, uint256 amount) internal returns (bool) { require( account != address(0), 'Zero Address' ); require( amount > 0, 'Zero Amount' ); require( amount <= _balances[account], 'Insufficient Balance' ); // delete from balance and supply _balances[account] -= amount; _totalSupply -= amount; // emit transfer emit Transfer(account, address(0), amount); return true; } }
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":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PutOnPlanB","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TakenOffPlanB","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":"TAX_DENOM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blueBalls","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"minOut","type":"uint256"}],"name":"buyFor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getOffPlanB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"permissions","outputs":[{"internalType":"bool","name":"isFeeExempt","type":"bool"},{"internalType":"bool","name":"isLiquidityPool","type":"bool"},{"internalType":"bool","name":"isEunuch","type":"bool"},{"internalType":"bool","name":"onPlanB","type":"bool"},{"internalType":"bool","name":"maxWalletExempt","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"registerAutomatedMarketMaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"autoBuyTrigger","type":"bool"},{"internalType":"bool","name":"autoTransferTrigger","type":"bool"},{"internalType":"bool","name":"autoSellTrigger","type":"bool"}],"name":"setAutoTriggers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"setBuyFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isExempt","type":"bool"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"isEunuch","type":"bool"}],"name":"setIsEunuch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"setSellFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapper","type":"address"}],"name":"setSwapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"setTransferFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferFeeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"triggerBuyRecipient","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"triggerSellRecipient","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"triggerTransferRecipient","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unRegisterAutomatedMarketMaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526b033b2e3c9fd0803ce80000006001555f6004819055611388600555600655600a805462ffffff60a01b191690553480156200003e575f80fd5b505f80546001600160a01b0319163390811782556040519091907f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a735908290a36103e860015460056200009191906200011b565b6200009d919062000145565b600b55600c8054600160ff199091168117909155335f818152600760209081526040808320805464ff00ff00ff19166401000100011790559354600282528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000165565b80820281158282048414176200013f57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200016057634e487b7160e01b5f52601260045260245ffd5b500490565b6121bc80620001735f395ff3fe60806040526004361061026d575f3560e01c8063893d20e81161014a578063acb2ad6f116100be578063dd62ed3e11610078578063dd62ed3e14610847578063e87629f71461088b578063ea1644d5146108ab578063f145d6ff146108ca578063f89532a2146108ea578063f8b45b05146108ff575f80fd5b8063acb2ad6f14610783578063b568c1d314610798578063cab8cd65146107b1578063cec10c11146107c5578063d3c25899146107e4578063d7ad21ac14610803575f80fd5b806395d89b411161010f57806395d89b41146106ba5780639a44b9e3146106e85780639c82f2a414610707578063a6f9dae114610726578063a9059cbb14610745578063ac4dcb7614610764575f80fd5b8063893d20e8146106225780638ebfc7961461063e5780638ee1e4691461065d57806392a39d911461067c57806394d6f7cf1461069b575f80fd5b80633eb193e2116101e157806350431ce4116101a657806350431ce41461055e57806365fe050e1461057257806367ffa8281461059157806370a08231146105b05780637537ccb6146105e457806379cc679014610603575f80fd5b80633eb193e2146104cc57806342966c68146104eb578063470624021461050a578063498e7cc71461051f57806349df728c1461053f575f80fd5b806323b872dd1161023257806323b872dd146104035780632ac7b824146104225780632b14ca56146104415780632b3297f914610456578063304561bb14610492578063313ce567146104b1575f80fd5b806301e88208146102d957806306501a6a1461036657806306fdde0314610379578063095ea7b3146103b657806318160ddd146103e5575f80fd5b366102d557600e5460405163cce7ec1360e01b8152336004820152600160248201526101009091046001600160a01b03169063cce7ec139034906044015f604051808303818588803b1580156102c1575f80fd5b505af11580156102d3573d5f803e3d5ffd5b005b5f80fd5b3480156102e4575f80fd5b5061032f6102f3366004611e6a565b60076020525f908152604090205460ff808216916101008104821691620100008204811691630100000081048216916401000000009091041685565b60408051951515865293151560208601529115159284019290925290151560608301521515608082015260a0015b60405180910390f35b6102d3610374366004611e83565b610914565b348015610384575f80fd5b5060408051808201909152600c81526b527562626572204475636b7960a01b60208201525b60405161035d9190611ecd565b3480156103c1575f80fd5b506103d56103d0366004611e83565b610982565b604051901515815260200161035d565b3480156103f0575f80fd5b506001545b60405190815260200161035d565b34801561040e575f80fd5b506103d561041d366004611eff565b6109ee565b34801561042d575f80fd5b506102d361043c366004611e6a565b610aa9565b34801561044c575f80fd5b506103f560055481565b348015610461575f80fd5b50600e5461047a9061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161035d565b34801561049d575f80fd5b50600a5461047a906001600160a01b031681565b3480156104bc575f80fd5b506040516012815260200161035d565b3480156104d7575f80fd5b506102d36104e6366004611e6a565b610b79565b3480156104f6575f80fd5b506102d3610505366004611f38565b610c09565b348015610515575f80fd5b506103f560045481565b34801561052a575f80fd5b50600a546103d590600160b01b900460ff1681565b34801561054a575f80fd5b506102d3610559366004611e6a565b610c17565b348015610569575f80fd5b506102d3610d4f565b34801561057d575f80fd5b506102d361058c366004611e6a565b610dcc565b34801561059c575f80fd5b506102d36105ab366004611e6a565b610e99565b3480156105bb575f80fd5b506103f56105ca366004611e6a565b6001600160a01b03165f9081526002602052604090205490565b3480156105ef575f80fd5b506102d36105fe366004611f5c565b610f29565b34801561060e575f80fd5b506102d361061d366004611e83565b610fae565b34801561062d575f80fd5b505f546001600160a01b031661047a565b348015610649575f80fd5b506102d3610658366004611f5c565b611060565b348015610668575f80fd5b506102d3610677366004611f5c565b6110d9565b348015610687575f80fd5b5060085461047a906001600160a01b031681565b3480156106a6575f80fd5b506102d36106b5366004611e6a565b61115a565b3480156106c5575f80fd5b50604080518082019091526006815265292aa12122a960d11b60208201526103a9565b3480156106f3575f80fd5b5060095461047a906001600160a01b031681565b348015610712575f80fd5b506102d3610721366004611e6a565b611257565b348015610731575f80fd5b506102d3610740366004611e6a565b6112a8565b348015610750575f80fd5b506103d561075f366004611e83565b61132a565b34801561076f575f80fd5b506102d361077e366004611e6a565b61133d565b34801561078e575f80fd5b506103f560065481565b3480156107a3575f80fd5b50600c546103d59060ff1681565b3480156107bc575f80fd5b506102d36113cd565b3480156107d0575f80fd5b506102d36107df366004611f91565b611447565b3480156107ef575f80fd5b506102d36107fe366004611fba565b611553565b34801561080e575f80fd5b5061082261081d366004611eff565b6115c6565b604080519384526001600160a01b03909216602084015215159082015260600161035d565b348015610852575f80fd5b506103f5610861366004612002565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610896575f80fd5b50600a546103d590600160a01b900460ff1681565b3480156108b6575f80fd5b506102d36108c5366004611f38565b61171d565b3480156108d5575f80fd5b50600a546103d590600160a81b900460ff1681565b3480156108f5575f80fd5b506103f561271081565b34801561090a575f80fd5b506103f5600b5481565b600e5460405163cce7ec1360e01b81526001600160a01b038481166004830152602482018490526101009092049091169063cce7ec139034906044015f604051808303818588803b158015610967575f80fd5b505af1158015610979573d5f803e3d5ffd5b50505050505050565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109dc9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f908152600360209081526040808320338452909152812054821115610a5e5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b60448201526064015b60405180910390fd5b6001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610a90908490612047565b90915550610aa190508484846117a1565b949350505050565b5f546001600160a01b03163314610ad25760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b038116610af85760405162461bcd60e51b8152600401610a5590612087565b6001600160a01b0381165f90815260076020526040902054610100900460ff16610b4e5760405162461bcd60e51b81526020600482015260076024820152664e6f7420414d4d60c81b6044820152606401610a55565b6001600160a01b03165f908152600760205260409020805464ff0000ff001916640100000000179055565b5f546001600160a01b03163314610ba25760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b038116610bc85760405162461bcd60e51b8152600401610a55906120ad565b600980546001600160a01b0319166001600160a01b039290921691821790555f908152600760205260409020805464ff000000ff1916640100000001179055565b610c133382611d2a565b5050565b5f546001600160a01b03163314610c405760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b038116610c665760405162461bcd60e51b8152600401610a55906120ad565b6040516370a0823160e01b81523060048201525f906001600160a01b0383169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610cb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd891906120cb565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610d20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4491906120e2565b905080610c13575f80fd5b5f546001600160a01b03163314610d785760405162461bcd60e51b8152600401610a559061205a565b6040515f90339047908381818185875af1925050503d805f8114610db7576040519150601f19603f3d011682016040523d82523d5f602084013e610dbc565b606091505b5050905080610dc9575f80fd5b50565b5f546001600160a01b03163314610df55760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b038116610e1b5760405162461bcd60e51b8152600401610a5590612087565b6001600160a01b0381165f90815260076020526040902054610100900460ff1615610e6e5760405162461bcd60e51b8152602060048201526003602482015262414d4d60e81b6044820152606401610a55565b6001600160a01b03165f908152600760205260409020805464ff0000ff001916640100000100179055565b5f546001600160a01b03163314610ec25760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b038116610ee85760405162461bcd60e51b8152600401610a55906120ad565b600880546001600160a01b0319166001600160a01b039290921691821790555f908152600760205260409020805464ff000000ff1916640100000001179055565b5f546001600160a01b03163314610f525760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b038216610f785760405162461bcd60e51b8152600401610a55906120ad565b6001600160a01b039091165f90815260076020526040902080549115156401000000000264ff0000000019909216919091179055565b6001600160a01b0382165f9081526003602090815260408083203384529091529020548111156110195760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401610a55565b6001600160a01b0382165f9081526003602090815260408083203384529091528120805483929061104b908490612047565b9091555061105b90508282611d2a565b505050565b5f546001600160a01b031633146110895760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b0382166110af5760405162461bcd60e51b8152600401610a5590612087565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146111025760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b0382166111285760405162461bcd60e51b8152600401610a55906120ad565b6001600160a01b039091165f9081526007602052604090208054911515620100000262ff000019909216919091179055565b5f546001600160a01b031633146111835760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b0381166111a95760405162461bcd60e51b8152600401610a5590612087565b6001600160a01b0381165f908152600760205260409020546301000000900460ff16151560011461120c5760405162461bcd60e51b815260206004820152600d60248201526c2737ba1027b710283630b7102160991b6044820152606401610a55565b6001600160a01b0381165f81815260076020526040808220805463ff00000019169055517fee02c773bb3e231a294ef87e59a6f4e6a4a0d6c24447be84f993c38c8692b0fc9190a250565b5f546001600160a01b031633146112805760405162461bcd60e51b8152600401610a559061205a565b600e80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f546001600160a01b031633146112d15760405162461bcd60e51b8152600401610a559061205a565b5f80546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6113363384846117a1565b9392505050565b5f546001600160a01b031633146113665760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b03811661138c5760405162461bcd60e51b8152600401610a55906120ad565b600a80546001600160a01b0319166001600160a01b039290921691821790555f908152600760205260409020805464ff000000ff1916640100000001179055565b5f546001600160a01b031633146113f65760405162461bcd60e51b8152600401610a559061205a565b600d54156114375760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e48109d5cdd195960921b6044820152606401610a55565b43600d55600c805460ff19169055565b5f546001600160a01b031633146114705760405162461bcd60e51b8152600401610a559061205a565b6103e88311156114b55760405162461bcd60e51b815260206004820152601060248201526f084eaf2408ccaca40a8dede4090d2ced60831b6044820152606401610a55565b6103e88211156114fb5760405162461bcd60e51b81526020600482015260116024820152700a6cad8d8408ccaca40a8dede4090d2ced607b1b6044820152606401610a55565b6103e88111156115455760405162461bcd60e51b81526020600482015260156024820152740a8e4c2dce6cccae4408ccaca40a8dede4090d2ced605b1b6044820152606401610a55565b600492909255600555600655565b5f546001600160a01b0316331461157c5760405162461bcd60e51b8152600401610a559061205a565b600a8054911515600160b01b0260ff60b01b19931515600160a81b0260ff60a81b19951515600160a01b029590951661ffff60a01b19909316929092179390931791909116179055565b6001600160a01b0383165f908152600760205260408120548190819060ff168061160757506001600160a01b0385165f9081526007602052604090205460ff165b1561161957505f915081905080611714565b6001600160a01b0385165f90815260076020526040902054610100900460ff166116d5576001600160a01b0386165f90815260076020526040902054610100900460ff16611699576127106006548561167291906120fd565b61167c9190612114565b600a546001600160a01b03811690600160a81b900460ff1661170d565b612710600454856116aa91906120fd565b6116b49190612114565b600954600a546001600160a01b0390911690600160a01b900460ff1661170d565b612710600554856116e691906120fd565b6116f09190612114565b600854600a546001600160a01b0390911690600160b01b900460ff165b9250925092505b93509350939050565b5f546001600160a01b031633146117465760405162461bcd60e51b8152600401610a559061205a565b6101f46001546117569190612114565b81101561179c5760405162461bcd60e51b815260206004820152601460248201527313585e0815d85b1b195d08151bdbc814db585b1b60621b6044820152606401610a55565b600b55565b5f6001600160a01b0383166117e95760405162461bcd60e51b815260206004820152600e60248201526d16995c9bc8149958da5c1a595b9d60921b6044820152606401610a55565b5f82116118085760405162461bcd60e51b8152600401610a5590612133565b6001600160a01b0384165f908152600260205260409020548211156118665760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610a55565b600c5460ff16158061188c5750335f9081526007602052604090205462010000900460ff165b6118c55760405162461bcd60e51b815260206004820152600a602482015269426c75652042616c6c7360b01b6044820152606401610a55565b6001600160a01b0384165f908152600760205260409020546301000000900460ff16156119275760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b91027b710283630b7102160811b6044820152606401610a55565b600e5460ff1615801561193b57505f600d54115b15611a5e57600d5461194e90601e612158565b431061197f57600e805460ff191660019081179091555461197190606490612114565b600b556101f4600555611a5e565b600d5461198d906007612158565b4311611a5e576001600160a01b0383165f90815260076020526040902054610100900460ff161580156119de57506001600160a01b0383165f9081526007602052604090205462010000900460ff16155b8015611a0a57506001600160a01b0383165f90815260076020526040902054640100000000900460ff16155b15611a5e576001600160a01b0383165f81815260076020526040808220805463ff00000019166301000000179055517fff8b47e09c549a0ee6a01ee30a88c46f7a995d27943f49efa201cbbe90e10b9b9190a25b6001600160a01b0384165f9081526002602052604081208054849290611a85908490612047565b909155505f90508080611a998787876115c6565b919450925090505f611aab8487612047565b90505f8111611acc5760405162461bcd60e51b8152600401610a5590612133565b6001600160a01b038088165f81815260026020526040908190208054850190555190918a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b219085815260200190565b60405180910390a36001600160a01b0387165f90815260076020526040902054640100000000900460ff16158015611b6e5750325f9081526007602052604090205462010000900460ff16155b15611bd157600b546001600160a01b0388165f908152600260205260409020541115611bd15760405162461bcd60e51b8152602060048201526012602482015271115e18d959591cc813585e0815d85b1b195d60721b6044820152606401610a55565b8315611d1c575f6001600160a01b03841615801590611bf957506001600160a01b0384163014155b90505f81611c075730611c09565b845b6001600160a01b038082165f818152600260205260409081902080548b0190555192935091908c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c61908a815260200190565b60405180910390a3838015611c735750815b15611d1957604080518082018252600981526874726967676572282960b81b60209182015281516004815260248101835290810180516001600160e01b0316630ffd91a760e31b17905290515f916001600160a01b03841691611cd6919061216b565b5f604051808303815f865af19150503d805f8114611d0f576040519150601f19603f3d011682016040523d82523d5f602084013e611d14565b606091505b505050505b50505b506001979650505050505050565b5f6001600160a01b038316611d515760405162461bcd60e51b8152600401610a5590612087565b5f8211611d705760405162461bcd60e51b8152600401610a5590612133565b6001600160a01b0383165f90815260026020526040902054821115611dce5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610a55565b6001600160a01b0383165f9081526002602052604081208054849290611df5908490612047565b925050819055508160015f828254611e0d9190612047565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109dc565b80356001600160a01b0381168114611e65575f80fd5b919050565b5f60208284031215611e7a575f80fd5b61133682611e4f565b5f8060408385031215611e94575f80fd5b611e9d83611e4f565b946020939093013593505050565b5f5b83811015611ec5578181015183820152602001611ead565b50505f910152565b602081525f8251806020840152611eeb816040850160208701611eab565b601f01601f19169190910160400192915050565b5f805f60608486031215611f11575f80fd5b611f1a84611e4f565b9250611f2860208501611e4f565b9150604084013590509250925092565b5f60208284031215611f48575f80fd5b5035919050565b8015158114610dc9575f80fd5b5f8060408385031215611f6d575f80fd5b611f7683611e4f565b91506020830135611f8681611f4f565b809150509250929050565b5f805f60608486031215611fa3575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215611fcc575f80fd5b8335611fd781611f4f565b92506020840135611fe781611f4f565b91506040840135611ff781611f4f565b809150509250925092565b5f8060408385031215612013575f80fd5b61201c83611e4f565b915061202a60208401611e4f565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109e8576109e8612033565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b6020808252600c908201526b5a65726f204164647265737360a01b604082015260600190565b6020808252600490820152635a65726f60e01b604082015260600190565b5f602082840312156120db575f80fd5b5051919050565b5f602082840312156120f2575f80fd5b815161133681611f4f565b80820281158282048414176109e8576109e8612033565b5f8261212e57634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252600b908201526a16995c9bc8105b5bdd5b9d60aa1b604082015260600190565b808201808211156109e8576109e8612033565b5f825161217c818460208701611eab565b919091019291505056fea2646970667358221220d7ee75081527e980c10f0f2bb3cad5e06f581260e1f0b02a829153b0173386bb64736f6c63430008140033
Deployed Bytecode
0x60806040526004361061026d575f3560e01c8063893d20e81161014a578063acb2ad6f116100be578063dd62ed3e11610078578063dd62ed3e14610847578063e87629f71461088b578063ea1644d5146108ab578063f145d6ff146108ca578063f89532a2146108ea578063f8b45b05146108ff575f80fd5b8063acb2ad6f14610783578063b568c1d314610798578063cab8cd65146107b1578063cec10c11146107c5578063d3c25899146107e4578063d7ad21ac14610803575f80fd5b806395d89b411161010f57806395d89b41146106ba5780639a44b9e3146106e85780639c82f2a414610707578063a6f9dae114610726578063a9059cbb14610745578063ac4dcb7614610764575f80fd5b8063893d20e8146106225780638ebfc7961461063e5780638ee1e4691461065d57806392a39d911461067c57806394d6f7cf1461069b575f80fd5b80633eb193e2116101e157806350431ce4116101a657806350431ce41461055e57806365fe050e1461057257806367ffa8281461059157806370a08231146105b05780637537ccb6146105e457806379cc679014610603575f80fd5b80633eb193e2146104cc57806342966c68146104eb578063470624021461050a578063498e7cc71461051f57806349df728c1461053f575f80fd5b806323b872dd1161023257806323b872dd146104035780632ac7b824146104225780632b14ca56146104415780632b3297f914610456578063304561bb14610492578063313ce567146104b1575f80fd5b806301e88208146102d957806306501a6a1461036657806306fdde0314610379578063095ea7b3146103b657806318160ddd146103e5575f80fd5b366102d557600e5460405163cce7ec1360e01b8152336004820152600160248201526101009091046001600160a01b03169063cce7ec139034906044015f604051808303818588803b1580156102c1575f80fd5b505af11580156102d3573d5f803e3d5ffd5b005b5f80fd5b3480156102e4575f80fd5b5061032f6102f3366004611e6a565b60076020525f908152604090205460ff808216916101008104821691620100008204811691630100000081048216916401000000009091041685565b60408051951515865293151560208601529115159284019290925290151560608301521515608082015260a0015b60405180910390f35b6102d3610374366004611e83565b610914565b348015610384575f80fd5b5060408051808201909152600c81526b527562626572204475636b7960a01b60208201525b60405161035d9190611ecd565b3480156103c1575f80fd5b506103d56103d0366004611e83565b610982565b604051901515815260200161035d565b3480156103f0575f80fd5b506001545b60405190815260200161035d565b34801561040e575f80fd5b506103d561041d366004611eff565b6109ee565b34801561042d575f80fd5b506102d361043c366004611e6a565b610aa9565b34801561044c575f80fd5b506103f560055481565b348015610461575f80fd5b50600e5461047a9061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161035d565b34801561049d575f80fd5b50600a5461047a906001600160a01b031681565b3480156104bc575f80fd5b506040516012815260200161035d565b3480156104d7575f80fd5b506102d36104e6366004611e6a565b610b79565b3480156104f6575f80fd5b506102d3610505366004611f38565b610c09565b348015610515575f80fd5b506103f560045481565b34801561052a575f80fd5b50600a546103d590600160b01b900460ff1681565b34801561054a575f80fd5b506102d3610559366004611e6a565b610c17565b348015610569575f80fd5b506102d3610d4f565b34801561057d575f80fd5b506102d361058c366004611e6a565b610dcc565b34801561059c575f80fd5b506102d36105ab366004611e6a565b610e99565b3480156105bb575f80fd5b506103f56105ca366004611e6a565b6001600160a01b03165f9081526002602052604090205490565b3480156105ef575f80fd5b506102d36105fe366004611f5c565b610f29565b34801561060e575f80fd5b506102d361061d366004611e83565b610fae565b34801561062d575f80fd5b505f546001600160a01b031661047a565b348015610649575f80fd5b506102d3610658366004611f5c565b611060565b348015610668575f80fd5b506102d3610677366004611f5c565b6110d9565b348015610687575f80fd5b5060085461047a906001600160a01b031681565b3480156106a6575f80fd5b506102d36106b5366004611e6a565b61115a565b3480156106c5575f80fd5b50604080518082019091526006815265292aa12122a960d11b60208201526103a9565b3480156106f3575f80fd5b5060095461047a906001600160a01b031681565b348015610712575f80fd5b506102d3610721366004611e6a565b611257565b348015610731575f80fd5b506102d3610740366004611e6a565b6112a8565b348015610750575f80fd5b506103d561075f366004611e83565b61132a565b34801561076f575f80fd5b506102d361077e366004611e6a565b61133d565b34801561078e575f80fd5b506103f560065481565b3480156107a3575f80fd5b50600c546103d59060ff1681565b3480156107bc575f80fd5b506102d36113cd565b3480156107d0575f80fd5b506102d36107df366004611f91565b611447565b3480156107ef575f80fd5b506102d36107fe366004611fba565b611553565b34801561080e575f80fd5b5061082261081d366004611eff565b6115c6565b604080519384526001600160a01b03909216602084015215159082015260600161035d565b348015610852575f80fd5b506103f5610861366004612002565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610896575f80fd5b50600a546103d590600160a01b900460ff1681565b3480156108b6575f80fd5b506102d36108c5366004611f38565b61171d565b3480156108d5575f80fd5b50600a546103d590600160a81b900460ff1681565b3480156108f5575f80fd5b506103f561271081565b34801561090a575f80fd5b506103f5600b5481565b600e5460405163cce7ec1360e01b81526001600160a01b038481166004830152602482018490526101009092049091169063cce7ec139034906044015f604051808303818588803b158015610967575f80fd5b505af1158015610979573d5f803e3d5ffd5b50505050505050565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109dc9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f908152600360209081526040808320338452909152812054821115610a5e5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b60448201526064015b60405180910390fd5b6001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610a90908490612047565b90915550610aa190508484846117a1565b949350505050565b5f546001600160a01b03163314610ad25760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b038116610af85760405162461bcd60e51b8152600401610a5590612087565b6001600160a01b0381165f90815260076020526040902054610100900460ff16610b4e5760405162461bcd60e51b81526020600482015260076024820152664e6f7420414d4d60c81b6044820152606401610a55565b6001600160a01b03165f908152600760205260409020805464ff0000ff001916640100000000179055565b5f546001600160a01b03163314610ba25760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b038116610bc85760405162461bcd60e51b8152600401610a55906120ad565b600980546001600160a01b0319166001600160a01b039290921691821790555f908152600760205260409020805464ff000000ff1916640100000001179055565b610c133382611d2a565b5050565b5f546001600160a01b03163314610c405760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b038116610c665760405162461bcd60e51b8152600401610a55906120ad565b6040516370a0823160e01b81523060048201525f906001600160a01b0383169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610cb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd891906120cb565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610d20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4491906120e2565b905080610c13575f80fd5b5f546001600160a01b03163314610d785760405162461bcd60e51b8152600401610a559061205a565b6040515f90339047908381818185875af1925050503d805f8114610db7576040519150601f19603f3d011682016040523d82523d5f602084013e610dbc565b606091505b5050905080610dc9575f80fd5b50565b5f546001600160a01b03163314610df55760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b038116610e1b5760405162461bcd60e51b8152600401610a5590612087565b6001600160a01b0381165f90815260076020526040902054610100900460ff1615610e6e5760405162461bcd60e51b8152602060048201526003602482015262414d4d60e81b6044820152606401610a55565b6001600160a01b03165f908152600760205260409020805464ff0000ff001916640100000100179055565b5f546001600160a01b03163314610ec25760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b038116610ee85760405162461bcd60e51b8152600401610a55906120ad565b600880546001600160a01b0319166001600160a01b039290921691821790555f908152600760205260409020805464ff000000ff1916640100000001179055565b5f546001600160a01b03163314610f525760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b038216610f785760405162461bcd60e51b8152600401610a55906120ad565b6001600160a01b039091165f90815260076020526040902080549115156401000000000264ff0000000019909216919091179055565b6001600160a01b0382165f9081526003602090815260408083203384529091529020548111156110195760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401610a55565b6001600160a01b0382165f9081526003602090815260408083203384529091528120805483929061104b908490612047565b9091555061105b90508282611d2a565b505050565b5f546001600160a01b031633146110895760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b0382166110af5760405162461bcd60e51b8152600401610a5590612087565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146111025760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b0382166111285760405162461bcd60e51b8152600401610a55906120ad565b6001600160a01b039091165f9081526007602052604090208054911515620100000262ff000019909216919091179055565b5f546001600160a01b031633146111835760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b0381166111a95760405162461bcd60e51b8152600401610a5590612087565b6001600160a01b0381165f908152600760205260409020546301000000900460ff16151560011461120c5760405162461bcd60e51b815260206004820152600d60248201526c2737ba1027b710283630b7102160991b6044820152606401610a55565b6001600160a01b0381165f81815260076020526040808220805463ff00000019169055517fee02c773bb3e231a294ef87e59a6f4e6a4a0d6c24447be84f993c38c8692b0fc9190a250565b5f546001600160a01b031633146112805760405162461bcd60e51b8152600401610a559061205a565b600e80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f546001600160a01b031633146112d15760405162461bcd60e51b8152600401610a559061205a565b5f80546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6113363384846117a1565b9392505050565b5f546001600160a01b031633146113665760405162461bcd60e51b8152600401610a559061205a565b6001600160a01b03811661138c5760405162461bcd60e51b8152600401610a55906120ad565b600a80546001600160a01b0319166001600160a01b039290921691821790555f908152600760205260409020805464ff000000ff1916640100000001179055565b5f546001600160a01b031633146113f65760405162461bcd60e51b8152600401610a559061205a565b600d54156114375760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e48109d5cdd195960921b6044820152606401610a55565b43600d55600c805460ff19169055565b5f546001600160a01b031633146114705760405162461bcd60e51b8152600401610a559061205a565b6103e88311156114b55760405162461bcd60e51b815260206004820152601060248201526f084eaf2408ccaca40a8dede4090d2ced60831b6044820152606401610a55565b6103e88211156114fb5760405162461bcd60e51b81526020600482015260116024820152700a6cad8d8408ccaca40a8dede4090d2ced607b1b6044820152606401610a55565b6103e88111156115455760405162461bcd60e51b81526020600482015260156024820152740a8e4c2dce6cccae4408ccaca40a8dede4090d2ced605b1b6044820152606401610a55565b600492909255600555600655565b5f546001600160a01b0316331461157c5760405162461bcd60e51b8152600401610a559061205a565b600a8054911515600160b01b0260ff60b01b19931515600160a81b0260ff60a81b19951515600160a01b029590951661ffff60a01b19909316929092179390931791909116179055565b6001600160a01b0383165f908152600760205260408120548190819060ff168061160757506001600160a01b0385165f9081526007602052604090205460ff165b1561161957505f915081905080611714565b6001600160a01b0385165f90815260076020526040902054610100900460ff166116d5576001600160a01b0386165f90815260076020526040902054610100900460ff16611699576127106006548561167291906120fd565b61167c9190612114565b600a546001600160a01b03811690600160a81b900460ff1661170d565b612710600454856116aa91906120fd565b6116b49190612114565b600954600a546001600160a01b0390911690600160a01b900460ff1661170d565b612710600554856116e691906120fd565b6116f09190612114565b600854600a546001600160a01b0390911690600160b01b900460ff165b9250925092505b93509350939050565b5f546001600160a01b031633146117465760405162461bcd60e51b8152600401610a559061205a565b6101f46001546117569190612114565b81101561179c5760405162461bcd60e51b815260206004820152601460248201527313585e0815d85b1b195d08151bdbc814db585b1b60621b6044820152606401610a55565b600b55565b5f6001600160a01b0383166117e95760405162461bcd60e51b815260206004820152600e60248201526d16995c9bc8149958da5c1a595b9d60921b6044820152606401610a55565b5f82116118085760405162461bcd60e51b8152600401610a5590612133565b6001600160a01b0384165f908152600260205260409020548211156118665760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610a55565b600c5460ff16158061188c5750335f9081526007602052604090205462010000900460ff165b6118c55760405162461bcd60e51b815260206004820152600a602482015269426c75652042616c6c7360b01b6044820152606401610a55565b6001600160a01b0384165f908152600760205260409020546301000000900460ff16156119275760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b91027b710283630b7102160811b6044820152606401610a55565b600e5460ff1615801561193b57505f600d54115b15611a5e57600d5461194e90601e612158565b431061197f57600e805460ff191660019081179091555461197190606490612114565b600b556101f4600555611a5e565b600d5461198d906007612158565b4311611a5e576001600160a01b0383165f90815260076020526040902054610100900460ff161580156119de57506001600160a01b0383165f9081526007602052604090205462010000900460ff16155b8015611a0a57506001600160a01b0383165f90815260076020526040902054640100000000900460ff16155b15611a5e576001600160a01b0383165f81815260076020526040808220805463ff00000019166301000000179055517fff8b47e09c549a0ee6a01ee30a88c46f7a995d27943f49efa201cbbe90e10b9b9190a25b6001600160a01b0384165f9081526002602052604081208054849290611a85908490612047565b909155505f90508080611a998787876115c6565b919450925090505f611aab8487612047565b90505f8111611acc5760405162461bcd60e51b8152600401610a5590612133565b6001600160a01b038088165f81815260026020526040908190208054850190555190918a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b219085815260200190565b60405180910390a36001600160a01b0387165f90815260076020526040902054640100000000900460ff16158015611b6e5750325f9081526007602052604090205462010000900460ff16155b15611bd157600b546001600160a01b0388165f908152600260205260409020541115611bd15760405162461bcd60e51b8152602060048201526012602482015271115e18d959591cc813585e0815d85b1b195d60721b6044820152606401610a55565b8315611d1c575f6001600160a01b03841615801590611bf957506001600160a01b0384163014155b90505f81611c075730611c09565b845b6001600160a01b038082165f818152600260205260409081902080548b0190555192935091908c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c61908a815260200190565b60405180910390a3838015611c735750815b15611d1957604080518082018252600981526874726967676572282960b81b60209182015281516004815260248101835290810180516001600160e01b0316630ffd91a760e31b17905290515f916001600160a01b03841691611cd6919061216b565b5f604051808303815f865af19150503d805f8114611d0f576040519150601f19603f3d011682016040523d82523d5f602084013e611d14565b606091505b505050505b50505b506001979650505050505050565b5f6001600160a01b038316611d515760405162461bcd60e51b8152600401610a5590612087565b5f8211611d705760405162461bcd60e51b8152600401610a5590612133565b6001600160a01b0383165f90815260026020526040902054821115611dce5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610a55565b6001600160a01b0383165f9081526002602052604081208054849290611df5908490612047565b925050819055508160015f828254611e0d9190612047565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109dc565b80356001600160a01b0381168114611e65575f80fd5b919050565b5f60208284031215611e7a575f80fd5b61133682611e4f565b5f8060408385031215611e94575f80fd5b611e9d83611e4f565b946020939093013593505050565b5f5b83811015611ec5578181015183820152602001611ead565b50505f910152565b602081525f8251806020840152611eeb816040850160208701611eab565b601f01601f19169190910160400192915050565b5f805f60608486031215611f11575f80fd5b611f1a84611e4f565b9250611f2860208501611e4f565b9150604084013590509250925092565b5f60208284031215611f48575f80fd5b5035919050565b8015158114610dc9575f80fd5b5f8060408385031215611f6d575f80fd5b611f7683611e4f565b91506020830135611f8681611f4f565b809150509250929050565b5f805f60608486031215611fa3575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215611fcc575f80fd5b8335611fd781611f4f565b92506020840135611fe781611f4f565b91506040840135611ff781611f4f565b809150509250925092565b5f8060408385031215612013575f80fd5b61201c83611e4f565b915061202a60208401611e4f565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109e8576109e8612033565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b6020808252600c908201526b5a65726f204164647265737360a01b604082015260600190565b6020808252600490820152635a65726f60e01b604082015260600190565b5f602082840312156120db575f80fd5b5051919050565b5f602082840312156120f2575f80fd5b815161133681611f4f565b80820281158282048414176109e8576109e8612033565b5f8261212e57634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252600b908201526a16995c9bc8105b5bdd5b9d60aa1b604082015260600190565b808201808211156109e8576109e8612033565b5f825161217c818460208701611eab565b919091019291505056fea2646970667358221220d7ee75081527e980c10f0f2bb3cad5e06f581260e1f0b02a829153b0173386bb64736f6c63430008140033
Deployed Bytecode Sourcemap
4609:13204:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9009:7;;9000:54;;-1:-1:-1;;;9000:54:0;;9040:10;9000:54;;;196:51:1;9009:7:0;263:18:1;;;256:34;9009:7:0;;;;-1:-1:-1;;;;;9009:7:0;;9000:21;;9029:9;;169:18:1;;9000:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4609:13204;;;;5461:53;;;;;;;;;;-1:-1:-1;5461:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;924:14:1;;917:22;899:41;;983:14;;976:22;971:2;956:18;;949:50;1042:14;;1035:22;1015:18;;;1008:50;;;;1101:14;;1094:22;1089:2;1074:18;;1067:50;1161:14;1154:22;1148:3;1133:19;;1126:51;886:3;871:19;5461:53:0;;;;;;;;8809:145;;;;;;:::i;:::-;;:::i;7208:92::-;;;;;;;;;;-1:-1:-1;7287:5:0;;;;;;;;;;;;-1:-1:-1;;;7287:5:0;;;;7208:92;;;;;;;:::i;7512:216::-;;;;;;;;;;-1:-1:-1;7512:216:0;;;;;:::i;:::-;;:::i;:::-;;;2268:14:1;;2261:22;2243:41;;2231:2;2216:18;7512:216:0;2103:187:1;6858:88:0;;;;;;;;;;-1:-1:-1;6931:12:0;;6858:88;;;2441:25:1;;;2429:2;2414:18;6858:88:0;2295:177:1;7956:344:0;;;;;;;;;;-1:-1:-1;7956:344:0;;;;;:::i;:::-;;:::i;11592:317::-;;;;;;;;;;-1:-1:-1;11592:317:0;;;;;:::i;:::-;;:::i;5131:40::-;;;;;;;;;;;;;;;;6052:22;;;;;;;;;;-1:-1:-1;6052:22:0;;;;;;;-1:-1:-1;;;;;6052:22:0;;;;;;-1:-1:-1;;;;;2974:32:1;;;2956:51;;2944:2;2929:18;6052:22:0;2810:203:1;5621:35:0;;;;;;;;;;-1:-1:-1;5621:35:0;;;;-1:-1:-1;;;;;5621:35:0;;;7412:92;;;;;;;;;;-1:-1:-1;7412:92:0;;4898:2;3160:36:1;;3148:2;3133:18;7412:92:0;3018:184:1;10713:271:0;;;;;;;;;;-1:-1:-1;10713:271:0;;;;;:::i;:::-;;:::i;8431:83::-;;;;;;;;;;-1:-1:-1;8431:83:0;;;;;:::i;:::-;;:::i;5087:37::-;;;;;;;;;;;;;;;;5793:40;;;;;;;;;;-1:-1:-1;5793:40:0;;;;-1:-1:-1;;;5793:40:0;;;;;;9461:228;;;;;;;;;;-1:-1:-1;9461:228:0;;;;;:::i;:::-;;:::i;9697:155::-;;;;;;;;;;;;;:::i;11273:311::-;;;;;;;;;;-1:-1:-1;11273:311:0;;;;;:::i;:::-;;:::i;10992:273::-;;;;;;;;;;-1:-1:-1;10992:273:0;;;;;:::i;:::-;;:::i;6952:105::-;;;;;;;;;;-1:-1:-1;6952:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7036:18:0;7018:7;7036:18;;;:9;:18;;;;;;;6952:105;10235:181;;;;;;;;;;-1:-1:-1;10235:181:0;;;;;:::i;:::-;;:::i;8522:279::-;;;;;;;;;;-1:-1:-1;8522:279:0;;;;;:::i;:::-;;:::i;1437:83::-;;;;;;;;;;-1:-1:-1;1480:7:0;1507:5;-1:-1:-1;;;;;1507:5:0;1437:83;;12716:192;;;;;;;;;;-1:-1:-1;12716:192:0;;;;;:::i;:::-;;:::i;10056:171::-;;;;;;;;;;-1:-1:-1;10056:171:0;;;;;:::i;:::-;;:::i;5546:31::-;;;;;;;;;;-1:-1:-1;5546:31:0;;;;-1:-1:-1;;;;;5546:31:0;;;12916:280;;;;;;;;;;-1:-1:-1;12916:280:0;;;;;:::i;:::-;;:::i;7308:96::-;;;;;;;;;;-1:-1:-1;7389:7:0;;;;;;;;;;;;-1:-1:-1;;;7389:7:0;;;;7308:96;;5584:30;;;;;;;;;;-1:-1:-1;5584:30:0;;;;-1:-1:-1;;;;;5584:30:0;;;9189:94;;;;;;;;;;-1:-1:-1;9189:94:0;;;;;:::i;:::-;;:::i;1211:132::-;;;;;;;;;;-1:-1:-1;1211:132:0;;;;;:::i;:::-;;:::i;7766:152::-;;;;;;;;;;-1:-1:-1;7766:152:0;;;;;:::i;:::-;;:::i;10424:281::-;;;;;;;;;;-1:-1:-1;10424:281:0;;;;;:::i;:::-;;:::i;5178:37::-;;;;;;;;;;;;;;;;5923:21;;;;;;;;;;-1:-1:-1;5923:21:0;;;;;;;;9291:162;;;;;;;;;;;;;:::i;12233:475::-;;;;;;;;;;-1:-1:-1;12233:475:0;;;;;:::i;:::-;;:::i;11917:308::-;;;;;;;;;;-1:-1:-1;11917:308:0;;;;;:::i;:::-;;:::i;13329:659::-;;;;;;;;;;-1:-1:-1;13329:659:0;;;;;:::i;:::-;;:::i;:::-;;;;4868:25:1;;;-1:-1:-1;;;;;4929:32:1;;;4924:2;4909:18;;4902:60;5005:14;4998:22;4978:18;;;4971:50;4856:2;4841:18;13329:659:0;4672:355:1;7063:133:0;;;;;;;;;;-1:-1:-1;7063:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7165:19:0;;;7147:7;7165:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7063:133;5696:39;;;;;;;;;;-1:-1:-1;5696:39:0;;;;-1:-1:-1;;;5696:39:0;;;;;;9860:188;;;;;;;;;;-1:-1:-1;9860:188:0;;;;;:::i;:::-;;:::i;5742:44::-;;;;;;;;;;-1:-1:-1;5742:44:0;;;;-1:-1:-1;;;5742:44:0;;;;;;5222:41;;;;;;;;;;;;5258:5;5222:41;;5892:24;;;;;;;;;;;;;;;;8809:145;8897:7;;8888:58;;-1:-1:-1;;;8888:58:0;;-1:-1:-1;;;;;214:32:1;;;8888:58:0;;;196:51:1;263:18;;;256:34;;;8897:7:0;;;;;;;;8888:21;;8917:9;;169:18:1;;8888:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8809:145;;:::o;7512:216::-;7616:10;7587:4;7604:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7604:32:0;;;;;;;;;;:41;;;7661:37;7587:4;;7604:32;;7661:37;;;;7639:6;2441:25:1;;2429:2;2414:18;;2295:177;7661:37:0;;;;;;;;-1:-1:-1;7716:4:0;7512:216;;;;;:::o;7956:344::-;-1:-1:-1;;;;;8095:19:0;;8056:4;8095:19;;;:11;:19;;;;;;;;8115:10;8095:31;;;;;;;;:41;-1:-1:-1;8095:41:0;8073:113;;;;-1:-1:-1;;;8073:113:0;;5778:2:1;8073:113:0;;;5760:21:1;5817:2;5797:18;;;5790:30;-1:-1:-1;;;5836:18:1;;;5829:52;5898:18;;8073:113:0;;;;;;;;;-1:-1:-1;;;;;8197:19:0;;;;;;:11;:19;;;;;;;;8217:10;8197:31;;;;;;;:41;;8232:6;;8197:19;:41;;8232:6;;8197:41;:::i;:::-;;;;-1:-1:-1;8256:36:0;;-1:-1:-1;8266:6:0;8274:9;8285:6;8256:9;:36::i;:::-;8249:43;7956:344;-1:-1:-1;;;;7956:344:0:o;11592:317::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11687:21:0;::::1;11679:46;;;;-1:-1:-1::0;;;11679:46:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11744:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;:36;::::1;::::0;::::1;;;11736:56;;;::::0;-1:-1:-1;;;11736:56:0;;7083:2:1;11736:56:0::1;::::0;::::1;7065:21:1::0;7122:1;7102:18;;;7095:29;-1:-1:-1;;;7140:18:1;;;7133:37;7187:18;;11736:56:0::1;6881:330:1::0;11736:56:0::1;-1:-1:-1::0;;;;;11803:20:0::1;11842:5;11803:20:::0;;;:11:::1;:20;::::0;;;;:44;;-1:-1:-1;;11858:43:0;;::::1;::::0;;11592:317::o;10713:271::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10798:23:0;::::1;10790:40;;;;-1:-1:-1::0;;;10790:40:0::1;;;;;;;:::i;:::-;10841:15;:27:::0;;-1:-1:-1;;;;;;10841:27:0::1;-1:-1:-1::0;;;;;10841:27:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;10879:22:0;;;:11:::1;:22;::::0;;;;:41;;-1:-1:-1;;10931:45:0;;;;;10713:271::o;8431:83::-;8481:25;8487:10;8499:6;8481:5;:25::i;:::-;;8431:83;:::o;9461:228::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9538:19:0;::::1;9530:36;;;;-1:-1:-1::0;;;9530:36:0::1;;;;;;;:::i;:::-;9621:38;::::0;-1:-1:-1;;;9621:38:0;;9653:4:::1;9621:38;::::0;::::1;2956:51:1::0;9577:6:0::1;::::0;-1:-1:-1;;;;;9586:22:0;::::1;::::0;::::1;::::0;9609:10:::1;::::0;9586:22;;9621:23:::1;::::0;2929:18:1;;9621:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9586:74;::::0;-1:-1:-1;;;;;;9586:74:0::1;::::0;;;;;;-1:-1:-1;;;;;214:32:1;;;9586:74:0::1;::::0;::::1;196:51:1::0;263:18;;;256:34;169:18;;9586:74:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9577:83;;9679:1;9671:10;;;::::0;::::1;9697:155:::0;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;9765:58:::1;::::0;9754:6:::1;::::0;9773:10:::1;::::0;9797:21:::1;::::0;9754:6;9765:58;9754:6;9765:58;9797:21;9773:10;9765:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9753:70;;;9842:1;9834:10;;;::::0;::::1;;9742:110;9697:155::o:0;11273:311::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11366:21:0;::::1;11358:46;;;;-1:-1:-1::0;;;11358:46:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11424:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;:36;::::1;::::0;::::1;;;11423:37;11415:53;;;::::0;-1:-1:-1;;;11415:53:0;;8399:2:1;11415:53:0::1;::::0;::::1;8381:21:1::0;8438:1;8418:18;;;8411:29;-1:-1:-1;;;8456:18:1;;;8449:33;8499:18;;11415:53:0::1;8197:326:1::0;11415:53:0::1;-1:-1:-1::0;;;;;11479:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:43;;-1:-1:-1;;11533:43:0;;;;;11273:311::o;10992:273::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11078:23:0;::::1;11070:40;;;;-1:-1:-1::0;;;11070:40:0::1;;;;;;;:::i;:::-;11121:16;:28:::0;;-1:-1:-1;;;;;;11121:28:0::1;-1:-1:-1::0;;;;;11121:28:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;11160:22:0;;;:11:::1;:22;::::0;;;;:41;;-1:-1:-1;;11212:45:0;;;;;10992:273::o;10235:181::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10328:18:0;::::1;10320:35;;;;-1:-1:-1::0;;;10320:35:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10366:17:0;;::::1;;::::0;;;:11:::1;:17;::::0;;;;:42;;;::::1;;::::0;::::1;-1:-1:-1::0;;10366:42:0;;::::1;::::0;;;::::1;::::0;;10235:181::o;8522:279::-;-1:-1:-1;;;;;8615:20:0;;;;;;:11;:20;;;;;;;;8636:10;8615:32;;;;;;;;:42;-1:-1:-1;8615:42:0;8593:114;;;;-1:-1:-1;;;8593:114:0;;5778:2:1;8593:114:0;;;5760:21:1;5817:2;5797:18;;;5790:30;-1:-1:-1;;;5836:18:1;;;5829:52;5898:18;;8593:114:0;5576:346:1;8593:114:0;-1:-1:-1;;;;;8718:20:0;;;;;;:11;:20;;;;;;;;8739:10;8718:32;;;;;;;:42;;8754:6;;8718:20;:42;;8754:6;;8718:42;:::i;:::-;;;;-1:-1:-1;8771:22:0;;-1:-1:-1;8777:7:0;8786:6;8771:5;:22::i;:::-;;8522:279;;:::o;12716:192::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12808:21:0;::::1;12800:46;;;;-1:-1:-1::0;;;12800:46:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12857:20:0;;;::::1;;::::0;;;:11:::1;:20;::::0;;;;:43;;-1:-1:-1;;12857:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12716:192::o;10056:171::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10144:18:0;::::1;10136:35;;;;-1:-1:-1::0;;;10136:35:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10182:17:0;;::::1;;::::0;;;:11:::1;:17;::::0;;;;:37;;;::::1;;::::0;::::1;-1:-1:-1::0;;10182:37:0;;::::1;::::0;;;::::1;::::0;;10056:171::o;12916:280::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12992:21:0;::::1;12984:46;;;;-1:-1:-1::0;;;12984:46:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13049:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;:28;;;::::1;;;:36;;13081:4;13049:36;13041:62;;;::::0;-1:-1:-1;;;13041:62:0;;8730:2:1;13041:62:0::1;::::0;::::1;8712:21:1::0;8769:2;8749:18;;;8742:30;-1:-1:-1;;;8788:18:1;;;8781:43;8841:18;;13041:62:0::1;8528:337:1::0;13041:62:0::1;-1:-1:-1::0;;;;;13114:20:0;::::1;13145:5;13114:20:::0;;;:11:::1;:20;::::0;;;;;:36;;-1:-1:-1;;13114:36:0::1;::::0;;13166:22;::::1;::::0;13145:5;13166:22:::1;12916:280:::0;:::o;9189:94::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;9257:7:::1;:18:::0;;-1:-1:-1;;;;;9257:18:0;;::::1;;;-1:-1:-1::0;;;;;;9257:18:0;;::::1;::::0;;;::::1;::::0;;9189:94::o;1211:132::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;1292:5:::1;::::0;;1283:25:::1;::::0;-1:-1:-1;;;;;1283:25:0;;::::1;::::0;1292:5;::::1;::::0;1283:25:::1;::::0;::::1;1319:5;:16:::0;;-1:-1:-1;;;;;;1319:16:0::1;-1:-1:-1::0;;;;;1319:16:0;;;::::1;::::0;;;::::1;::::0;;1211:132::o;7766:152::-;7846:4;7870:40;7880:10;7892:9;7903:6;7870:9;:40::i;:::-;7863:47;7766:152;-1:-1:-1;;;7766:152:0:o;10424:281::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10514:23:0;::::1;10506:40;;;;-1:-1:-1::0;;;10506:40:0::1;;;;;;;:::i;:::-;10557:20;:32:::0;;-1:-1:-1;;;;;;10557:32:0::1;-1:-1:-1::0;;;;;10557:32:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;10600:22:0;;;:11:::1;:22;::::0;;;;:41;;-1:-1:-1;;10652:45:0;;;;;10424:281::o;9291:162::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;9345:11:::1;::::0;:16;9337:43:::1;;;::::0;-1:-1:-1;;;9337:43:0;;9072:2:1;9337:43:0::1;::::0;::::1;9054:21:1::0;9111:2;9091:18;;;9084:30;-1:-1:-1;;;9130:18:1;;;9123:44;9184:18;;9337:43:0::1;8870:338:1::0;9337:43:0::1;9405:12;9391:11;:26:::0;9428:9:::1;:17:::0;;-1:-1:-1;;9428:17:0::1;::::0;;9291:162::o;12233:475::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;12361:4:::1;12350:7;:15;;12328:81;;;::::0;-1:-1:-1;;;12328:81:0;;9415:2:1;12328:81:0::1;::::0;::::1;9397:21:1::0;9454:2;9434:18;;;9427:30;-1:-1:-1;;;9473:18:1;;;9466:46;9529:18;;12328:81:0::1;9213:340:1::0;12328:81:0::1;12454:4;12442:8;:16;;12420:83;;;::::0;-1:-1:-1;;;12420:83:0;;9760:2:1;12420:83:0::1;::::0;::::1;9742:21:1::0;9799:2;9779:18;;;9772:30;-1:-1:-1;;;9818:18:1;;;9811:47;9875:18;;12420:83:0::1;9558:341:1::0;12420:83:0::1;12552:4;12536:12;:20;;12514:91;;;::::0;-1:-1:-1;;;12514:91:0;;10106:2:1;12514:91:0::1;::::0;::::1;10088:21:1::0;10145:2;10125:18;;;10118:30;-1:-1:-1;;;10164:18:1;;;10157:51;10225:18;;12514:91:0::1;9904:345:1::0;12514:91:0::1;12618:6;:16:::0;;;;12645:7:::1;:18:::0;12674:11:::1;:26:::0;12233:475::o;11917:308::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;12075:19:::1;:36:::0;;12179:38;::::1;;-1:-1:-1::0;;;12179:38:0::1;-1:-1:-1::0;;;;12122:46:0;::::1;;-1:-1:-1::0;;;12122:46:0::1;-1:-1:-1::0;;;;12075:36:0;::::1;;-1:-1:-1::0;;;12075:36:0::1;12122:46:::0;;;;-1:-1:-1;;;;12122:46:0;;;;;;;;;;::::1;12179:38:::0;;;::::1;;::::0;;11917:308::o;13329:659::-;-1:-1:-1;;;;;13457:19:0;;13417:7;13457:19;;;:11;:19;;;;;:31;13417:7;;;;13457:31;;;:69;;-1:-1:-1;;;;;;13492:22:0;;;;;;:11;:22;;;;;:34;;;13457:69;13452:133;;;-1:-1:-1;13552:1:0;;-1:-1:-1;13552:1:0;;-1:-1:-1;13552:1:0;13544:29;;13452:133;-1:-1:-1;;;;;13602:22:0;;;;;;:11;:22;;;;;:38;;;;;;:378;;-1:-1:-1;;;;;13751:19:0;;;;;;:11;:19;;;;;:35;;;;;;:229;;5258:5;13907:11;;13898:6;:20;;;;:::i;:::-;13897:34;;;;:::i;:::-;13933:20;;-1:-1:-1;;;;;13933:20:0;;;-1:-1:-1;;;13955:24:0;;;;13602:378;;13751:229;5258:5;13818:6;;13809;:15;;;;:::i;:::-;13808:29;;;;:::i;:::-;13839:15;;13856:19;;-1:-1:-1;;;;;13839:15:0;;;;-1:-1:-1;;;13856:19:0;;;;13602:378;;;5258:5;13671:7;;13662:6;:16;;;;:::i;:::-;13661:30;;;;:::i;:::-;13693:16;;13711:20;;-1:-1:-1;;;;;13693:16:0;;;;-1:-1:-1;;;13711:20:0;;;;13602:378;13595:385;;;;;;13329:659;;;;;;;;:::o;9860:188::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;9977:3:::1;9962:12;;:18;;;;:::i;:::-;9946:12;:34;;9938:67;;;::::0;-1:-1:-1;;;9938:67:0;;10851:2:1;9938:67:0::1;::::0;::::1;10833:21:1::0;10890:2;10870:18;;;10863:30;-1:-1:-1;;;10909:18:1;;;10902:50;10969:18;;9938:67:0::1;10649:344:1::0;9938:67:0::1;10016:9;:24:::0;9860:188::o;14148:3069::-;14236:4;-1:-1:-1;;;;;14275:23:0;;14253:87;;;;-1:-1:-1;;;14253:87:0;;11200:2:1;14253:87:0;;;11182:21:1;11239:2;11219:18;;;11212:30;-1:-1:-1;;;11258:18:1;;;11251:44;11312:18;;14253:87:0;10998:338:1;14253:87:0;14382:1;14373:6;:10;14351:71;;;;-1:-1:-1;;;14351:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7036:18:0;;7018:7;7036:18;;;:9;:18;;;;;;14455:6;:27;;14433:97;;;;-1:-1:-1;;;14433:97:0;;11883:2:1;14433:97:0;;;11865:21:1;11922:2;11902:18;;;11895:30;-1:-1:-1;;;11941:18:1;;;11934:50;12001:18;;14433:97:0;11681:344:1;14433:97:0;14563:9;;;;:18;;:54;;-1:-1:-1;14597:10:0;14585:23;;;;:11;:23;;;;;:32;;;;;;14563:54;14541:114;;;;-1:-1:-1;;;14541:114:0;;12232:2:1;14541:114:0;;;12214:21:1;12271:2;12251:18;;;12244:30;-1:-1:-1;;;12290:18:1;;;12283:40;12340:18;;14541:114:0;12030:334:1;14541:114:0;-1:-1:-1;;;;;14688:19:0;;;;;;:11;:19;;;;;:27;;;;;;:36;14666:102;;;;-1:-1:-1;;;14666:102:0;;12571:2:1;14666:102:0;;;12553:21:1;12610:2;12590:18;;;12583:30;-1:-1:-1;;;12629:18:1;;;12622:46;12685:18;;14666:102:0;12369:340:1;14666:102:0;14783:18;;;;:27;;;:46;;;14828:1;14814:11;;:15;14783:46;14779:747;;;14866:11;;:16;;14880:2;14866:16;:::i;:::-;14850:12;:32;14846:669;;14984:18;:25;;-1:-1:-1;;14984:25:0;15005:4;14984:25;;;;;;15093:12;:18;;15108:3;;15093:18;:::i;:::-;15081:9;:30;15140:3;15130:7;:13;14846:669;;;15187:11;;:15;;15201:1;15187:15;:::i;:::-;15171:12;:31;15167:348;;-1:-1:-1;;;;;15227:22:0;;;;;;:11;:22;;;;;:38;;;;;;:47;;;:91;;-1:-1:-1;;;;;;15278:22:0;;;;;;:11;:22;;;;;:31;;;;;;:40;15227:91;:142;;;;-1:-1:-1;;;;;;15322:22:0;;;;;;:11;:22;;;;;:38;;;;;;:47;15227:142;15223:277;;;-1:-1:-1;;;;;15394:22:0;;;;;;:11;:22;;;;;;:37;;-1:-1:-1;;15394:37:0;;;;;15459:21;;;15394:22;15459:21;15223:277;-1:-1:-1;;;;;15583:17:0;;;;;;:9;:17;;;;;:27;;15604:6;;15583:17;:27;;15604:6;;15583:27;:::i;:::-;;;;-1:-1:-1;15656:11:0;;-1:-1:-1;15656:11:0;;15709:33;15716:6;15724:9;15735:6;15709;:33::i;:::-;15655:87;;-1:-1:-1;15655:87:0;-1:-1:-1;15655:87:0;-1:-1:-1;15801:18:0;15822:12;15655:87;15822:6;:12;:::i;:::-;15801:33;;15866:1;15853:10;:14;15845:38;;;;-1:-1:-1;;;15845:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15950:20:0;;;;;;;:9;:20;;;;;;;:34;;;;;;16011:39;15950:20;;16011:39;;;;;;;15974:10;2441:25:1;;2429:2;2414:18;;2295:177;16011:39:0;;;;;;;;-1:-1:-1;;;;;16098:22:0;;;;;;:11;:22;;;;;:38;;;;;;:47;;;:91;;-1:-1:-1;16161:9:0;16149:22;;;;:11;:22;;;;;:31;;;;;;:40;16098:91;16094:237;;;16256:9;;-1:-1:-1;;;;;16232:20:0;;;;;;:9;:20;;;;;;:33;;16206:113;;;;-1:-1:-1;;;16206:113:0;;13046:2:1;16206:113:0;;;13028:21:1;13085:2;13065:18;;;13058:30;-1:-1:-1;;;13104:18:1;;;13097:48;13162:18;;16206:113:0;12844:342:1;16206:113:0;16379:7;;16375:811;;16449:21;-1:-1:-1;;;;;16473:28:0;;;;;;:63;;-1:-1:-1;;;;;;16505:31:0;;16531:4;16505:31;;16473:63;16449:87;;16598:20;16621:16;:49;;16665:4;16621:49;;;16640:14;16621:49;-1:-1:-1;;;;;16745:23:0;;;;;;;:9;:23;;;;;;;:30;;;;;;16810:35;16598:72;;-1:-1:-1;16745:23:0;16810:35;;;;;;;;16772:3;2441:25:1;;2429:2;2414:18;;2295:177;16810:35:0;;;;;;;;16947:7;:27;;;;;16958:16;16947:27;16943:232;;;17093:18;;;;;;;;;;;-1:-1:-1;;;17093:18:0;;;;;17053:61;;;;;;;;;;;;;;;-1:-1:-1;;;;;17053:61:0;-1:-1:-1;;;17053:61:0;;;17013:120;;16996:12;;-1:-1:-1;;;;;17013:17:0;;;:120;;17053:61;17013:120;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;16943:232:0;16388:798;;16375:811;-1:-1:-1;17205:4:0;;14148:3069;-1:-1:-1;;;;;;;14148:3069:0:o;17225:585::-;17291:4;-1:-1:-1;;;;;17330:21:0;;17308:83;;;;-1:-1:-1;;;17308:83:0;;;;;;;:::i;:::-;17433:1;17424:6;:10;17402:71;;;;-1:-1:-1;;;17402:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17516:18:0;;;;;;:9;:18;;;;;;17506:28;;;17484:98;;;;-1:-1:-1;;;17484:98:0;;11883:2:1;17484:98:0;;;11865:21:1;11922:2;11902:18;;;11895:30;-1:-1:-1;;;11941:18:1;;;11934:50;12001:18;;17484:98:0;11681:344:1;17484:98:0;-1:-1:-1;;;;;17638:18:0;;;;;;:9;:18;;;;;:28;;17660:6;;17638:18;:28;;17660:6;;17638:28;:::i;:::-;;;;;;;;17693:6;17677:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;17743:37:0;;2441:25:1;;;17769:1:0;;-1:-1:-1;;;;;17743:37:0;;;;;2429:2:1;2414:18;17743:37:0;2295:177:1;301:173;369:20;;-1:-1:-1;;;;;418:31:1;;408:42;;398:70;;464:1;461;454:12;398:70;301:173;;;:::o;479:186::-;538:6;591:2;579:9;570:7;566:23;562:32;559:52;;;607:1;604;597:12;559:52;630:29;649:9;630:29;:::i;1188:254::-;1256:6;1264;1317:2;1305:9;1296:7;1292:23;1288:32;1285:52;;;1333:1;1330;1323:12;1285:52;1356:29;1375:9;1356:29;:::i;:::-;1346:39;1432:2;1417:18;;;;1404:32;;-1:-1:-1;;;1188:254:1:o;1447:250::-;1532:1;1542:113;1556:6;1553:1;1550:13;1542:113;;;1632:11;;;1626:18;1613:11;;;1606:39;1578:2;1571:10;1542:113;;;-1:-1:-1;;1689:1:1;1671:16;;1664:27;1447:250::o;1702:396::-;1851:2;1840:9;1833:21;1814:4;1883:6;1877:13;1926:6;1921:2;1910:9;1906:18;1899:34;1942:79;2014:6;2009:2;1998:9;1994:18;1989:2;1981:6;1977:15;1942:79;:::i;:::-;2082:2;2061:15;-1:-1:-1;;2057:29:1;2042:45;;;;2089:2;2038:54;;1702:396;-1:-1:-1;;1702:396:1:o;2477:328::-;2554:6;2562;2570;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;:::-;2652:39;;2710:38;2744:2;2733:9;2729:18;2710:38;:::i;:::-;2700:48;;2795:2;2784:9;2780:18;2767:32;2757:42;;2477:328;;;;;:::o;3207:180::-;3266:6;3319:2;3307:9;3298:7;3294:23;3290:32;3287:52;;;3335:1;3332;3325:12;3287:52;-1:-1:-1;3358:23:1;;3207:180;-1:-1:-1;3207:180:1:o;3392:118::-;3478:5;3471:13;3464:21;3457:5;3454:32;3444:60;;3500:1;3497;3490:12;3515:315;3580:6;3588;3641:2;3629:9;3620:7;3616:23;3612:32;3609:52;;;3657:1;3654;3647:12;3609:52;3680:29;3699:9;3680:29;:::i;:::-;3670:39;;3759:2;3748:9;3744:18;3731:32;3772:28;3794:5;3772:28;:::i;:::-;3819:5;3809:15;;;3515:315;;;;;:::o;3835:316::-;3912:6;3920;3928;3981:2;3969:9;3960:7;3956:23;3952:32;3949:52;;;3997:1;3994;3987:12;3949:52;-1:-1:-1;;4020:23:1;;;4090:2;4075:18;;4062:32;;-1:-1:-1;4141:2:1;4126:18;;;4113:32;;3835:316;-1:-1:-1;3835:316:1:o;4156:511::-;4224:6;4232;4240;4293:2;4281:9;4272:7;4268:23;4264:32;4261:52;;;4309:1;4306;4299:12;4261:52;4348:9;4335:23;4367:28;4389:5;4367:28;:::i;:::-;4414:5;-1:-1:-1;4471:2:1;4456:18;;4443:32;4484:30;4443:32;4484:30;:::i;:::-;4533:7;-1:-1:-1;4592:2:1;4577:18;;4564:32;4605:30;4564:32;4605:30;:::i;:::-;4654:7;4644:17;;;4156:511;;;;;:::o;5032:260::-;5100:6;5108;5161:2;5149:9;5140:7;5136:23;5132:32;5129:52;;;5177:1;5174;5167:12;5129:52;5200:29;5219:9;5200:29;:::i;:::-;5190:39;;5248:38;5282:2;5271:9;5267:18;5248:38;:::i;:::-;5238:48;;5032:260;;;;;:::o;5927:127::-;5988:10;5983:3;5979:20;5976:1;5969:31;6019:4;6016:1;6009:15;6043:4;6040:1;6033:15;6059:128;6126:9;;;6147:11;;;6144:37;;;6161:18;;:::i;6192:343::-;6394:2;6376:21;;;6433:2;6413:18;;;6406:30;-1:-1:-1;;;6467:2:1;6452:18;;6445:49;6526:2;6511:18;;6192:343::o;6540:336::-;6742:2;6724:21;;;6781:2;6761:18;;;6754:30;-1:-1:-1;;;6815:2:1;6800:18;;6793:42;6867:2;6852:18;;6540:336::o;7216:327::-;7418:2;7400:21;;;7457:1;7437:18;;;7430:29;-1:-1:-1;;;7490:2:1;7475:18;;7468:34;7534:2;7519:18;;7216:327::o;7548:184::-;7618:6;7671:2;7659:9;7650:7;7646:23;7642:32;7639:52;;;7687:1;7684;7677:12;7639:52;-1:-1:-1;7710:16:1;;7548:184;-1:-1:-1;7548:184:1:o;7737:245::-;7804:6;7857:2;7845:9;7836:7;7832:23;7828:32;7825:52;;;7873:1;7870;7863:12;7825:52;7905:9;7899:16;7924:28;7946:5;7924:28;:::i;10254:168::-;10327:9;;;10358;;10375:15;;;10369:22;;10355:37;10345:71;;10396:18;;:::i;10427:217::-;10467:1;10493;10483:132;;10537:10;10532:3;10528:20;10525:1;10518:31;10572:4;10569:1;10562:15;10600:4;10597:1;10590:15;10483:132;-1:-1:-1;10629:9:1;;10427:217::o;11341:335::-;11543:2;11525:21;;;11582:2;11562:18;;;11555:30;-1:-1:-1;;;11616:2:1;11601:18;;11594:41;11667:2;11652:18;;11341:335::o;12714:125::-;12779:9;;;12800:10;;;12797:36;;;12813:18;;:::i;13191:287::-;13320:3;13358:6;13352:13;13374:66;13433:6;13428:3;13421:4;13413:6;13409:17;13374:66;:::i;:::-;13456:16;;;;;13191:287;-1:-1:-1;;13191:287:1:o
Swarm Source
ipfs://d7ee75081527e980c10f0f2bb3cad5e06f581260e1f0b02a829153b0173386bb
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.