Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
DeFi
Overview
Max Total Supply
1,000,000,000 PHX
Holders
66 (0.00%)
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Phoenixchain
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-25 */ //SPDX-License-Identifier: UNLICENSED /* - 1 Billion Supply - 1% Buy & 1% Sell - No Blacklist - No Transaction Limit ------------------------------------------------------------------------------------------ - Contract Developer: https://t.me/cryptonikisha [Contact for SAFU Badge, Customised Contract development, Dapp Development and any other development] --------------------------------------------------------------------------------------------- */ pragma solidity ^0.8.17; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IBEP20 { 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 ); } interface IBEP20Metadata is IBEP20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract BEP20 is Context, IBEP20, IBEP20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The defaut value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {BEP20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IBEP20-balanceOf} and {IBEP20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IBEP20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IBEP20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IBEP20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IBEP20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IBEP20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IBEP20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {BEP20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "BEP20: transfer amount exceeds allowance" ); _approve(sender, _msgSender(), currentAllowance - amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IBEP20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IBEP20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "BEP20: decreased allowance below zero" ); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "BEP20: transfer from the zero address"); require(recipient != address(0), "BEP20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "BEP20: transfer amount exceeds balance" ); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } /** This function will be used to generate the total supply * while deploying the contract * * This function can never be called again after deploying contract */ function _tokengeneration(address account, uint256 amount) internal virtual { _totalSupply = amount; _balances[account] = amount; emit Transfer(address(0), account, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } library Address { function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract Phoenixchain is BEP20, Ownable { using Address for address payable; IRouter public router; address public pair; bool private _interlock = false; bool public providingLiquidity = false; bool public tradingEnabled = false; uint256 public tokenLiquidityThreshold = 1e6 * 10**18; uint256 public genesis_block; uint256 private deadline = 3; uint256 private launchtax = 99; address public marketingWallet = 0x4d150DAFE944Ed0C917a739dcf5a0432F8791cBf; address public constant deadWallet =0x000000000000000000000000000000000000dEaD; struct Taxes { uint256 marketing; uint256 liquidity; } Taxes public taxes = Taxes(1, 0); Taxes public sellTaxes = Taxes(1, 0); mapping(address => bool) public exemptFee; modifier lockTheSwap() { if (!_interlock) { _interlock = true; _; _interlock = false; } } constructor() BEP20("Phoenix chain", "PHX") { _tokengeneration(msg.sender, 1e9 * 10**decimals()); exemptFee[msg.sender] = true; IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a pancake pair for this new token address _pair = IFactory(_router.factory()).createPair( address(this), _router.WETH() ); router = _router; pair = _pair; exemptFee[address(this)] = true; exemptFee[marketingWallet] = true; exemptFee[deadWallet] = true; exemptFee[0xD152f549545093347A162Dce210e7293f1452150] = true; exemptFee[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "BEP20: transfer amount exceeds allowance" ); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public override returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public override returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "BEP20: decreased allowance below zero" ); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal override { require(amount > 0, "Transfer amount must be greater than zero"); if (!exemptFee[sender] && !exemptFee[recipient]) { require(tradingEnabled, "Trading not enabled"); } uint256 feeswap; uint256 feesum; uint256 fee; Taxes memory currentTaxes; bool useLaunchFee = !exemptFee[sender] && !exemptFee[recipient] && block.number < genesis_block + deadline; //set fee to zero if fees in contract are handled or exempted if (_interlock || exemptFee[sender] || exemptFee[recipient]) fee = 0; //calculate fee else if (recipient == pair && !useLaunchFee) { feeswap = sellTaxes.liquidity + sellTaxes.marketing; feesum = feeswap; currentTaxes = sellTaxes; } else if (!useLaunchFee) { feeswap = taxes.liquidity + taxes.marketing; feesum = feeswap; currentTaxes = taxes; } else if (useLaunchFee) { feeswap = launchtax; feesum = launchtax; } fee = (amount * feesum) / 100; //send fees if threshold has been reached //don't do this on buys, breaks swap if (providingLiquidity && sender != pair) Liquify(feeswap, currentTaxes); //rest to recipient super._transfer(sender, recipient, amount - fee); if (fee > 0) { //send the fee to the contract if (feeswap > 0) { uint256 feeAmount = (amount * feeswap) / 100; super._transfer(sender, address(this), feeAmount); } } } function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap { if (feeswap == 0) { return; } uint256 contractBalance = balanceOf(address(this)); if (contractBalance >= tokenLiquidityThreshold) { if (tokenLiquidityThreshold > 1) { contractBalance = tokenLiquidityThreshold; } // Split the contract balance into halves uint256 denominator = feeswap * 2; uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator; uint256 toSwap = contractBalance - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity); uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity; if (ethToAddLiquidityWith > 0) { // Add liquidity to pancake addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing; if (marketingAmt > 0) { payable(marketingWallet).sendValue(marketingAmt); } } } function swapTokensForETH(uint256 tokenAmount) private { // generate the pancake pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadWallet, block.timestamp ); } function updateLiquidityProvide(bool state) external onlyOwner { //update liquidity providing state providingLiquidity = state; } function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner { //update the treshhold require( new_amount <= 1e7, "Swap threshold amount should be lower or equal to 1% of tokens" ); tokenLiquidityThreshold = new_amount * 10**decimals(); } function EnableTrading() external onlyOwner { require(!tradingEnabled, "Cannot re-enable trading"); tradingEnabled = true; providingLiquidity = true; genesis_block = block.number; } function updatedeadline(uint256 _deadline) external onlyOwner { require(!tradingEnabled, "Can't change when trading has started"); require(_deadline < 5, "Deadline should be less than 5 Blocks"); deadline = _deadline; } function updateMarketingWallet(address newWallet) external onlyOwner { require(newWallet != address(0), "Fee Address cannot be zero address"); marketingWallet = newWallet; } function updateExemptFee(address _address, bool state) external onlyOwner { exemptFee[_address] = state; } function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { exemptFee[accounts[i]] = state; } } function rescueBNB(uint256 weiAmount) external onlyOwner { payable(owner()).transfer(weiAmount); } function rescueBSC20(address tokenAdd, uint256 amount) external onlyOwner { require( tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens" ); IBEP20(tokenAdd).transfer(owner(), amount); } // fallbacks receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"EnableTrading","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueBSC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6007805462ffffff60a01b1916905569d3c21bcecceda10000006008556003600a556063600b55600c80546001600160a01b031916734d150dafe944ed0c917a739dcf5a0432f8791cbf17905560016080819052600060a0819052600d829055600e81905561010060405260c082905260e0819052600f919091556010553480156200008a57600080fd5b506040518060400160405280600d81526020016c283437b2b734bc1031b430b4b760991b815250604051806040016040528060038152602001620a090b60eb1b8152508160039081620000de9190620004f7565b506004620000ed8282620004f7565b5050506200010a62000104620003a860201b60201c565b620003ac565b62000133336200011d6012600a620006d8565b6200012d90633b9aca00620006f0565b620003fe565b336000908152601160209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c491906200070a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023891906200070a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac91906200070a565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260116020526040808220805460ff199081166001908117909255600c54909416835290822080548416821790557f97847ee99463795296047093514439c3127772df3715e628aa85601cf854171680548416821790557fce8d0ffbb1d6efe3ed8e922370ce68e41786008eea452f15c11285e10245179d805484168217905573407993575c91ce7643a4d4ccacc9a98c36ee1bbe9091527f774f26feb8c64afc7fa77c77dfb7d7dfac0f968c8f6a53ad1a4abbae8dddebf4805490921617905562000735565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200047d57607f821691505b6020821081036200049e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004f257600081815260208120601f850160051c81016020861015620004cd5750805b601f850160051c820191505b81811015620004ee57828155600101620004d9565b5050505b505050565b81516001600160401b0381111562000513576200051362000452565b6200052b8162000524845462000468565b84620004a4565b602080601f8311600181146200056357600084156200054a5750858301515b600019600386901b1c1916600185901b178555620004ee565b600085815260208120601f198616915b82811015620005945788860151825594840194600190910190840162000573565b5085821015620005b35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200061a578160001904821115620005fe57620005fe620005c3565b808516156200060c57918102915b93841c9390800290620005de565b509250929050565b6000826200063357506001620006d2565b816200064257506000620006d2565b81600181146200065b5760028114620006665762000686565b6001915050620006d2565b60ff8411156200067a576200067a620005c3565b50506001821b620006d2565b5060208310610133831016604e8410600b8410161715620006ab575081810a620006d2565b620006b78383620005d9565b8060001904821115620006ce57620006ce620005c3565b0290505b92915050565b6000620006e960ff84168362000622565b9392505050565b8082028115828204841417620006d257620006d2620005c3565b6000602082840312156200071d57600080fd5b81516001600160a01b0381168114620006e957600080fd5b61200780620007456000396000f3fe6080604052600436106101fd5760003560e01c8063728f8eea1161010d578063aacebbe3116100a0578063edaa11681161006f578063edaa1168146105f9578063f2fde38b14610619578063f66895a314610639578063f887ea4014610654578063fbe6324e1461067457600080fd5b8063aacebbe314610543578063c5d32bb214610563578063c9300ed514610593578063dd62ed3e146105b357600080fd5b806395d89b41116100dc57806395d89b41146104ce578063a457c2d7146104e3578063a8aa1b3114610503578063a9059cbb1461052357600080fd5b8063728f8eea1461043257806375f0a8741461046257806385141a771461049a5780638da5cb5b146104b057600080fd5b8063274a533c1161019057806342b6fa111161015f57806342b6fa1114610386578063441b1d30146103a65780634ada218b146103c657806370a08231146103e7578063715018a61461041d57600080fd5b8063274a533c14610314578063313ce5671461032a578063355496ca14610346578063395093511461036657600080fd5b80631675d802116101cc5780631675d802146102a657806318160ddd146102ca5780631d97b7cd146102df57806323b872dd146102f457600080fd5b806306fdde0314610209578063095ea7b3146102345780630e375a5c146102645780631340538f1461028657600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021e610695565b60405161022b9190611a4b565b60405180910390f35b34801561024057600080fd5b5061025461024f366004611abe565b610727565b604051901515815260200161022b565b34801561027057600080fd5b5061028461027f366004611b19565b61073e565b005b34801561029257600080fd5b506102846102a1366004611bf0565b6107dd565b3480156102b257600080fd5b506102bc60085481565b60405190815260200161022b565b3480156102d657600080fd5b506002546102bc565b3480156102eb57600080fd5b50610284610825565b34801561030057600080fd5b5061025461030f366004611c14565b6108c4565b34801561032057600080fd5b506102bc60095481565b34801561033657600080fd5b506040516012815260200161022b565b34801561035257600080fd5b50610284610361366004611c55565b610975565b34801561037257600080fd5b50610254610381366004611abe565b6109ca565b34801561039257600080fd5b506102846103a1366004611c8e565b610a01565b3480156103b257600080fd5b506102846103c1366004611c8e565b610ac0565b3480156103d257600080fd5b5060075461025490600160b01b900460ff1681565b3480156103f357600080fd5b506102bc610402366004611ca7565b6001600160a01b031660009081526020819052604090205490565b34801561042957600080fd5b50610284610b28565b34801561043e57600080fd5b50600d54600e5461044d919082565b6040805192835260208301919091520161022b565b34801561046e57600080fd5b50600c54610482906001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b3480156104a657600080fd5b5061048261dead81565b3480156104bc57600080fd5b506005546001600160a01b0316610482565b3480156104da57600080fd5b5061021e610b5e565b3480156104ef57600080fd5b506102546104fe366004611abe565b610b6d565b34801561050f57600080fd5b50600754610482906001600160a01b031681565b34801561052f57600080fd5b5061025461053e366004611abe565b610c08565b34801561054f57600080fd5b5061028461055e366004611ca7565b610c15565b34801561056f57600080fd5b5061025461057e366004611ca7565b60116020526000908152604090205460ff1681565b34801561059f57600080fd5b506102846105ae366004611abe565b610cc2565b3480156105bf57600080fd5b506102bc6105ce366004611cc4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561060557600080fd5b50610284610614366004611c8e565b610df5565b34801561062557600080fd5b50610284610634366004611ca7565b610eea565b34801561064557600080fd5b50600f5460105461044d919082565b34801561066057600080fd5b50600654610482906001600160a01b031681565b34801561068057600080fd5b5060075461025490600160a81b900460ff1681565b6060600380546106a490611cf2565b80601f01602080910402602001604051908101604052809291908181526020018280546106d090611cf2565b801561071d5780601f106106f25761010080835404028352916020019161071d565b820191906000526020600020905b81548152906001019060200180831161070057829003601f168201915b5050505050905090565b6000610734338484610f85565b5060015b92915050565b6005546001600160a01b031633146107715760405162461bcd60e51b815260040161076890611d2c565b60405180910390fd5b60005b82518110156107d857816011600085848151811061079457610794611d61565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107d081611d8d565b915050610774565b505050565b6005546001600160a01b031633146108075760405162461bcd60e51b815260040161076890611d2c565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461084f5760405162461bcd60e51b815260040161076890611d2c565b600754600160b01b900460ff16156108a95760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610768565b6007805461ffff60a81b191661010160a81b17905543600955565b60006108d18484846110a9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109565760405162461bcd60e51b815260206004820152602860248201527f42455032303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610768565b61096a85336109658685611da6565b610f85565b506001949350505050565b6005546001600160a01b0316331461099f5760405162461bcd60e51b815260040161076890611d2c565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610734918590610965908690611db9565b6005546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161076890611d2c565b62989680811115610aa45760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657175616c20746f203125206f6620746f6b656e7300006064820152608401610768565b610ab06012600a611eb0565b610aba9082611ebf565b60085550565b6005546001600160a01b03163314610aea5760405162461bcd60e51b815260040161076890611d2c565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610b24573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610b525760405162461bcd60e51b815260040161076890611d2c565b610b5c60006113bf565b565b6060600480546106a490611cf2565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610bef5760405162461bcd60e51b815260206004820152602560248201527f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610768565b610bfe33856109658685611da6565b5060019392505050565b60006107343384846110a9565b6005546001600160a01b03163314610c3f5760405162461bcd60e51b815260040161076890611d2c565b6001600160a01b038116610ca05760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608401610768565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610cec5760405162461bcd60e51b815260040161076890611d2c565b306001600160a01b03831603610d635760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610768565b816001600160a01b031663a9059cbb610d846005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610dd1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d89190611ed6565b6005546001600160a01b03163314610e1f5760405162461bcd60e51b815260040161076890611d2c565b600754600160b01b900460ff1615610e875760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610768565b60058110610ee55760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b6064820152608401610768565b600a55565b6005546001600160a01b03163314610f145760405162461bcd60e51b815260040161076890611d2c565b6001600160a01b038116610f795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610768565b610f82816113bf565b50565b6001600160a01b038316610fe75760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610768565b6001600160a01b0382166110485760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610768565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161110b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610768565b6001600160a01b03831660009081526011602052604090205460ff1615801561114d57506001600160a01b03821660009081526011602052604090205460ff16155b156111a157600754600160b01b900460ff166111a15760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610768565b60008060006111c3604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526011602052604081205460ff1615801561120557506001600160a01b03871660009081526011602052604090205460ff16155b801561121f5750600a5460095461121c9190611db9565b43105b600754909150600160a01b900460ff168061125257506001600160a01b03881660009081526011602052604090205460ff165b8061127557506001600160a01b03871660009081526011602052604090205460ff165b15611283576000925061131f565b6007546001600160a01b03888116911614801561129e575080155b156112d757600f546010546112b39190611db9565b60408051808201909152600f5481526010546020820152909550859450915061131f565b8061131057600d54600e546112ec9190611db9565b60408051808201909152600d548152600e546020820152909550859450915061131f565b801561131f57600b5494508493505b606461132b8588611ebf565b6113359190611ef3565b600754909350600160a81b900460ff16801561135f57506007546001600160a01b03898116911614155b1561136e5761136e8583611411565b611382888861137d868a611da6565b61154e565b82156113b55784156113b5576000606461139c8789611ebf565b6113a69190611ef3565b90506113b389308361154e565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610b24576007805460ff60a01b1916600160a01b179055811561153d5730600090815260208190526040902054600854811061153b576001600854111561146457506008545b6000611471846002611ebf565b90506000818460200151846114869190611ebf565b6114909190611ef3565b9050600061149e8285611da6565b9050476114aa82611726565b60006114b68247611da6565b905060008760200151866114ca9190611da6565b6114d49083611ef3565b905060008860200151826114e89190611ebf565b905080156114fa576114fa8682611880565b885160009061150a846002611ebf565b6115149190611ebf565b9050801561153257600c54611532906001600160a01b031682611932565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166115b25760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610768565b6001600160a01b0382166116145760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610768565b6001600160a01b0383166000908152602081905260409020548181101561168c5760405162461bcd60e51b815260206004820152602660248201527f42455032303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610768565b6116968282611da6565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906116cc908490611db9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161171891815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061175b5761175b611d61565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156117b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d89190611f15565b816001815181106117eb576117eb611d61565b6001600160a01b0392831660209182029290920101526006546118119130911684610f85565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061184a908590600090869030904290600401611f32565b600060405180830381600087803b15801561186457600080fd5b505af1158015611878573d6000803e3d6000fd5b505050505050565b6006546118989030906001600160a01b031684610f85565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611906573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061192b9190611fa3565b5050505050565b804710156119825760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610768565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146119cf576040519150601f19603f3d011682016040523d82523d6000602084013e6119d4565b606091505b50509050806107d85760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610768565b600060208083528351808285015260005b81811015611a7857858101830151858201604001528201611a5c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f8257600080fd5b8035611ab981611a99565b919050565b60008060408385031215611ad157600080fd5b8235611adc81611a99565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b8015158114610f8257600080fd5b8035611ab981611b00565b60008060408385031215611b2c57600080fd5b823567ffffffffffffffff80821115611b4457600080fd5b818501915085601f830112611b5857600080fd5b8135602082821115611b6c57611b6c611aea565b8160051b604051601f19603f83011681018181108682111715611b9157611b91611aea565b604052928352818301935084810182019289841115611baf57600080fd5b948201945b83861015611bd457611bc586611aae565b85529482019493820193611bb4565b9650611be39050878201611b0e565b9450505050509250929050565b600060208284031215611c0257600080fd5b8135611c0d81611b00565b9392505050565b600080600060608486031215611c2957600080fd5b8335611c3481611a99565b92506020840135611c4481611a99565b929592945050506040919091013590565b60008060408385031215611c6857600080fd5b8235611c7381611a99565b91506020830135611c8381611b00565b809150509250929050565b600060208284031215611ca057600080fd5b5035919050565b600060208284031215611cb957600080fd5b8135611c0d81611a99565b60008060408385031215611cd757600080fd5b8235611ce281611a99565b91506020830135611c8381611a99565b600181811c90821680611d0657607f821691505b602082108103611d2657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611d9f57611d9f611d77565b5060010190565b8181038181111561073857610738611d77565b8082018082111561073857610738611d77565b600181815b80851115611e07578160001904821115611ded57611ded611d77565b80851615611dfa57918102915b93841c9390800290611dd1565b509250929050565b600082611e1e57506001610738565b81611e2b57506000610738565b8160018114611e415760028114611e4b57611e67565b6001915050610738565b60ff841115611e5c57611e5c611d77565b50506001821b610738565b5060208310610133831016604e8410600b8410161715611e8a575081810a610738565b611e948383611dcc565b8060001904821115611ea857611ea8611d77565b029392505050565b6000611c0d60ff841683611e0f565b808202811582820484141761073857610738611d77565b600060208284031215611ee857600080fd5b8151611c0d81611b00565b600082611f1057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611f2757600080fd5b8151611c0d81611a99565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f825784516001600160a01b031683529383019391830191600101611f5d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611fb857600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122091a70ea82f2aedb7dbab031d71da9d1bdec12b3a4108b8589a227d23d34f799a64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101fd5760003560e01c8063728f8eea1161010d578063aacebbe3116100a0578063edaa11681161006f578063edaa1168146105f9578063f2fde38b14610619578063f66895a314610639578063f887ea4014610654578063fbe6324e1461067457600080fd5b8063aacebbe314610543578063c5d32bb214610563578063c9300ed514610593578063dd62ed3e146105b357600080fd5b806395d89b41116100dc57806395d89b41146104ce578063a457c2d7146104e3578063a8aa1b3114610503578063a9059cbb1461052357600080fd5b8063728f8eea1461043257806375f0a8741461046257806385141a771461049a5780638da5cb5b146104b057600080fd5b8063274a533c1161019057806342b6fa111161015f57806342b6fa1114610386578063441b1d30146103a65780634ada218b146103c657806370a08231146103e7578063715018a61461041d57600080fd5b8063274a533c14610314578063313ce5671461032a578063355496ca14610346578063395093511461036657600080fd5b80631675d802116101cc5780631675d802146102a657806318160ddd146102ca5780631d97b7cd146102df57806323b872dd146102f457600080fd5b806306fdde0314610209578063095ea7b3146102345780630e375a5c146102645780631340538f1461028657600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021e610695565b60405161022b9190611a4b565b60405180910390f35b34801561024057600080fd5b5061025461024f366004611abe565b610727565b604051901515815260200161022b565b34801561027057600080fd5b5061028461027f366004611b19565b61073e565b005b34801561029257600080fd5b506102846102a1366004611bf0565b6107dd565b3480156102b257600080fd5b506102bc60085481565b60405190815260200161022b565b3480156102d657600080fd5b506002546102bc565b3480156102eb57600080fd5b50610284610825565b34801561030057600080fd5b5061025461030f366004611c14565b6108c4565b34801561032057600080fd5b506102bc60095481565b34801561033657600080fd5b506040516012815260200161022b565b34801561035257600080fd5b50610284610361366004611c55565b610975565b34801561037257600080fd5b50610254610381366004611abe565b6109ca565b34801561039257600080fd5b506102846103a1366004611c8e565b610a01565b3480156103b257600080fd5b506102846103c1366004611c8e565b610ac0565b3480156103d257600080fd5b5060075461025490600160b01b900460ff1681565b3480156103f357600080fd5b506102bc610402366004611ca7565b6001600160a01b031660009081526020819052604090205490565b34801561042957600080fd5b50610284610b28565b34801561043e57600080fd5b50600d54600e5461044d919082565b6040805192835260208301919091520161022b565b34801561046e57600080fd5b50600c54610482906001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b3480156104a657600080fd5b5061048261dead81565b3480156104bc57600080fd5b506005546001600160a01b0316610482565b3480156104da57600080fd5b5061021e610b5e565b3480156104ef57600080fd5b506102546104fe366004611abe565b610b6d565b34801561050f57600080fd5b50600754610482906001600160a01b031681565b34801561052f57600080fd5b5061025461053e366004611abe565b610c08565b34801561054f57600080fd5b5061028461055e366004611ca7565b610c15565b34801561056f57600080fd5b5061025461057e366004611ca7565b60116020526000908152604090205460ff1681565b34801561059f57600080fd5b506102846105ae366004611abe565b610cc2565b3480156105bf57600080fd5b506102bc6105ce366004611cc4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561060557600080fd5b50610284610614366004611c8e565b610df5565b34801561062557600080fd5b50610284610634366004611ca7565b610eea565b34801561064557600080fd5b50600f5460105461044d919082565b34801561066057600080fd5b50600654610482906001600160a01b031681565b34801561068057600080fd5b5060075461025490600160a81b900460ff1681565b6060600380546106a490611cf2565b80601f01602080910402602001604051908101604052809291908181526020018280546106d090611cf2565b801561071d5780601f106106f25761010080835404028352916020019161071d565b820191906000526020600020905b81548152906001019060200180831161070057829003601f168201915b5050505050905090565b6000610734338484610f85565b5060015b92915050565b6005546001600160a01b031633146107715760405162461bcd60e51b815260040161076890611d2c565b60405180910390fd5b60005b82518110156107d857816011600085848151811061079457610794611d61565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107d081611d8d565b915050610774565b505050565b6005546001600160a01b031633146108075760405162461bcd60e51b815260040161076890611d2c565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461084f5760405162461bcd60e51b815260040161076890611d2c565b600754600160b01b900460ff16156108a95760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610768565b6007805461ffff60a81b191661010160a81b17905543600955565b60006108d18484846110a9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109565760405162461bcd60e51b815260206004820152602860248201527f42455032303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610768565b61096a85336109658685611da6565b610f85565b506001949350505050565b6005546001600160a01b0316331461099f5760405162461bcd60e51b815260040161076890611d2c565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610734918590610965908690611db9565b6005546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161076890611d2c565b62989680811115610aa45760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657175616c20746f203125206f6620746f6b656e7300006064820152608401610768565b610ab06012600a611eb0565b610aba9082611ebf565b60085550565b6005546001600160a01b03163314610aea5760405162461bcd60e51b815260040161076890611d2c565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610b24573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610b525760405162461bcd60e51b815260040161076890611d2c565b610b5c60006113bf565b565b6060600480546106a490611cf2565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610bef5760405162461bcd60e51b815260206004820152602560248201527f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610768565b610bfe33856109658685611da6565b5060019392505050565b60006107343384846110a9565b6005546001600160a01b03163314610c3f5760405162461bcd60e51b815260040161076890611d2c565b6001600160a01b038116610ca05760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608401610768565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610cec5760405162461bcd60e51b815260040161076890611d2c565b306001600160a01b03831603610d635760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610768565b816001600160a01b031663a9059cbb610d846005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610dd1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d89190611ed6565b6005546001600160a01b03163314610e1f5760405162461bcd60e51b815260040161076890611d2c565b600754600160b01b900460ff1615610e875760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610768565b60058110610ee55760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b6064820152608401610768565b600a55565b6005546001600160a01b03163314610f145760405162461bcd60e51b815260040161076890611d2c565b6001600160a01b038116610f795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610768565b610f82816113bf565b50565b6001600160a01b038316610fe75760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610768565b6001600160a01b0382166110485760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610768565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161110b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610768565b6001600160a01b03831660009081526011602052604090205460ff1615801561114d57506001600160a01b03821660009081526011602052604090205460ff16155b156111a157600754600160b01b900460ff166111a15760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610768565b60008060006111c3604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526011602052604081205460ff1615801561120557506001600160a01b03871660009081526011602052604090205460ff16155b801561121f5750600a5460095461121c9190611db9565b43105b600754909150600160a01b900460ff168061125257506001600160a01b03881660009081526011602052604090205460ff165b8061127557506001600160a01b03871660009081526011602052604090205460ff165b15611283576000925061131f565b6007546001600160a01b03888116911614801561129e575080155b156112d757600f546010546112b39190611db9565b60408051808201909152600f5481526010546020820152909550859450915061131f565b8061131057600d54600e546112ec9190611db9565b60408051808201909152600d548152600e546020820152909550859450915061131f565b801561131f57600b5494508493505b606461132b8588611ebf565b6113359190611ef3565b600754909350600160a81b900460ff16801561135f57506007546001600160a01b03898116911614155b1561136e5761136e8583611411565b611382888861137d868a611da6565b61154e565b82156113b55784156113b5576000606461139c8789611ebf565b6113a69190611ef3565b90506113b389308361154e565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610b24576007805460ff60a01b1916600160a01b179055811561153d5730600090815260208190526040902054600854811061153b576001600854111561146457506008545b6000611471846002611ebf565b90506000818460200151846114869190611ebf565b6114909190611ef3565b9050600061149e8285611da6565b9050476114aa82611726565b60006114b68247611da6565b905060008760200151866114ca9190611da6565b6114d49083611ef3565b905060008860200151826114e89190611ebf565b905080156114fa576114fa8682611880565b885160009061150a846002611ebf565b6115149190611ebf565b9050801561153257600c54611532906001600160a01b031682611932565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166115b25760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610768565b6001600160a01b0382166116145760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610768565b6001600160a01b0383166000908152602081905260409020548181101561168c5760405162461bcd60e51b815260206004820152602660248201527f42455032303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610768565b6116968282611da6565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906116cc908490611db9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161171891815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061175b5761175b611d61565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156117b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d89190611f15565b816001815181106117eb576117eb611d61565b6001600160a01b0392831660209182029290920101526006546118119130911684610f85565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061184a908590600090869030904290600401611f32565b600060405180830381600087803b15801561186457600080fd5b505af1158015611878573d6000803e3d6000fd5b505050505050565b6006546118989030906001600160a01b031684610f85565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611906573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061192b9190611fa3565b5050505050565b804710156119825760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610768565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146119cf576040519150601f19603f3d011682016040523d82523d6000602084013e6119d4565b606091505b50509050806107d85760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610768565b600060208083528351808285015260005b81811015611a7857858101830151858201604001528201611a5c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f8257600080fd5b8035611ab981611a99565b919050565b60008060408385031215611ad157600080fd5b8235611adc81611a99565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b8015158114610f8257600080fd5b8035611ab981611b00565b60008060408385031215611b2c57600080fd5b823567ffffffffffffffff80821115611b4457600080fd5b818501915085601f830112611b5857600080fd5b8135602082821115611b6c57611b6c611aea565b8160051b604051601f19603f83011681018181108682111715611b9157611b91611aea565b604052928352818301935084810182019289841115611baf57600080fd5b948201945b83861015611bd457611bc586611aae565b85529482019493820193611bb4565b9650611be39050878201611b0e565b9450505050509250929050565b600060208284031215611c0257600080fd5b8135611c0d81611b00565b9392505050565b600080600060608486031215611c2957600080fd5b8335611c3481611a99565b92506020840135611c4481611a99565b929592945050506040919091013590565b60008060408385031215611c6857600080fd5b8235611c7381611a99565b91506020830135611c8381611b00565b809150509250929050565b600060208284031215611ca057600080fd5b5035919050565b600060208284031215611cb957600080fd5b8135611c0d81611a99565b60008060408385031215611cd757600080fd5b8235611ce281611a99565b91506020830135611c8381611a99565b600181811c90821680611d0657607f821691505b602082108103611d2657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611d9f57611d9f611d77565b5060010190565b8181038181111561073857610738611d77565b8082018082111561073857610738611d77565b600181815b80851115611e07578160001904821115611ded57611ded611d77565b80851615611dfa57918102915b93841c9390800290611dd1565b509250929050565b600082611e1e57506001610738565b81611e2b57506000610738565b8160018114611e415760028114611e4b57611e67565b6001915050610738565b60ff841115611e5c57611e5c611d77565b50506001821b610738565b5060208310610133831016604e8410600b8410161715611e8a575081810a610738565b611e948383611dcc565b8060001904821115611ea857611ea8611d77565b029392505050565b6000611c0d60ff841683611e0f565b808202811582820484141761073857610738611d77565b600060208284031215611ee857600080fd5b8151611c0d81611b00565b600082611f1057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611f2757600080fd5b8151611c0d81611a99565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f825784516001600160a01b031683529383019391830191600101611f5d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611fb857600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122091a70ea82f2aedb7dbab031d71da9d1bdec12b3a4108b8589a227d23d34f799a64736f6c63430008130033
Deployed Bytecode Sourcemap
12698:9769:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2898:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14434:193;;;;;;;;;;-1:-1:-1;14434:193:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;14434:193:0;1162:187:1;21781:225:0;;;;;;;;;;-1:-1:-1;21781:225:0;;;;;:::i;:::-;;:::i;:::-;;20475:152;;;;;;;;;;-1:-1:-1;20475:152:0;;;;;:::i;:::-;;:::i;12969:53::-;;;;;;;;;;;;;;;;;;;3330:25:1;;;3318:2;3303:18;12969:53:0;3184:177:1;4018:108:0;;;;;;;;;;-1:-1:-1;4106:12:0;;4018:108;;20960:222;;;;;;;;;;;;;:::i;14635:485::-;;;;;;;;;;-1:-1:-1;14635:485:0;;;;;:::i;:::-;;:::i;13031:28::-;;;;;;;;;;;;;;;;3860:93;;;;;;;;;;-1:-1:-1;3860:93:0;;3943:2;3969:36:1;;3957:2;3942:18;3860:93:0;3827:184:1;21653:120:0;;;;;;;;;;-1:-1:-1;21653:120:0;;;;;:::i;:::-;;:::i;15128:298::-;;;;;;;;;;-1:-1:-1;15128:298:0;;;;;:::i;:::-;;:::i;20635:317::-;;;;;;;;;;-1:-1:-1;20635:317:0;;;;;:::i;:::-;;:::i;22014:112::-;;;;;;;;;;-1:-1:-1;22014:112:0;;;;;:::i;:::-;;:::i;12926:34::-;;;;;;;;;;-1:-1:-1;12926:34:0;;;;-1:-1:-1;;;12926:34:0;;;;;;4189:177;;;;;;;;;;-1:-1:-1;4189:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;4340:18:0;4308:7;4340:18;;;;;;;;;;;;4189:177;11306:94;;;;;;;;;;;;;:::i;13394:32::-;;;;;;;;;;-1:-1:-1;13394:32:0;;;;;;;;;;;;;5014:25:1;;;5070:2;5055:18;;5048:34;;;;4987:18;13394:32:0;4840:248:1;13140:75:0;;;;;;;;;;-1:-1:-1;13140:75:0;;;;-1:-1:-1;;;;;13140:75:0;;;;;;-1:-1:-1;;;;;5257:32:1;;;5239:51;;5227:2;5212:18;13140:75:0;5093:203:1;13222:78:0;;;;;;;;;;;;13258:42;13222:78;;11083:87;;;;;;;;;;-1:-1:-1;11156:6:0;;-1:-1:-1;;;;;11156:6:0;11083:87;;3117:104;;;;;;;;;;;;;:::i;15434:447::-;;;;;;;;;;-1:-1:-1;15434:447:0;;;;;:::i;:::-;;:::i;12815:19::-;;;;;;;;;;-1:-1:-1;12815:19:0;;;;-1:-1:-1;;;;;12815:19:0;;;15889:197;;;;;;;;;;-1:-1:-1;15889:197:0;;;;;:::i;:::-;;:::i;21449:196::-;;;;;;;;;;-1:-1:-1;21449:196:0;;;;;:::i;:::-;;:::i;13478:41::-;;;;;;;;;;-1:-1:-1;13478:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22134:275;;;;;;;;;;-1:-1:-1;22134:275:0;;;;;:::i;:::-;;:::i;4858:201::-;;;;;;;;;;-1:-1:-1;4858:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5024:18:0;;;4992:7;5024:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4858:201;21190:251;;;;;;;;;;-1:-1:-1;21190:251:0;;;;;:::i;:::-;;:::i;11408:229::-;;;;;;;;;;-1:-1:-1;11408:229:0;;;;;:::i;:::-;;:::i;13433:36::-;;;;;;;;;;-1:-1:-1;13433:36:0;;;;;;;;;12787:21;;;;;;;;;;-1:-1:-1;12787:21:0;;;;-1:-1:-1;;;;;12787:21:0;;;12881:38;;;;;;;;;;-1:-1:-1;12881:38:0;;;;-1:-1:-1;;;12881:38:0;;;;;;2898:100;2952:13;2985:5;2978:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2898:100;:::o;14434:193::-;14536:4;14558:39;621:10;14581:7;14590:6;14558:8;:39::i;:::-;-1:-1:-1;14615:4:0;14434:193;;;;;:::o;21781:225::-;11156:6;;-1:-1:-1;;;;;11156:6:0;621:10;11218:23;11210:68;;;;-1:-1:-1;;;11210:68:0;;;;;;;:::i;:::-;;;;;;;;;21901:9:::1;21896:103;21920:8;:15;21916:1;:19;21896:103;;;21982:5;21957:9;:22;21967:8;21976:1;21967:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;21957:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;21957:22:0;:30;;-1:-1:-1;;21957:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21937:3;::::1;::::0;::::1;:::i;:::-;;;;21896:103;;;;21781:225:::0;;:::o;20475:152::-;11156:6;;-1:-1:-1;;;;;11156:6:0;621:10;11218:23;11210:68;;;;-1:-1:-1;;;11210:68:0;;;;;;;:::i;:::-;20593:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;20593:26:0::1;-1:-1:-1::0;;;;20593:26:0;;::::1;::::0;;;::::1;::::0;;20475:152::o;20960:222::-;11156:6;;-1:-1:-1;;;;;11156:6:0;621:10;11218:23;11210:68;;;;-1:-1:-1;;;11210:68:0;;;;;;;:::i;:::-;21024:14:::1;::::0;-1:-1:-1;;;21024:14:0;::::1;;;21023:15;21015:52;;;::::0;-1:-1:-1;;;21015:52:0;;7269:2:1;21015:52:0::1;::::0;::::1;7251:21:1::0;7308:2;7288:18;;;7281:30;7347:26;7327:18;;;7320:54;7391:18;;21015:52:0::1;7067:348:1::0;21015:52:0::1;21078:14;:21:::0;;-1:-1:-1;;;;21110:25:0;-1:-1:-1;;;21110:25:0;;;21162:12:::1;21146:13;:28:::0;20960:222::o;14635:485::-;14767:4;14784:36;14794:6;14802:9;14813:6;14784:9;:36::i;:::-;-1:-1:-1;;;;;14860:19:0;;14833:24;14860:19;;;:11;:19;;;;;;;;621:10;14860:33;;;;;;;;14926:26;;;;14904:116;;;;-1:-1:-1;;;14904:116:0;;7622:2:1;14904:116:0;;;7604:21:1;7661:2;7641:18;;;7634:30;7700:34;7680:18;;;7673:62;-1:-1:-1;;;7751:18:1;;;7744:38;7799:19;;14904:116:0;7420:404:1;14904:116:0;15031:57;15040:6;621:10;15062:25;15081:6;15062:16;:25;:::i;:::-;15031:8;:57::i;:::-;-1:-1:-1;15108:4:0;;14635:485;-1:-1:-1;;;;14635:485:0:o;21653:120::-;11156:6;;-1:-1:-1;;;;;11156:6:0;621:10;11218:23;11210:68;;;;-1:-1:-1;;;11210:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21738:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;21738:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21653:120::o;15128:298::-;621:10;15244:4;15338:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15338:34:0;;;;;;;;;;15244:4;;15266:130;;15316:7;;15338:47;;15375:10;;15338:47;:::i;20635:317::-;11156:6;;-1:-1:-1;;;;;11156:6:0;621:10;11218:23;11210:68;;;;-1:-1:-1;;;11210:68:0;;;;;;;:::i;:::-;20787:3:::1;20773:10;:17;;20751:129;;;::::0;-1:-1:-1;;;20751:129:0;;8294:2:1;20751:129:0::1;::::0;::::1;8276:21:1::0;8333:2;8313:18;;;8306:30;8372:34;8352:18;;;8345:62;8443:32;8423:18;;;8416:60;8493:19;;20751:129:0::1;8092:426:1::0;20751:129:0::1;20930:14;3943:2:::0;20930::::1;:14;:::i;:::-;20917:27;::::0;:10;:27:::1;:::i;:::-;20891:23;:53:::0;-1:-1:-1;20635:317:0:o;22014:112::-;11156:6;;-1:-1:-1;;;;;11156:6:0;621:10;11218:23;11210:68;;;;-1:-1:-1;;;11210:68:0;;;;;;;:::i;:::-;11156:6;;22082:36:::1;::::0;-1:-1:-1;;;;;11156:6:0;;;;22082:36;::::1;;;::::0;22108:9;;22082:36:::1;::::0;;;22108:9;11156:6;22082:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22014:112:::0;:::o;11306:94::-;11156:6;;-1:-1:-1;;;;;11156:6:0;621:10;11218:23;11210:68;;;;-1:-1:-1;;;11210:68:0;;;;;;;:::i;:::-;11371:21:::1;11389:1;11371:9;:21::i;:::-;11306:94::o:0;3117:104::-;3173:13;3206:7;3199:14;;;;;:::i;15434:447::-;621:10;15555:4;15604:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15604:34:0;;;;;;;;;;15671:35;;;;15649:122;;;;-1:-1:-1;;;15649:122:0;;10281:2:1;15649:122:0;;;10263:21:1;10320:2;10300:18;;;10293:30;10359:34;10339:18;;;10332:62;-1:-1:-1;;;10410:18:1;;;10403:35;10455:19;;15649:122:0;10079:401:1;15649:122:0;15782:67;621:10;15805:7;15814:34;15833:15;15814:16;:34;:::i;15782:67::-;-1:-1:-1;15869:4:0;;15434:447;-1:-1:-1;;;15434:447:0:o;15889:197::-;15994:4;16016:40;16026:10;16038:9;16049:6;16016:9;:40::i;21449:196::-;11156:6;;-1:-1:-1;;;;;11156:6:0;621:10;11218:23;11210:68;;;;-1:-1:-1;;;11210:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21537:23:0;::::1;21529:70;;;::::0;-1:-1:-1;;;21529:70:0;;10687:2:1;21529:70:0::1;::::0;::::1;10669:21:1::0;10726:2;10706:18;;;10699:30;10765:34;10745:18;;;10738:62;-1:-1:-1;;;10816:18:1;;;10809:32;10858:19;;21529:70:0::1;10485:398:1::0;21529:70:0::1;21610:15;:27:::0;;-1:-1:-1;;;;;;21610:27:0::1;-1:-1:-1::0;;;;;21610:27:0;;;::::1;::::0;;;::::1;::::0;;21449:196::o;22134:275::-;11156:6;;-1:-1:-1;;;;;11156:6:0;621:10;11218:23;11210:68;;;;-1:-1:-1;;;11210:68:0;;;;;;;:::i;:::-;22261:4:::1;-1:-1:-1::0;;;;;22241:25:0;::::1;::::0;22219:129:::1;;;::::0;-1:-1:-1;;;22219:129:0;;11090:2:1;22219:129:0::1;::::0;::::1;11072:21:1::0;11129:2;11109:18;;;11102:30;11168:34;11148:18;;;11141:62;-1:-1:-1;;;11219:18:1;;;11212:52;11281:19;;22219:129:0::1;10888:418:1::0;22219:129:0::1;22366:8;-1:-1:-1::0;;;;;22359:25:0::1;;22385:7;11156:6:::0;;-1:-1:-1;;;;;11156:6:0;;11083:87;22385:7:::1;22359:42;::::0;-1:-1:-1;;;;;;22359:42:0::1;::::0;;;;;;-1:-1:-1;;;;;11503:32:1;;;22359:42:0::1;::::0;::::1;11485:51:1::0;11552:18;;;11545:34;;;11458:18;;22359:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21190:251::-:0;11156:6;;-1:-1:-1;;;;;11156:6:0;621:10;11218:23;11210:68;;;;-1:-1:-1;;;11210:68:0;;;;;;;:::i;:::-;21272:14:::1;::::0;-1:-1:-1;;;21272:14:0;::::1;;;21271:15;21263:65;;;::::0;-1:-1:-1;;;21263:65:0;;12042:2:1;21263:65:0::1;::::0;::::1;12024:21:1::0;12081:2;12061:18;;;12054:30;12120:34;12100:18;;;12093:62;-1:-1:-1;;;12171:18:1;;;12164:35;12216:19;;21263:65:0::1;11840:401:1::0;21263:65:0::1;21359:1;21347:9;:13;21339:63;;;::::0;-1:-1:-1;;;21339:63:0;;12448:2:1;21339:63:0::1;::::0;::::1;12430:21:1::0;12487:2;12467:18;;;12460:30;12526:34;12506:18;;;12499:62;-1:-1:-1;;;12577:18:1;;;12570:35;12622:19;;21339:63:0::1;12246:401:1::0;21339:63:0::1;21413:8;:20:::0;21190:251::o;11408:229::-;11156:6;;-1:-1:-1;;;;;11156:6:0;621:10;11218:23;11210:68;;;;-1:-1:-1;;;11210:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11511:22:0;::::1;11489:110;;;::::0;-1:-1:-1;;;11489:110:0;;12854:2:1;11489:110:0::1;::::0;::::1;12836:21:1::0;12893:2;12873:18;;;12866:30;12932:34;12912:18;;;12905:62;-1:-1:-1;;;12983:18:1;;;12976:36;13029:19;;11489:110:0::1;12652:402:1::0;11489:110:0::1;11610:19;11620:8;11610:9;:19::i;:::-;11408:229:::0;:::o;10019:380::-;-1:-1:-1;;;;;10155:19:0;;10147:68;;;;-1:-1:-1;;;10147:68:0;;13261:2:1;10147:68:0;;;13243:21:1;13300:2;13280:18;;;13273:30;13339:34;13319:18;;;13312:62;-1:-1:-1;;;13390:18:1;;;13383:34;13434:19;;10147:68:0;13059:400:1;10147:68:0;-1:-1:-1;;;;;10234:21:0;;10226:68;;;;-1:-1:-1;;;10226:68:0;;13666:2:1;10226:68:0;;;13648:21:1;13705:2;13685:18;;;13678:30;13744:34;13724:18;;;13717:62;-1:-1:-1;;;13795:18:1;;;13788:32;13837:19;;10226:68:0;13464:398:1;10226:68:0;-1:-1:-1;;;;;10307:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10359:32;;3330:25:1;;;10359:32:0;;3303:18:1;10359:32:0;;;;;;;10019:380;;;:::o;16094:1842::-;16244:1;16235:6;:10;16227:64;;;;-1:-1:-1;;;16227:64:0;;14069:2:1;16227:64:0;;;14051:21:1;14108:2;14088:18;;;14081:30;14147:34;14127:18;;;14120:62;-1:-1:-1;;;14198:18:1;;;14191:39;14247:19;;16227:64:0;13867:405:1;16227:64:0;-1:-1:-1;;;;;16309:17:0;;;;;;:9;:17;;;;;;;;16308:18;:43;;;;-1:-1:-1;;;;;;16331:20:0;;;;;;:9;:20;;;;;;;;16330:21;16308:43;16304:122;;;16376:14;;-1:-1:-1;;;16376:14:0;;;;16368:46;;;;-1:-1:-1;;;16368:46:0;;14479:2:1;16368:46:0;;;14461:21:1;14518:2;14498:18;;;14491:30;-1:-1:-1;;;14537:18:1;;;14530:49;14596:18;;16368:46:0;14277:343:1;16368:46:0;16438:15;16464:14;16489:11;16511:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;16511:25:0;-1:-1:-1;;;;;16570:17:0;;16549;16570;;;:9;:17;;;;;;;;16569:18;:56;;;;-1:-1:-1;;;;;;16605:20:0;;;;;;:9;:20;;;;;;;;16604:21;16569:56;:112;;;;;16673:8;;16657:13;;:24;;;;:::i;:::-;16642:12;:39;16569:112;16769:10;;16549:132;;-1:-1:-1;;;;16769:10:0;;;;;:31;;-1:-1:-1;;;;;;16783:17:0;;;;;;:9;:17;;;;;;;;16769:31;:55;;;-1:-1:-1;;;;;;16804:20:0;;;;;;:9;:20;;;;;;;;16769:55;16765:580;;;16845:1;16839:7;;16765:580;;;16910:4;;-1:-1:-1;;;;;16897:17:0;;;16910:4;;16897:17;:34;;;;;16919:12;16918:13;16897:34;16893:452;;;16980:9;:19;16958;;:41;;16980:19;16958:41;:::i;:::-;17045:24;;;;;;;;;17060:9;17045:24;;;;;;;;;16948:51;;-1:-1:-1;16948:51:0;;-1:-1:-1;17045:24:0;-1:-1:-1;16893:452:0;;;17092:12;17087:258;;17149:5;:15;17131;;:33;;17149:15;17131:33;:::i;:::-;17210:20;;;;;;;;;17225:5;17210:20;;;;;;;;;17121:43;;-1:-1:-1;17121:43:0;;-1:-1:-1;17210:20:0;-1:-1:-1;17087:258:0;;;17252:12;17248:97;;;17291:9;;;-1:-1:-1;17291:9:0;;-1:-1:-1;17248:97:0;17383:3;17364:15;17373:6;17364;:15;:::i;:::-;17363:23;;;;:::i;:::-;17500:18;;17357:29;;-1:-1:-1;;;;17500:18:0;;;;:36;;;;-1:-1:-1;17532:4:0;;-1:-1:-1;;;;;17522:14:0;;;17532:4;;17522:14;;17500:36;17496:85;;;17551:30;17559:7;17568:12;17551:7;:30::i;:::-;17623:48;17639:6;17647:9;17658:12;17667:3;17658:6;:12;:::i;:::-;17623:15;:48::i;:::-;17686:7;;17682:247;;17758:11;;17754:164;;17790:17;17831:3;17811:16;17820:7;17811:6;:16;:::i;:::-;17810:24;;;;:::i;:::-;17790:44;;17853:49;17869:6;17885:4;17892:9;17853:15;:49::i;:::-;17771:147;17754:164;16216:1720;;;;;16094:1842;;;:::o;11645:173::-;11720:6;;;-1:-1:-1;;;;;11737:17:0;;;-1:-1:-1;;;;;;11737:17:0;;;;;;;11770:40;;11720:6;;;11737:17;11720:6;;11770:40;;11701:16;;11770:40;11690:128;11645:173;:::o;17944:1475::-;13567:10;;-1:-1:-1;;;13567:10:0;;;;13562:110;;13594:10;:17;;-1:-1:-1;;;;13594:17:0;-1:-1:-1;;;13594:17:0;;;18056:51;;18089:7:::1;18056:51;18163:4;18119:23;4340:18:::0;;;;;;;;;;;18203:23:::1;::::0;18184:42;::::1;18180:1232;;18273:1;18247:23;;:27;18243:109;;;-1:-1:-1::0;18313:23:0::1;::::0;18243:109:::1;18423:19;18445:11;:7:::0;18455:1:::1;18445:11;:::i;:::-;18423:33;;18471:32;18565:11;18542:9;:19;;;18507:15;:54;;;;:::i;:::-;18506:70;;;;:::i;:::-;18471:105:::0;-1:-1:-1;18591:14:0::1;18608:42;18471:105:::0;18608:15;:42:::1;:::i;:::-;18591:59:::0;-1:-1:-1;18692:21:0::1;18730:24;18591:59:::0;18730:16:::1;:24::i;:::-;18771:20;18794:38;18818:14:::0;18794:21:::1;:38;:::i;:::-;18771:61;;18847:19;18916:9;:19;;;18902:11;:33;;;;:::i;:::-;18869:67;::::0;:12;:67:::1;:::i;:::-;18847:89;;18951:29;18997:9;:19;;;18983:11;:33;;;;:::i;:::-;18951:65:::0;-1:-1:-1;19037:25:0;;19033:172:::1;;19128:61;19141:24;19167:21;19128:12;:61::i;:::-;19262:19:::0;;19221:20:::1;::::0;19244:15:::1;:11:::0;19258:1:::1;19244:15;:::i;:::-;:37;;;;:::i;:::-;19221:60:::0;-1:-1:-1;19300:16:0;;19296:105:::1;;19345:15;::::0;19337:48:::1;::::0;-1:-1:-1;;;;;19345:15:0::1;19372:12:::0;19337:34:::1;:48::i;:::-;18228:1184;;;;;;;;18180:1232;18045:1374;13626:1;13642:10:::0;:18;;-1:-1:-1;;;;13642:18:0;;;17944:1475;;:::o;8536:615::-;-1:-1:-1;;;;;8676:20:0;;8668:70;;;;-1:-1:-1;;;8668:70:0;;15049:2:1;8668:70:0;;;15031:21:1;15088:2;15068:18;;;15061:30;15127:34;15107:18;;;15100:62;-1:-1:-1;;;15178:18:1;;;15171:35;15223:19;;8668:70:0;14847:401:1;8668:70:0;-1:-1:-1;;;;;8757:23:0;;8749:71;;;;-1:-1:-1;;;8749:71:0;;15455:2:1;8749:71:0;;;15437:21:1;15494:2;15474:18;;;15467:30;15533:34;15513:18;;;15506:62;-1:-1:-1;;;15584:18:1;;;15577:33;15627:19;;8749:71:0;15253:399:1;8749:71:0;-1:-1:-1;;;;;8857:17:0;;8833:21;8857:17;;;;;;;;;;;8907:23;;;;8885:111;;;;-1:-1:-1;;;8885:111:0;;15859:2:1;8885:111:0;;;15841:21:1;15898:2;15878:18;;;15871:30;15937:34;15917:18;;;15910:62;-1:-1:-1;;;15988:18:1;;;15981:36;16034:19;;8885:111:0;15657:402:1;8885:111:0;9027:22;9043:6;9027:13;:22;:::i;:::-;-1:-1:-1;;;;;9007:17:0;;;:9;:17;;;;;;;;;;;:42;;;;9060:20;;;;;;;;:30;;9084:6;;9007:9;9060:30;;9084:6;;9060:30;:::i;:::-;;;;;;;;9125:9;-1:-1:-1;;;;;9108:35:0;9117:6;-1:-1:-1;;;;;9108:35:0;;9136:6;9108:35;;;;3330:25:1;;3318:2;3303:18;;3184:177;9108:35:0;;;;;;;;8657:494;8536:615;;;:::o;19427:534::-;19577:16;;;19591:1;19577:16;;;;;;;;19553:21;;19577:16;;;;;;;;;;-1:-1:-1;19577:16:0;19553:40;;19622:4;19604;19609:1;19604:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19604:23:0;;;:7;;;;;;;;;;:23;;;;19648:6;;:13;;;-1:-1:-1;;;19648:13:0;;;;:6;;;;;:11;;:13;;;;;19604:7;;19648:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19638:4;19643:1;19638:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19638:23:0;;;:7;;;;;;;;;:23;19706:6;;19674:53;;19691:4;;19706:6;19715:11;19674:8;:53::i;:::-;19766:6;;:187;;-1:-1:-1;;;19766:187:0;;-1:-1:-1;;;;;19766:6:0;;;;:57;;:187;;19838:11;;19766:6;;19880:4;;19907;;19927:15;;19766:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19482:479;19427:534;:::o;19969:498::-;20149:6;;20117:53;;20134:4;;-1:-1:-1;;;;;20149:6:0;20158:11;20117:8;:53::i;:::-;20213:6;;:246;;-1:-1:-1;;;20213:246:0;;20276:4;20213:246;;;17646:34:1;17696:18;;;17689:34;;;20213:6:0;17739:18:1;;;17732:34;;;17782:18;;;17775:34;13258:42:0;17825:19:1;;;17818:44;20433:15:0;17878:19:1;;;17871:35;-1:-1:-1;;;;;20213:6:0;;;;:22;;20243:9;;17580:19:1;;20213:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19969:498;;:::o;10429:391::-;10558:6;10533:21;:31;;10511:110;;;;-1:-1:-1;;;10511:110:0;;18430:2:1;10511:110:0;;;18412:21:1;18469:2;18449:18;;;18442:30;18508:31;18488:18;;;18481:59;18557:18;;10511:110:0;18228:353:1;10511:110:0;10635:12;10653:9;-1:-1:-1;;;;;10653:14:0;10675:6;10653:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10634:52;;;10719:7;10697:115;;;;-1:-1:-1;;;10697:115:0;;18998:2:1;10697:115:0;;;18980:21:1;19037:2;19017:18;;;19010:30;19076:34;19056:18;;;19049:62;19147:28;19127:18;;;19120:56;19193:19;;10697:115:0;18796:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:127::-;1415:10;1410:3;1406:20;1403:1;1396:31;1446:4;1443:1;1436:15;1470:4;1467:1;1460:15;1486:118;1572:5;1565:13;1558:21;1551:5;1548:32;1538:60;;1594:1;1591;1584:12;1609:128;1674:20;;1703:28;1674:20;1703:28;:::i;1742:1191::-;1832:6;1840;1893:2;1881:9;1872:7;1868:23;1864:32;1861:52;;;1909:1;1906;1899:12;1861:52;1949:9;1936:23;1978:18;2019:2;2011:6;2008:14;2005:34;;;2035:1;2032;2025:12;2005:34;2073:6;2062:9;2058:22;2048:32;;2118:7;2111:4;2107:2;2103:13;2099:27;2089:55;;2140:1;2137;2130:12;2089:55;2176:2;2163:16;2198:4;2221:2;2217;2214:10;2211:36;;;2227:18;;:::i;:::-;2273:2;2270:1;2266:10;2305:2;2299:9;2368:2;2364:7;2359:2;2355;2351:11;2347:25;2339:6;2335:38;2423:6;2411:10;2408:22;2403:2;2391:10;2388:18;2385:46;2382:72;;;2434:18;;:::i;:::-;2470:2;2463:22;2520:18;;;2554:15;;;;-1:-1:-1;2596:11:1;;;2592:20;;;2624:19;;;2621:39;;;2656:1;2653;2646:12;2621:39;2680:11;;;;2700:148;2716:6;2711:3;2708:15;2700:148;;;2782:23;2801:3;2782:23;:::i;:::-;2770:36;;2733:12;;;;2826;;;;2700:148;;;2867:6;-1:-1:-1;2892:35:1;;-1:-1:-1;2908:18:1;;;2892:35;:::i;:::-;2882:45;;;;;;1742:1191;;;;;:::o;2938:241::-;2994:6;3047:2;3035:9;3026:7;3022:23;3018:32;3015:52;;;3063:1;3060;3053:12;3015:52;3102:9;3089:23;3121:28;3143:5;3121:28;:::i;:::-;3168:5;2938:241;-1:-1:-1;;;2938:241:1:o;3366:456::-;3443:6;3451;3459;3512:2;3500:9;3491:7;3487:23;3483:32;3480:52;;;3528:1;3525;3518:12;3480:52;3567:9;3554:23;3586:31;3611:5;3586:31;:::i;:::-;3636:5;-1:-1:-1;3693:2:1;3678:18;;3665:32;3706:33;3665:32;3706:33;:::i;:::-;3366:456;;3758:7;;-1:-1:-1;;;3812:2:1;3797:18;;;;3784:32;;3366:456::o;4016:382::-;4081:6;4089;4142:2;4130:9;4121:7;4117:23;4113:32;4110:52;;;4158:1;4155;4148:12;4110:52;4197:9;4184:23;4216:31;4241:5;4216:31;:::i;:::-;4266:5;-1:-1:-1;4323:2:1;4308:18;;4295:32;4336:30;4295:32;4336:30;:::i;:::-;4385:7;4375:17;;;4016:382;;;;;:::o;4403:180::-;4462:6;4515:2;4503:9;4494:7;4490:23;4486:32;4483:52;;;4531:1;4528;4521:12;4483:52;-1:-1:-1;4554:23:1;;4403:180;-1:-1:-1;4403:180:1:o;4588:247::-;4647:6;4700:2;4688:9;4679:7;4675:23;4671:32;4668:52;;;4716:1;4713;4706:12;4668:52;4755:9;4742:23;4774:31;4799:5;4774:31;:::i;5301:388::-;5369:6;5377;5430:2;5418:9;5409:7;5405:23;5401:32;5398:52;;;5446:1;5443;5436:12;5398:52;5485:9;5472:23;5504:31;5529:5;5504:31;:::i;:::-;5554:5;-1:-1:-1;5611:2:1;5596:18;;5583:32;5624:33;5583:32;5624:33;:::i;5917:380::-;5996:1;5992:12;;;;6039;;;6060:61;;6114:4;6106:6;6102:17;6092:27;;6060:61;6167:2;6159:6;6156:14;6136:18;6133:38;6130:161;;6213:10;6208:3;6204:20;6201:1;6194:31;6248:4;6245:1;6238:15;6276:4;6273:1;6266:15;6130:161;;5917:380;;;:::o;6302:356::-;6504:2;6486:21;;;6523:18;;;6516:30;6582:34;6577:2;6562:18;;6555:62;6649:2;6634:18;;6302:356::o;6663:127::-;6724:10;6719:3;6715:20;6712:1;6705:31;6755:4;6752:1;6745:15;6779:4;6776:1;6769:15;6795:127;6856:10;6851:3;6847:20;6844:1;6837:31;6887:4;6884:1;6877:15;6911:4;6908:1;6901:15;6927:135;6966:3;6987:17;;;6984:43;;7007:18;;:::i;:::-;-1:-1:-1;7054:1:1;7043:13;;6927:135::o;7829:128::-;7896:9;;;7917:11;;;7914:37;;;7931:18;;:::i;7962:125::-;8027:9;;;8048:10;;;8045:36;;;8061:18;;:::i;8523:422::-;8612:1;8655:5;8612:1;8669:270;8690:7;8680:8;8677:21;8669:270;;;8749:4;8745:1;8741:6;8737:17;8731:4;8728:27;8725:53;;;8758:18;;:::i;:::-;8808:7;8798:8;8794:22;8791:55;;;8828:16;;;;8791:55;8907:22;;;;8867:15;;;;8669:270;;;8673:3;8523:422;;;;;:::o;8950:806::-;8999:5;9029:8;9019:80;;-1:-1:-1;9070:1:1;9084:5;;9019:80;9118:4;9108:76;;-1:-1:-1;9155:1:1;9169:5;;9108:76;9200:4;9218:1;9213:59;;;;9286:1;9281:130;;;;9193:218;;9213:59;9243:1;9234:10;;9257:5;;;9281:130;9318:3;9308:8;9305:17;9302:43;;;9325:18;;:::i;:::-;-1:-1:-1;;9381:1:1;9367:16;;9396:5;;9193:218;;9495:2;9485:8;9482:16;9476:3;9470:4;9467:13;9463:36;9457:2;9447:8;9444:16;9439:2;9433:4;9430:12;9426:35;9423:77;9420:159;;;-1:-1:-1;9532:19:1;;;9564:5;;9420:159;9611:34;9636:8;9630:4;9611:34;:::i;:::-;9681:6;9677:1;9673:6;9669:19;9660:7;9657:32;9654:58;;;9692:18;;:::i;:::-;9730:20;;8950:806;-1:-1:-1;;;8950:806:1:o;9761:140::-;9819:5;9848:47;9889:4;9879:8;9875:19;9869:4;9848:47;:::i;9906:168::-;9979:9;;;10010;;10027:15;;;10021:22;;10007:37;9997:71;;10048:18;;:::i;11590:245::-;11657:6;11710:2;11698:9;11689:7;11685:23;11681:32;11678:52;;;11726:1;11723;11716:12;11678:52;11758:9;11752:16;11777:28;11799:5;11777:28;:::i;14625:217::-;14665:1;14691;14681:132;;14735:10;14730:3;14726:20;14723:1;14716:31;14770:4;14767:1;14760:15;14798:4;14795:1;14788:15;14681:132;-1:-1:-1;14827:9:1;;14625:217::o;16064:251::-;16134:6;16187:2;16175:9;16166:7;16162:23;16158:32;16155:52;;;16203:1;16200;16193:12;16155:52;16235:9;16229:16;16254:31;16279:5;16254:31;:::i;16320:980::-;16582:4;16630:3;16619:9;16615:19;16661:6;16650:9;16643:25;16687:2;16725:6;16720:2;16709:9;16705:18;16698:34;16768:3;16763:2;16752:9;16748:18;16741:31;16792:6;16827;16821:13;16858:6;16850;16843:22;16896:3;16885:9;16881:19;16874:26;;16935:2;16927:6;16923:15;16909:29;;16956:1;16966:195;16980:6;16977:1;16974:13;16966:195;;;17045:13;;-1:-1:-1;;;;;17041:39:1;17029:52;;17136:15;;;;17101:12;;;;17077:1;16995:9;16966:195;;;-1:-1:-1;;;;;;;17217:32:1;;;;17212:2;17197:18;;17190:60;-1:-1:-1;;;17281:3:1;17266:19;17259:35;17178:3;16320:980;-1:-1:-1;;;16320:980:1:o;17917:306::-;18005:6;18013;18021;18074:2;18062:9;18053:7;18049:23;18045:32;18042:52;;;18090:1;18087;18080:12;18042:52;18119:9;18113:16;18103:26;;18169:2;18158:9;18154:18;18148:25;18138:35;;18213:2;18202:9;18198:18;18192:25;18182:35;;17917:306;;;;;:::o
Swarm Source
ipfs://91a70ea82f2aedb7dbab031d71da9d1bdec12b3a4108b8589a227d23d34f799a
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.