ERC-20
Overview
Max Total Supply
420,000,000,000,000 PMC
Holders
221
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
4,158,000,000,000 PMCValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PMC
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-12 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.9; 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 IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance( address owner, address spender ) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom( address from, address to, uint value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit( address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn( address indexed sender, uint amount0, uint amount1, address indexed to ); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap( uint amount0Out, uint amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @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 IERC20Metadata is IERC20 { /** * @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 ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default 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 {ERC20} 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 * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-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 {IERC20-allowance}. */ function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-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 {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * 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); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); 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 {IERC20-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].add(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 {IERC20-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) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); 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), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), 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), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function swapTokensForExactETH( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactTokensForETH( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapETHForExactTokens( uint amountOut, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function quote( uint amountA, uint reserveA, uint reserveB ) external pure returns (uint amountB); function getAmountOut( uint amountIn, uint reserveIn, uint reserveOut ) external pure returns (uint amountOut); function getAmountIn( uint amountOut, uint reserveIn, uint reserveOut ) external pure returns (uint amountIn); function getAmountsOut( uint amountIn, address[] calldata path ) external view returns (uint[] memory amounts); function getAmountsIn( uint amountOut, address[] calldata path ) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract PMC is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; address public devWallet; address public buyBackWallet; uint256 public maxTransactionAmount; uint256 public maxWallet; uint8 private _decimals; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public rescueSwap = false; bool public snipingPeroid = true; uint256 public tradingActiveBlock; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public buyBuyBackFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public sellBuyBackFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; uint256 public tokensForBuyBack; /******************/ // exlcude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public _isBot; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event devWalletUpdated( address indexed newWallet, address indexed oldWallet ); event buyBackWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event BuyBackTriggered(uint256 amount); event OwnerForcedSwapBack(uint256 timestamp); constructor() ERC20("Planet Memes Coin", "PMC") { address _owner = msg.sender; _decimals = 18; uint256 totalSupply = 420000000000000 * (10 ** _decimals); maxTransactionAmount = (totalSupply * 1) / 100; // 1% maxTransactionAmountTxn maxWallet = (totalSupply * 1) / 100; // 1% maxWallet buyMarketingFee = 1; buyLiquidityFee = 0; buyDevFee = 0; buyBuyBackFee = 0; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBuyBackFee; sellMarketingFee = 1; sellLiquidityFee = 0; sellDevFee = 0; sellBuyBackFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBuyBackFee; marketingWallet = 0xEF9355DFc1f0F642d6CD5930013F9f72983F40b3; // set as marketing wallet devWallet = 0xdA0BcAd39c76B76B494E24Ef7ba6548CeD96CDD8; // set as dev wallet buyBackWallet = address(_owner); // set as buyBackWallet //End of Router Variables. IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); // exclude from paying fees or having max transaction amount excludeFromFees(_owner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(_owner, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(_owner, totalSupply); transferOwnership(_owner); } receive() external payable {} // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; } function startSnipingPeroid() external onlyOwner { snipingPeroid = true; } function endSnipingPeroid() external onlyOwner { snipingPeroid = false; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function updateMaxAmount(uint256 newPercent) external onlyOwner { require( newPercent >= 1, "Cannot set maxTransactionAmount lower than 1%" ); maxTransactionAmount = ((totalSupply() * newPercent) / 100); } function updateMaxWallet(uint256 newPercent) external onlyOwner { require( newPercent >= 1, "Cannot set maxTransactionAmount lower than 1%" ); maxWallet = ((totalSupply() * newPercent) / 100); } function excludeFromMaxTransaction( address updAds, bool isEx ) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function decimals() public view override returns (uint8) { return _decimals; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } // only use this to disable swapback and send tax in form of tokens function updateRescueSwap(bool enabled) external onlyOwner { rescueSwap = enabled; } function updateBFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _buyBackFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyBuyBackFee = _buyBackFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBuyBackFee; require(buyTotalFees <= 70, "Must keep fees at 70% or less"); } // CHECKED function updateSFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _buyBackFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellBuyBackFee = _buyBackFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBuyBackFee; require(sellTotalFees <= 70, "Must keep fees at 70% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair( address pair, bool value ) external onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet( address newMarketingWallet ) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function updateBuyBackWallet(address newWallet) external onlyOwner { emit buyBackWalletUpdated(newWallet, buyBackWallet); buyBackWallet = newWallet; } function isExcludedFromFees(address account) external view returns (bool) { return _isExcludedFromFees[account]; } function setGoodAddress(address account) external onlyOwner { _isBot[account] = false; } function setBlockAddr(address account) external onlyOwner { _isBot[account] = true; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !(_isExcludedFromFees[from] || _isExcludedFromFees[to]) && !swapping ) { //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance > 0; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { if (tradingActiveBlock + 2 >= block.number && snipingPeroid) { if (automatedMarketMakerPairs[to]) _isBot[from] = true; else if (automatedMarketMakerPairs[from]) _isBot[to] = true; else { _isBot[to] = true; _isBot[from] = true; } } // on sell else if (automatedMarketMakerPairs[to]) { require(!_isBot[from], "Bot cant sell"); if (sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; tokensForBuyBack += (fees * sellBuyBackFee) / sellTotalFees; } } // on buy else if (automatedMarketMakerPairs[from]) { if (buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokensForBuyBack += (fees * buyBuyBackFee) / buyTotalFees; } } else { require(!_isBot[from], "Bot is rekt"); } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ) {} catch {} } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity try uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ) {} catch {} } function resetTaxAmount() public onlyOwner { tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; tokensForBuyBack = 0; } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); if (rescueSwap) { if (contractBalance > 0) { super._transfer( address(this), marketingWallet, contractBalance ); } return; } uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev + tokensForBuyBack; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div( totalTokensToSwap ); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForBuyBack = ethBalance.mul(tokensForBuyBack).div( totalTokensToSwap ); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev - ethForBuyBack; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; tokensForBuyBack = 0; (success, ) = address(devWallet).call{value: ethForDev}(""); (success, ) = address(buyBackWallet).call{value: ethForBuyBack}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } }
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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"buyBackWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endSnipingPeroid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"resetTaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setBlockAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setGoodAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingPeroid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startSnipingPeroid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBuyBack","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_buyBackFee","type":"uint256"}],"name":"updateBFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBuyBackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercent","type":"uint256"}],"name":"updateMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercent","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateRescueSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_buyBackFee","type":"uint256"}],"name":"updateSFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506000600b60036101000a81548160ff0219169083151502179055506000600b60046101000a81548160ff0219169083151502179055506001600b60056101000a81548160ff0219169083151502179055503480156200009857600080fd5b506040518060400160405280601181526020017f506c616e6574204d656d657320436f696e0000000000000000000000000000008152506040518060400160405280600381526020017f504d43000000000000000000000000000000000000000000000000000000000081525081600390816200011691906200102b565b5080600490816200012891906200102b565b50505060006200013d620006d460201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506012600b60006101000a81548160ff021916908360ff1602179055506000600b60009054906101000a900460ff16600a6200021d9190620012a2565b66017dfcdece4000620002319190620012f3565b90506064600182620002449190620012f3565b6200025091906200136d565b6009819055506064600182620002679190620012f3565b6200027391906200136d565b600a819055506001600e819055506000600f8190555060006010819055506000601181905550601154601054600f54600e54620002b19190620013a5565b620002bd9190620013a5565b620002c99190620013a5565b600d819055506001601381905550600060148190555060006015819055506000601681905550601654601554601454601354620003079190620013a5565b620003139190620013a5565b6200031f9190620013a5565b60128190555073ef9355dfc1f0f642d6cd5930013f9f72983f40b3600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073da0bcad39c76b76b494e24ef7ba6548ced96cdd8600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200043c816001620006dc60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e291906200144a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200054a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057091906200144a565b6040518363ffffffff1660e01b81526004016200058f9291906200148d565b6020604051808303816000875af1158015620005af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d591906200144a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200061d60a0516001620006dc60201b60201c565b6200063260a0516001620007d960201b60201c565b620006458360016200087a60201b60201c565b620006583060016200087a60201b60201c565b6200066d61dead60016200087a60201b60201c565b62000680836001620006dc60201b60201c565b62000693306001620006dc60201b60201c565b620006a861dead6001620006dc60201b60201c565b620006ba8383620009c760201b60201c565b620006cb8362000b7560201b60201c565b50505062001721565b600033905090565b620006ec620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200077e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000775906200151b565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6200088a620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000913906200151b565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009bb91906200155a565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a3090620015c7565b60405180910390fd5b62000a4d6000838362000d4960201b60201c565b62000a698160025462000d4e60201b62002c051790919060201c565b60028190555062000ac7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000d4e60201b62002c051790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b699190620015fa565b60405180910390a35050565b62000b85620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000c17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c0e906200151b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000c89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c80906200168d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600080828462000d5f9190620013a5565b90508381101562000da7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d9e90620016ff565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e3357607f821691505b60208210810362000e495762000e4862000deb565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000eb37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e74565b62000ebf868362000e74565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f0c62000f0662000f008462000ed7565b62000ee1565b62000ed7565b9050919050565b6000819050919050565b62000f288362000eeb565b62000f4062000f378262000f13565b84845462000e81565b825550505050565b600090565b62000f5762000f48565b62000f6481848462000f1d565b505050565b5b8181101562000f8c5762000f8060008262000f4d565b60018101905062000f6a565b5050565b601f82111562000fdb5762000fa58162000e4f565b62000fb08462000e64565b8101602085101562000fc0578190505b62000fd862000fcf8562000e64565b83018262000f69565b50505b505050565b600082821c905092915050565b6000620010006000198460080262000fe0565b1980831691505092915050565b60006200101b838362000fed565b9150826002028217905092915050565b620010368262000db1565b67ffffffffffffffff81111562001052576200105162000dbc565b5b6200105e825462000e1a565b6200106b82828562000f90565b600060209050601f831160018114620010a357600084156200108e578287015190505b6200109a85826200100d565b8655506200110a565b601f198416620010b38662000e4f565b60005b82811015620010dd57848901518255600182019150602085019450602081019050620010b6565b86831015620010fd5784890151620010f9601f89168262000fed565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620011a05780860481111562001178576200117762001112565b5b6001851615620011885780820291505b8081029050620011988562001141565b945062001158565b94509492505050565b600082620011bb57600190506200128e565b81620011cb57600090506200128e565b8160018114620011e45760028114620011ef5762001225565b60019150506200128e565b60ff84111562001204576200120362001112565b5b8360020a9150848211156200121e576200121d62001112565b5b506200128e565b5060208310610133831016604e8410600b84101617156200125f5782820a90508381111562001259576200125862001112565b5b6200128e565b6200126e84848460016200114e565b9250905081840481111562001288576200128762001112565b5b81810290505b9392505050565b600060ff82169050919050565b6000620012af8262000ed7565b9150620012bc8362001295565b9250620012eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620011a9565b905092915050565b6000620013008262000ed7565b91506200130d8362000ed7565b92508282026200131d8162000ed7565b9150828204841483151762001337576200133662001112565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200137a8262000ed7565b9150620013878362000ed7565b9250826200139a57620013996200133e565b5b828204905092915050565b6000620013b28262000ed7565b9150620013bf8362000ed7565b9250828201905080821115620013da57620013d962001112565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200141282620013e5565b9050919050565b620014248162001405565b81146200143057600080fd5b50565b600081519050620014448162001419565b92915050565b600060208284031215620014635762001462620013e0565b5b6000620014738482850162001433565b91505092915050565b620014878162001405565b82525050565b6000604082019050620014a460008301856200147c565b620014b360208301846200147c565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001503602083620014ba565b91506200151082620014cb565b602082019050919050565b600060208201905081810360008301526200153681620014f4565b9050919050565b60008115159050919050565b62001554816200153d565b82525050565b600060208201905062001571600083018462001549565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620015af601f83620014ba565b9150620015bc8262001577565b602082019050919050565b60006020820190508181036000830152620015e281620015a0565b9050919050565b620015f48162000ed7565b82525050565b6000602082019050620016116000830184620015e9565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062001675602683620014ba565b9150620016828262001617565b604082019050919050565b60006020820190508181036000830152620016a88162001666565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620016e7601b83620014ba565b9150620016f482620016af565b602082019050919050565b600060208201905081810360008301526200171a81620016d8565b9050919050565b60805160a051615bff62001771600039600081816116ae015261217701526000818161123f01528181614653015281816147340152818161475b015281816147f101526148180152615bff6000f3fe6080604052600436106103d25760003560e01c806387b85804116101fd578063aacebbe311610118578063d79270ef116100ab578063f11a24d31161007a578063f11a24d314610e3a578063f2fde38b14610e65578063f637434214610e8e578063f8b45b0514610eb9578063fced320a14610ee4576103d9565b8063d79270ef14610d7c578063d85ba06314610da7578063dd62ed3e14610dd2578063ee40166e14610e0f576103d9565b8063bbc0c742116100e7578063bbc0c74214610ce6578063bf1de3e614610d11578063c024666814610d28578063c8c8ebe414610d51576103d9565b8063aacebbe314610c2c578063abb8105214610c55578063ae13513514610c92578063b62496f514610ca9576103d9565b806395d89b4111610190578063a0d82dc51161015f578063a0d82dc514610b5e578063a1d11b8514610b89578063a457c2d714610bb2578063a9059cbb14610bef576103d9565b806395d89b4114610ab45780639a7a23d614610adf5780639c3b4fdc14610b085780639fccce3214610b33576103d9565b8063917c978e116101cc578063917c978e14610a0e5780639213691314610a37578063924de9b714610a62578063955b225b14610a8b576103d9565b806387b85804146109785780638a8c523c146109a15780638da5cb5b146109b85780638ea5220f146109e3576103d9565b806327c8f835116102ed5780636ddd1713116102805780637571336a1161024f5780637571336a146108e257806375f0a8741461090b5780637bce5a04146109365780637dd72e8d14610961576103d9565b80636ddd17131461083857806370a0823114610863578063715018a6146108a0578063751039fc146108b7576103d9565b80634a62bb65116102bc5780634a62bb651461077a5780634c24c51d146107a55780634fbee193146107d05780636a486a8e1461080d576103d9565b806327c8f835146106bc578063313ce567146106e7578063395093511461071257806349bd5a5e1461074f576103d9565b80631816467f116103655780631cd348c0116103345780631cd348c0146105fe5780631f3fed8f146106295780631fe70a981461065457806323b872dd1461067f576103d9565b80631816467f146105565780631a221dbb1461057f5780631a8145bb146105aa5780631c499ab0146105d5576103d9565b8063106b5da1116103a1578063106b5da11461049a57806310d5de53146104c35780631694505e1461050057806318160ddd1461052b576103d9565b806306e7b14d146103de57806306fdde0314610407578063095ea7b3146104325780630b166d501461046f576103d9565b366103d957005b600080fd5b3480156103ea57600080fd5b506104056004803603810190610400919061498c565b610f0d565b005b34801561041357600080fd5b5061041c611064565b6040516104299190614a49565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190614aa1565b6110f6565b6040516104669190614afc565b60405180910390f35b34801561047b57600080fd5b50610484611114565b6040516104919190614b26565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc9190614b41565b61111a565b005b3480156104cf57600080fd5b506104ea60048036038101906104e5919061498c565b61121d565b6040516104f79190614afc565b60405180910390f35b34801561050c57600080fd5b5061051561123d565b6040516105229190614bcd565b60405180910390f35b34801561053757600080fd5b50610540611261565b60405161054d9190614b26565b60405180910390f35b34801561056257600080fd5b5061057d6004803603810190610578919061498c565b61126b565b005b34801561058b57600080fd5b506105946113c2565b6040516105a19190614b26565b60405180910390f35b3480156105b657600080fd5b506105bf6113c8565b6040516105cc9190614b26565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f79190614b41565b6113ce565b005b34801561060a57600080fd5b506106136114d1565b6040516106209190614bf7565b60405180910390f35b34801561063557600080fd5b5061063e6114f7565b60405161064b9190614b26565b60405180910390f35b34801561066057600080fd5b506106696114fd565b6040516106769190614b26565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a19190614c12565b611503565b6040516106b39190614afc565b60405180910390f35b3480156106c857600080fd5b506106d16115dc565b6040516106de9190614bf7565b60405180910390f35b3480156106f357600080fd5b506106fc6115e2565b6040516107099190614c81565b60405180910390f35b34801561071e57600080fd5b5061073960048036038101906107349190614aa1565b6115f9565b6040516107469190614afc565b60405180910390f35b34801561075b57600080fd5b506107646116ac565b6040516107719190614bf7565b60405180910390f35b34801561078657600080fd5b5061078f6116d0565b60405161079c9190614afc565b60405180910390f35b3480156107b157600080fd5b506107ba6116e3565b6040516107c79190614afc565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f2919061498c565b6116f6565b6040516108049190614afc565b60405180910390f35b34801561081957600080fd5b5061082261174c565b60405161082f9190614b26565b60405180910390f35b34801561084457600080fd5b5061084d611752565b60405161085a9190614afc565b60405180910390f35b34801561086f57600080fd5b5061088a6004803603810190610885919061498c565b611765565b6040516108979190614b26565b60405180910390f35b3480156108ac57600080fd5b506108b56117ad565b005b3480156108c357600080fd5b506108cc611905565b6040516108d99190614afc565b60405180910390f35b3480156108ee57600080fd5b5061090960048036038101906109049190614cc8565b6119c0565b005b34801561091757600080fd5b50610920611ab2565b60405161092d9190614bf7565b60405180910390f35b34801561094257600080fd5b5061094b611ad8565b6040516109589190614b26565b60405180910390f35b34801561096d57600080fd5b50610976611ade565b005b34801561098457600080fd5b5061099f600480360381019061099a919061498c565b611b97565b005b3480156109ad57600080fd5b506109b6611c89565b005b3480156109c457600080fd5b506109cd611d5f565b6040516109da9190614bf7565b60405180910390f35b3480156109ef57600080fd5b506109f8611d89565b604051610a059190614bf7565b60405180910390f35b348015610a1a57600080fd5b50610a356004803603810190610a309190614d08565b611daf565b005b348015610a4357600080fd5b50610a4c611ede565b604051610a599190614b26565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a849190614d6f565b611ee4565b005b348015610a9757600080fd5b50610ab26004803603810190610aad9190614d6f565b611f98565b005b348015610ac057600080fd5b50610ac961204c565b604051610ad69190614a49565b60405180910390f35b348015610aeb57600080fd5b50610b066004803603810190610b019190614cc8565b6120de565b005b348015610b1457600080fd5b50610b1d612211565b604051610b2a9190614b26565b60405180910390f35b348015610b3f57600080fd5b50610b48612217565b604051610b559190614b26565b60405180910390f35b348015610b6a57600080fd5b50610b7361221d565b604051610b809190614b26565b60405180910390f35b348015610b9557600080fd5b50610bb06004803603810190610bab9190614d08565b612223565b005b348015610bbe57600080fd5b50610bd96004803603810190610bd49190614aa1565b612352565b604051610be69190614afc565b60405180910390f35b348015610bfb57600080fd5b50610c166004803603810190610c119190614aa1565b61241f565b604051610c239190614afc565b60405180910390f35b348015610c3857600080fd5b50610c536004803603810190610c4e919061498c565b61243d565b005b348015610c6157600080fd5b50610c7c6004803603810190610c77919061498c565b612594565b604051610c899190614afc565b60405180910390f35b348015610c9e57600080fd5b50610ca76125b4565b005b348015610cb557600080fd5b50610cd06004803603810190610ccb919061498c565b612668565b604051610cdd9190614afc565b60405180910390f35b348015610cf257600080fd5b50610cfb612688565b604051610d089190614afc565b60405180910390f35b348015610d1d57600080fd5b50610d2661269b565b005b348015610d3457600080fd5b50610d4f6004803603810190610d4a9190614cc8565b61274f565b005b348015610d5d57600080fd5b50610d6661288f565b604051610d739190614b26565b60405180910390f35b348015610d8857600080fd5b50610d91612895565b604051610d9e9190614afc565b60405180910390f35b348015610db357600080fd5b50610dbc6128a8565b604051610dc99190614b26565b60405180910390f35b348015610dde57600080fd5b50610df96004803603810190610df49190614d9c565b6128ae565b604051610e069190614b26565b60405180910390f35b348015610e1b57600080fd5b50610e24612935565b604051610e319190614b26565b60405180910390f35b348015610e4657600080fd5b50610e4f61293b565b604051610e5c9190614b26565b60405180910390f35b348015610e7157600080fd5b50610e8c6004803603810190610e87919061498c565b612941565b005b348015610e9a57600080fd5b50610ea3612b07565b604051610eb09190614b26565b60405180910390f35b348015610ec557600080fd5b50610ece612b0d565b604051610edb9190614b26565b60405180910390f35b348015610ef057600080fd5b50610f0b6004803603810190610f06919061498c565b612b13565b005b610f15612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90614e28565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f15e571905a1c816ac9ad091c2b82079da1ad3668d345e3894c424c5e5b47d97b60405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606003805461107390614e77565b80601f016020809104026020016040519081016040528092919081815260200182805461109f90614e77565b80156110ec5780601f106110c1576101008083540402835291602001916110ec565b820191906000526020600020905b8154815290600101906020018083116110cf57829003601f168201915b5050505050905090565b600061110a611103612c63565b8484612c6b565b6001905092915050565b601a5481565b611122612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a890614e28565b60405180910390fd5b60018110156111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90614f1a565b60405180910390fd5b606481611200611261565b61120a9190614f69565b6112149190614fda565b60098190555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b611273612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f990614e28565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60185481565b6113d6612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90614e28565b60405180910390fd5b60018110156114a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a090614f1a565b60405180910390fd5b6064816114b4611261565b6114be9190614f69565b6114c89190614fda565b600a8190555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60115481565b6000611510848484612e34565b6115d18461151c612c63565b6115cc85604051806060016040528060288152602001615b7d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611582612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d1e9092919063ffffffff16565b612c6b565b600190509392505050565b61dead81565b6000600b60009054906101000a900460ff16905090565b60006116a2611606612c63565b8461169d8560016000611617612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c0590919063ffffffff16565b612c6b565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60019054906101000a900460ff1681565b600b60049054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b600b60039054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117b5612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b90614e28565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061190f612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461199e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199590614e28565b60405180910390fd5b6000600b60016101000a81548160ff0219169083151502179055506001905090565b6119c8612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90614e28565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b611ae6612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6c90614e28565b60405180910390fd5b6000601881905550600060178190555060006019819055506000601a81905550565b611b9f612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2590614e28565b60405180910390fd5b6001601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611c91612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1790614e28565b60405180910390fd5b6001600b60026101000a81548160ff0219169083151502179055506001600b60036101000a81548160ff02191690831515021790555043600c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611db7612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3d90614e28565b60405180910390fd5b83600e8190555082600f819055508160108190555080601181905550601154601054600f54600e54611e78919061500b565b611e82919061500b565b611e8c919061500b565b600d819055506046600d541115611ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecf9061508b565b60405180910390fd5b50505050565b60135481565b611eec612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7290614e28565b60405180910390fd5b80600b60036101000a81548160ff02191690831515021790555050565b611fa0612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202690614e28565b60405180910390fd5b80600b60046101000a81548160ff02191690831515021790555050565b60606004805461205b90614e77565b80601f016020809104026020016040519081016040528092919081815260200182805461208790614e77565b80156120d45780601f106120a9576101008083540402835291602001916120d4565b820191906000526020600020905b8154815290600101906020018083116120b757829003601f168201915b5050505050905090565b6120e6612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c90614e28565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fa9061511d565b60405180910390fd5b61220d8282613d82565b5050565b60105481565b60195481565b60155481565b61222b612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b190614e28565b60405180910390fd5b836013819055508260148190555081601581905550806016819055506016546015546014546013546122ec919061500b565b6122f6919061500b565b612300919061500b565b6012819055506046601254111561234c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123439061508b565b60405180910390fd5b50505050565b600061241561235f612c63565b8461241085604051806060016040528060258152602001615ba56025913960016000612389612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d1e9092919063ffffffff16565b612c6b565b6001905092915050565b600061243361242c612c63565b8484612e34565b6001905092915050565b612445612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb90614e28565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d6020528060005260406000206000915054906101000a900460ff1681565b6125bc612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264290614e28565b60405180910390fd5b6000600b60056101000a81548160ff021916908315150217905550565b601e6020528060005260406000206000915054906101000a900460ff1681565b600b60029054906101000a900460ff1681565b6126a3612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272990614e28565b60405180910390fd5b6001600b60056101000a81548160ff021916908315150217905550565b612757612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd90614e28565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516128839190614afc565b60405180910390a25050565b60095481565b600b60059054906101000a900460ff1681565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600f5481565b612949612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf90614e28565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3e906151af565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b600a5481565b612b1b612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba190614e28565b60405180910390fd5b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000808284612c14919061500b565b905083811015612c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c509061521b565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd1906152ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d409061533f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e279190614b26565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9a906153d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0990615463565b60405180910390fd5b600b60029054906101000a900460ff1661300757601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fc75750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffd906154cf565b60405180910390fd5b5b600081036130205761301b83836000613e23565b613d19565b600b60019054906101000a900460ff161561347e5761303d611d5f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130ab575061307b611d5f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130e45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561311e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131c85750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131c65750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b80156131e15750600560149054906101000a900460ff16155b1561347d57601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132895750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613330576009548111156132d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ca90615561565b60405180910390fd5b600a546132df83611765565b826132ea919061500b565b111561332b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613322906155cd565b60405180910390fd5b61347c565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133d35750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134225760095481111561341d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134149061565f565b60405180910390fd5b61347b565b600a5461342e83611765565b82613439919061500b565b111561347a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613471906155cd565b60405180910390fd5b5b5b5b5b600061348930611765565b9050600080821190508080156134ab5750600b60039054906101000a900460ff165b80156134c45750600560149054906101000a900460ff16155b801561351a5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135705750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135c65750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561360a576001600560146101000a81548160ff0219169083151502179055506135ee6140b6565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136c05750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136ca57600090505b60008115613d0957436002600c546136e2919061500b565b101580156136fc5750600b60059054906101000a900460ff165b1561391657601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137b0576001601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613911565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561385f576001601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613910565b6001601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b613ce5565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613afc57601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156139f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ec906156cb565b60405180910390fd5b60006012541115613af757613a286064613a1a601254886144a190919063ffffffff16565b61451b90919063ffffffff16565b905060125460145482613a3b9190614f69565b613a459190614fda565b60186000828254613a56919061500b565b9250508190555060125460155482613a6e9190614f69565b613a789190614fda565b60196000828254613a89919061500b565b9250508190555060125460135482613aa19190614f69565b613aab9190614fda565b60176000828254613abc919061500b565b9250508190555060125460165482613ad49190614f69565b613ade9190614fda565b601a6000828254613aef919061500b565b925050819055505b613ce4565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c55576000600d541115613c5057613b816064613b73600d54886144a190919063ffffffff16565b61451b90919063ffffffff16565b9050600d54600f5482613b949190614f69565b613b9e9190614fda565b60186000828254613baf919061500b565b92505081905550600d5460105482613bc79190614f69565b613bd19190614fda565b60196000828254613be2919061500b565b92505081905550600d54600e5482613bfa9190614f69565b613c049190614fda565b60176000828254613c15919061500b565b92505081905550600d5460115482613c2d9190614f69565b613c379190614fda565b601a6000828254613c48919061500b565b925050819055505b613ce3565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd990615737565b60405180910390fd5b5b5b5b6000811115613cfa57613cf9873083613e23565b5b8085613d069190615757565b94505b613d14878787613e23565b505050505b505050565b6000838311158290613d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d5d9190614a49565b60405180910390fd5b5060008385613d759190615757565b9050809150509392505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e89906153d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ef890615463565b60405180910390fd5b613f0c838383614565565b613f7781604051806060016040528060268152602001615b57602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d1e9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061400a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c0590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516140a99190614b26565b60405180910390a3505050565b60006140c130611765565b9050600b60049054906101000a900460ff161561411557600081111561410f5761410e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613e23565b5b5061449f565b6000601a5460195460175460185461412d919061500b565b614137919061500b565b614141919061500b565b90506000808314806141535750600082145b156141605750505061449f565b6000600283601854866141739190614f69565b61417d9190614fda565b6141879190614fda565b9050600061419e828661456a90919063ffffffff16565b905060004790506141ae826145b4565b60006141c3824761456a90919063ffffffff16565b905060006141ee876141e0601754856144a190919063ffffffff16565b61451b90919063ffffffff16565b905060006142198861420b601954866144a190919063ffffffff16565b61451b90919063ffffffff16565b9050600061424489614236601a54876144a190919063ffffffff16565b61451b90919063ffffffff16565b90506000818385876142569190615757565b6142609190615757565b61426a9190615757565b90506000601881905550600060178190555060006019819055506000601a81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516142d2906157bc565b60006040518083038185875af1925050503d806000811461430f576040519150601f19603f3d011682016040523d82523d6000602084013e614314565b606091505b505080995050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051614360906157bc565b60006040518083038185875af1925050503d806000811461439d576040519150601f19603f3d011682016040523d82523d6000602084013e6143a2565b606091505b5050809950506000881180156143b85750600081115b15614405576143c788826147eb565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56187826018546040516143fc939291906157d1565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161444b906157bc565b60006040518083038185875af1925050503d8060008114614488576040519150601f19603f3d011682016040523d82523d6000602084013e61448d565b606091505b50508099505050505050505050505050505b565b60008083036144b35760009050614515565b600082846144c19190614f69565b90508284826144d09190614fda565b14614510576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016145079061587a565b60405180910390fd5b809150505b92915050565b600061455d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506148c6565b905092915050565b505050565b60006145ac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d1e565b905092915050565b6000600267ffffffffffffffff8111156145d1576145d061589a565b5b6040519080825280602002602001820160405280156145ff5781602001602082028036833780820191505090505b5090503081600081518110614617576146166158c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156146bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146e0919061590d565b816001815181106146f4576146f36158c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614759307f000000000000000000000000000000000000000000000000000000000000000084612c6b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016147bb959493929190615a33565b600060405180830381600087803b1580156147d557600080fd5b505af19250505080156147e6575060015b505050565b614816307f000000000000000000000000000000000000000000000000000000000000000084612c6b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161487d96959493929190615a8d565b60606040518083038185885af1935050505080156148b957506040513d601f19601f820116820180604052508101906148b69190615b03565b60015b156148c2575050505b5050565b6000808311829061490d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016149049190614a49565b60405180910390fd5b506000838561491c9190614fda565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006149598261492e565b9050919050565b6149698161494e565b811461497457600080fd5b50565b60008135905061498681614960565b92915050565b6000602082840312156149a2576149a1614929565b5b60006149b084828501614977565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156149f35780820151818401526020810190506149d8565b60008484015250505050565b6000601f19601f8301169050919050565b6000614a1b826149b9565b614a2581856149c4565b9350614a358185602086016149d5565b614a3e816149ff565b840191505092915050565b60006020820190508181036000830152614a638184614a10565b905092915050565b6000819050919050565b614a7e81614a6b565b8114614a8957600080fd5b50565b600081359050614a9b81614a75565b92915050565b60008060408385031215614ab857614ab7614929565b5b6000614ac685828601614977565b9250506020614ad785828601614a8c565b9150509250929050565b60008115159050919050565b614af681614ae1565b82525050565b6000602082019050614b116000830184614aed565b92915050565b614b2081614a6b565b82525050565b6000602082019050614b3b6000830184614b17565b92915050565b600060208284031215614b5757614b56614929565b5b6000614b6584828501614a8c565b91505092915050565b6000819050919050565b6000614b93614b8e614b898461492e565b614b6e565b61492e565b9050919050565b6000614ba582614b78565b9050919050565b6000614bb782614b9a565b9050919050565b614bc781614bac565b82525050565b6000602082019050614be26000830184614bbe565b92915050565b614bf18161494e565b82525050565b6000602082019050614c0c6000830184614be8565b92915050565b600080600060608486031215614c2b57614c2a614929565b5b6000614c3986828701614977565b9350506020614c4a86828701614977565b9250506040614c5b86828701614a8c565b9150509250925092565b600060ff82169050919050565b614c7b81614c65565b82525050565b6000602082019050614c966000830184614c72565b92915050565b614ca581614ae1565b8114614cb057600080fd5b50565b600081359050614cc281614c9c565b92915050565b60008060408385031215614cdf57614cde614929565b5b6000614ced85828601614977565b9250506020614cfe85828601614cb3565b9150509250929050565b60008060008060808587031215614d2257614d21614929565b5b6000614d3087828801614a8c565b9450506020614d4187828801614a8c565b9350506040614d5287828801614a8c565b9250506060614d6387828801614a8c565b91505092959194509250565b600060208284031215614d8557614d84614929565b5b6000614d9384828501614cb3565b91505092915050565b60008060408385031215614db357614db2614929565b5b6000614dc185828601614977565b9250506020614dd285828601614977565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614e126020836149c4565b9150614e1d82614ddc565b602082019050919050565b60006020820190508181036000830152614e4181614e05565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614e8f57607f821691505b602082108103614ea257614ea1614e48565b5b50919050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614f04602d836149c4565b9150614f0f82614ea8565b604082019050919050565b60006020820190508181036000830152614f3381614ef7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614f7482614a6b565b9150614f7f83614a6b565b9250828202614f8d81614a6b565b91508282048414831517614fa457614fa3614f3a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614fe582614a6b565b9150614ff083614a6b565b92508261500057614fff614fab565b5b828204905092915050565b600061501682614a6b565b915061502183614a6b565b925082820190508082111561503957615038614f3a565b5b92915050565b7f4d757374206b656570206665657320617420373025206f72206c657373000000600082015250565b6000615075601d836149c4565b91506150808261503f565b602082019050919050565b600060208201905081810360008301526150a481615068565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006151076039836149c4565b9150615112826150ab565b604082019050919050565b60006020820190508181036000830152615136816150fa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006151996026836149c4565b91506151a48261513d565b604082019050919050565b600060208201905081810360008301526151c88161518c565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615205601b836149c4565b9150615210826151cf565b602082019050919050565b60006020820190508181036000830152615234816151f8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006152976024836149c4565b91506152a28261523b565b604082019050919050565b600060208201905081810360008301526152c68161528a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006153296022836149c4565b9150615334826152cd565b604082019050919050565b600060208201905081810360008301526153588161531c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153bb6025836149c4565b91506153c68261535f565b604082019050919050565b600060208201905081810360008301526153ea816153ae565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061544d6023836149c4565b9150615458826153f1565b604082019050919050565b6000602082019050818103600083015261547c81615440565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006154b96016836149c4565b91506154c482615483565b602082019050919050565b600060208201905081810360008301526154e8816154ac565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061554b6035836149c4565b9150615556826154ef565b604082019050919050565b6000602082019050818103600083015261557a8161553e565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006155b76013836149c4565b91506155c282615581565b602082019050919050565b600060208201905081810360008301526155e6816155aa565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006156496036836149c4565b9150615654826155ed565b604082019050919050565b600060208201905081810360008301526156788161563c565b9050919050565b7f426f742063616e742073656c6c00000000000000000000000000000000000000600082015250565b60006156b5600d836149c4565b91506156c08261567f565b602082019050919050565b600060208201905081810360008301526156e4816156a8565b9050919050565b7f426f742069732072656b74000000000000000000000000000000000000000000600082015250565b6000615721600b836149c4565b915061572c826156eb565b602082019050919050565b6000602082019050818103600083015261575081615714565b9050919050565b600061576282614a6b565b915061576d83614a6b565b925082820390508181111561578557615784614f3a565b5b92915050565b600081905092915050565b50565b60006157a660008361578b565b91506157b182615796565b600082019050919050565b60006157c782615799565b9150819050919050565b60006060820190506157e66000830186614b17565b6157f36020830185614b17565b6158006040830184614b17565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006158646021836149c4565b915061586f82615808565b604082019050919050565b6000602082019050818103600083015261589381615857565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061590781614960565b92915050565b60006020828403121561592357615922614929565b5b6000615931848285016158f8565b91505092915050565b6000819050919050565b600061595f61595a6159558461593a565b614b6e565b614a6b565b9050919050565b61596f81615944565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159aa8161494e565b82525050565b60006159bc83836159a1565b60208301905092915050565b6000602082019050919050565b60006159e082615975565b6159ea8185615980565b93506159f583615991565b8060005b83811015615a26578151615a0d88826159b0565b9750615a18836159c8565b9250506001810190506159f9565b5085935050505092915050565b600060a082019050615a486000830188614b17565b615a556020830187615966565b8181036040830152615a6781866159d5565b9050615a766060830185614be8565b615a836080830184614b17565b9695505050505050565b600060c082019050615aa26000830189614be8565b615aaf6020830188614b17565b615abc6040830187615966565b615ac96060830186615966565b615ad66080830185614be8565b615ae360a0830184614b17565b979650505050505050565b600081519050615afd81614a75565b92915050565b600080600060608486031215615b1c57615b1b614929565b5b6000615b2a86828701615aee565b9350506020615b3b86828701615aee565b9250506040615b4c86828701615aee565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220799e2bec5f5528bf4e3e236fa8f70584ebf54e6010f38462ad54a1f45a5c5f0564736f6c63430008120033
Deployed Bytecode
0x6080604052600436106103d25760003560e01c806387b85804116101fd578063aacebbe311610118578063d79270ef116100ab578063f11a24d31161007a578063f11a24d314610e3a578063f2fde38b14610e65578063f637434214610e8e578063f8b45b0514610eb9578063fced320a14610ee4576103d9565b8063d79270ef14610d7c578063d85ba06314610da7578063dd62ed3e14610dd2578063ee40166e14610e0f576103d9565b8063bbc0c742116100e7578063bbc0c74214610ce6578063bf1de3e614610d11578063c024666814610d28578063c8c8ebe414610d51576103d9565b8063aacebbe314610c2c578063abb8105214610c55578063ae13513514610c92578063b62496f514610ca9576103d9565b806395d89b4111610190578063a0d82dc51161015f578063a0d82dc514610b5e578063a1d11b8514610b89578063a457c2d714610bb2578063a9059cbb14610bef576103d9565b806395d89b4114610ab45780639a7a23d614610adf5780639c3b4fdc14610b085780639fccce3214610b33576103d9565b8063917c978e116101cc578063917c978e14610a0e5780639213691314610a37578063924de9b714610a62578063955b225b14610a8b576103d9565b806387b85804146109785780638a8c523c146109a15780638da5cb5b146109b85780638ea5220f146109e3576103d9565b806327c8f835116102ed5780636ddd1713116102805780637571336a1161024f5780637571336a146108e257806375f0a8741461090b5780637bce5a04146109365780637dd72e8d14610961576103d9565b80636ddd17131461083857806370a0823114610863578063715018a6146108a0578063751039fc146108b7576103d9565b80634a62bb65116102bc5780634a62bb651461077a5780634c24c51d146107a55780634fbee193146107d05780636a486a8e1461080d576103d9565b806327c8f835146106bc578063313ce567146106e7578063395093511461071257806349bd5a5e1461074f576103d9565b80631816467f116103655780631cd348c0116103345780631cd348c0146105fe5780631f3fed8f146106295780631fe70a981461065457806323b872dd1461067f576103d9565b80631816467f146105565780631a221dbb1461057f5780631a8145bb146105aa5780631c499ab0146105d5576103d9565b8063106b5da1116103a1578063106b5da11461049a57806310d5de53146104c35780631694505e1461050057806318160ddd1461052b576103d9565b806306e7b14d146103de57806306fdde0314610407578063095ea7b3146104325780630b166d501461046f576103d9565b366103d957005b600080fd5b3480156103ea57600080fd5b506104056004803603810190610400919061498c565b610f0d565b005b34801561041357600080fd5b5061041c611064565b6040516104299190614a49565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190614aa1565b6110f6565b6040516104669190614afc565b60405180910390f35b34801561047b57600080fd5b50610484611114565b6040516104919190614b26565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc9190614b41565b61111a565b005b3480156104cf57600080fd5b506104ea60048036038101906104e5919061498c565b61121d565b6040516104f79190614afc565b60405180910390f35b34801561050c57600080fd5b5061051561123d565b6040516105229190614bcd565b60405180910390f35b34801561053757600080fd5b50610540611261565b60405161054d9190614b26565b60405180910390f35b34801561056257600080fd5b5061057d6004803603810190610578919061498c565b61126b565b005b34801561058b57600080fd5b506105946113c2565b6040516105a19190614b26565b60405180910390f35b3480156105b657600080fd5b506105bf6113c8565b6040516105cc9190614b26565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f79190614b41565b6113ce565b005b34801561060a57600080fd5b506106136114d1565b6040516106209190614bf7565b60405180910390f35b34801561063557600080fd5b5061063e6114f7565b60405161064b9190614b26565b60405180910390f35b34801561066057600080fd5b506106696114fd565b6040516106769190614b26565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a19190614c12565b611503565b6040516106b39190614afc565b60405180910390f35b3480156106c857600080fd5b506106d16115dc565b6040516106de9190614bf7565b60405180910390f35b3480156106f357600080fd5b506106fc6115e2565b6040516107099190614c81565b60405180910390f35b34801561071e57600080fd5b5061073960048036038101906107349190614aa1565b6115f9565b6040516107469190614afc565b60405180910390f35b34801561075b57600080fd5b506107646116ac565b6040516107719190614bf7565b60405180910390f35b34801561078657600080fd5b5061078f6116d0565b60405161079c9190614afc565b60405180910390f35b3480156107b157600080fd5b506107ba6116e3565b6040516107c79190614afc565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f2919061498c565b6116f6565b6040516108049190614afc565b60405180910390f35b34801561081957600080fd5b5061082261174c565b60405161082f9190614b26565b60405180910390f35b34801561084457600080fd5b5061084d611752565b60405161085a9190614afc565b60405180910390f35b34801561086f57600080fd5b5061088a6004803603810190610885919061498c565b611765565b6040516108979190614b26565b60405180910390f35b3480156108ac57600080fd5b506108b56117ad565b005b3480156108c357600080fd5b506108cc611905565b6040516108d99190614afc565b60405180910390f35b3480156108ee57600080fd5b5061090960048036038101906109049190614cc8565b6119c0565b005b34801561091757600080fd5b50610920611ab2565b60405161092d9190614bf7565b60405180910390f35b34801561094257600080fd5b5061094b611ad8565b6040516109589190614b26565b60405180910390f35b34801561096d57600080fd5b50610976611ade565b005b34801561098457600080fd5b5061099f600480360381019061099a919061498c565b611b97565b005b3480156109ad57600080fd5b506109b6611c89565b005b3480156109c457600080fd5b506109cd611d5f565b6040516109da9190614bf7565b60405180910390f35b3480156109ef57600080fd5b506109f8611d89565b604051610a059190614bf7565b60405180910390f35b348015610a1a57600080fd5b50610a356004803603810190610a309190614d08565b611daf565b005b348015610a4357600080fd5b50610a4c611ede565b604051610a599190614b26565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a849190614d6f565b611ee4565b005b348015610a9757600080fd5b50610ab26004803603810190610aad9190614d6f565b611f98565b005b348015610ac057600080fd5b50610ac961204c565b604051610ad69190614a49565b60405180910390f35b348015610aeb57600080fd5b50610b066004803603810190610b019190614cc8565b6120de565b005b348015610b1457600080fd5b50610b1d612211565b604051610b2a9190614b26565b60405180910390f35b348015610b3f57600080fd5b50610b48612217565b604051610b559190614b26565b60405180910390f35b348015610b6a57600080fd5b50610b7361221d565b604051610b809190614b26565b60405180910390f35b348015610b9557600080fd5b50610bb06004803603810190610bab9190614d08565b612223565b005b348015610bbe57600080fd5b50610bd96004803603810190610bd49190614aa1565b612352565b604051610be69190614afc565b60405180910390f35b348015610bfb57600080fd5b50610c166004803603810190610c119190614aa1565b61241f565b604051610c239190614afc565b60405180910390f35b348015610c3857600080fd5b50610c536004803603810190610c4e919061498c565b61243d565b005b348015610c6157600080fd5b50610c7c6004803603810190610c77919061498c565b612594565b604051610c899190614afc565b60405180910390f35b348015610c9e57600080fd5b50610ca76125b4565b005b348015610cb557600080fd5b50610cd06004803603810190610ccb919061498c565b612668565b604051610cdd9190614afc565b60405180910390f35b348015610cf257600080fd5b50610cfb612688565b604051610d089190614afc565b60405180910390f35b348015610d1d57600080fd5b50610d2661269b565b005b348015610d3457600080fd5b50610d4f6004803603810190610d4a9190614cc8565b61274f565b005b348015610d5d57600080fd5b50610d6661288f565b604051610d739190614b26565b60405180910390f35b348015610d8857600080fd5b50610d91612895565b604051610d9e9190614afc565b60405180910390f35b348015610db357600080fd5b50610dbc6128a8565b604051610dc99190614b26565b60405180910390f35b348015610dde57600080fd5b50610df96004803603810190610df49190614d9c565b6128ae565b604051610e069190614b26565b60405180910390f35b348015610e1b57600080fd5b50610e24612935565b604051610e319190614b26565b60405180910390f35b348015610e4657600080fd5b50610e4f61293b565b604051610e5c9190614b26565b60405180910390f35b348015610e7157600080fd5b50610e8c6004803603810190610e87919061498c565b612941565b005b348015610e9a57600080fd5b50610ea3612b07565b604051610eb09190614b26565b60405180910390f35b348015610ec557600080fd5b50610ece612b0d565b604051610edb9190614b26565b60405180910390f35b348015610ef057600080fd5b50610f0b6004803603810190610f06919061498c565b612b13565b005b610f15612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90614e28565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f15e571905a1c816ac9ad091c2b82079da1ad3668d345e3894c424c5e5b47d97b60405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606003805461107390614e77565b80601f016020809104026020016040519081016040528092919081815260200182805461109f90614e77565b80156110ec5780601f106110c1576101008083540402835291602001916110ec565b820191906000526020600020905b8154815290600101906020018083116110cf57829003601f168201915b5050505050905090565b600061110a611103612c63565b8484612c6b565b6001905092915050565b601a5481565b611122612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a890614e28565b60405180910390fd5b60018110156111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90614f1a565b60405180910390fd5b606481611200611261565b61120a9190614f69565b6112149190614fda565b60098190555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b611273612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f990614e28565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60185481565b6113d6612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90614e28565b60405180910390fd5b60018110156114a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a090614f1a565b60405180910390fd5b6064816114b4611261565b6114be9190614f69565b6114c89190614fda565b600a8190555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60115481565b6000611510848484612e34565b6115d18461151c612c63565b6115cc85604051806060016040528060288152602001615b7d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611582612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d1e9092919063ffffffff16565b612c6b565b600190509392505050565b61dead81565b6000600b60009054906101000a900460ff16905090565b60006116a2611606612c63565b8461169d8560016000611617612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c0590919063ffffffff16565b612c6b565b6001905092915050565b7f000000000000000000000000979ae745bdd9812f5dad3281595d122b6bafce9e81565b600b60019054906101000a900460ff1681565b600b60049054906101000a900460ff1681565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b600b60039054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117b5612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b90614e28565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061190f612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461199e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199590614e28565b60405180910390fd5b6000600b60016101000a81548160ff0219169083151502179055506001905090565b6119c8612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90614e28565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b611ae6612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6c90614e28565b60405180910390fd5b6000601881905550600060178190555060006019819055506000601a81905550565b611b9f612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2590614e28565b60405180910390fd5b6001601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611c91612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1790614e28565b60405180910390fd5b6001600b60026101000a81548160ff0219169083151502179055506001600b60036101000a81548160ff02191690831515021790555043600c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611db7612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3d90614e28565b60405180910390fd5b83600e8190555082600f819055508160108190555080601181905550601154601054600f54600e54611e78919061500b565b611e82919061500b565b611e8c919061500b565b600d819055506046600d541115611ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecf9061508b565b60405180910390fd5b50505050565b60135481565b611eec612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7290614e28565b60405180910390fd5b80600b60036101000a81548160ff02191690831515021790555050565b611fa0612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202690614e28565b60405180910390fd5b80600b60046101000a81548160ff02191690831515021790555050565b60606004805461205b90614e77565b80601f016020809104026020016040519081016040528092919081815260200182805461208790614e77565b80156120d45780601f106120a9576101008083540402835291602001916120d4565b820191906000526020600020905b8154815290600101906020018083116120b757829003601f168201915b5050505050905090565b6120e6612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c90614e28565b60405180910390fd5b7f000000000000000000000000979ae745bdd9812f5dad3281595d122b6bafce9e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fa9061511d565b60405180910390fd5b61220d8282613d82565b5050565b60105481565b60195481565b60155481565b61222b612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b190614e28565b60405180910390fd5b836013819055508260148190555081601581905550806016819055506016546015546014546013546122ec919061500b565b6122f6919061500b565b612300919061500b565b6012819055506046601254111561234c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123439061508b565b60405180910390fd5b50505050565b600061241561235f612c63565b8461241085604051806060016040528060258152602001615ba56025913960016000612389612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d1e9092919063ffffffff16565b612c6b565b6001905092915050565b600061243361242c612c63565b8484612e34565b6001905092915050565b612445612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb90614e28565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d6020528060005260406000206000915054906101000a900460ff1681565b6125bc612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264290614e28565b60405180910390fd5b6000600b60056101000a81548160ff021916908315150217905550565b601e6020528060005260406000206000915054906101000a900460ff1681565b600b60029054906101000a900460ff1681565b6126a3612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272990614e28565b60405180910390fd5b6001600b60056101000a81548160ff021916908315150217905550565b612757612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd90614e28565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516128839190614afc565b60405180910390a25050565b60095481565b600b60059054906101000a900460ff1681565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600f5481565b612949612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf90614e28565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3e906151af565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b600a5481565b612b1b612c63565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba190614e28565b60405180910390fd5b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000808284612c14919061500b565b905083811015612c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c509061521b565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd1906152ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d409061533f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e279190614b26565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9a906153d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0990615463565b60405180910390fd5b600b60029054906101000a900460ff1661300757601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fc75750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffd906154cf565b60405180910390fd5b5b600081036130205761301b83836000613e23565b613d19565b600b60019054906101000a900460ff161561347e5761303d611d5f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130ab575061307b611d5f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130e45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561311e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131c85750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131c65750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b80156131e15750600560149054906101000a900460ff16155b1561347d57601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132895750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613330576009548111156132d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ca90615561565b60405180910390fd5b600a546132df83611765565b826132ea919061500b565b111561332b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613322906155cd565b60405180910390fd5b61347c565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133d35750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134225760095481111561341d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134149061565f565b60405180910390fd5b61347b565b600a5461342e83611765565b82613439919061500b565b111561347a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613471906155cd565b60405180910390fd5b5b5b5b5b600061348930611765565b9050600080821190508080156134ab5750600b60039054906101000a900460ff165b80156134c45750600560149054906101000a900460ff16155b801561351a5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135705750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135c65750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561360a576001600560146101000a81548160ff0219169083151502179055506135ee6140b6565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136c05750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136ca57600090505b60008115613d0957436002600c546136e2919061500b565b101580156136fc5750600b60059054906101000a900460ff165b1561391657601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137b0576001601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613911565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561385f576001601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613910565b6001601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b613ce5565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613afc57601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156139f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ec906156cb565b60405180910390fd5b60006012541115613af757613a286064613a1a601254886144a190919063ffffffff16565b61451b90919063ffffffff16565b905060125460145482613a3b9190614f69565b613a459190614fda565b60186000828254613a56919061500b565b9250508190555060125460155482613a6e9190614f69565b613a789190614fda565b60196000828254613a89919061500b565b9250508190555060125460135482613aa19190614f69565b613aab9190614fda565b60176000828254613abc919061500b565b9250508190555060125460165482613ad49190614f69565b613ade9190614fda565b601a6000828254613aef919061500b565b925050819055505b613ce4565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c55576000600d541115613c5057613b816064613b73600d54886144a190919063ffffffff16565b61451b90919063ffffffff16565b9050600d54600f5482613b949190614f69565b613b9e9190614fda565b60186000828254613baf919061500b565b92505081905550600d5460105482613bc79190614f69565b613bd19190614fda565b60196000828254613be2919061500b565b92505081905550600d54600e5482613bfa9190614f69565b613c049190614fda565b60176000828254613c15919061500b565b92505081905550600d5460115482613c2d9190614f69565b613c379190614fda565b601a6000828254613c48919061500b565b925050819055505b613ce3565b601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd990615737565b60405180910390fd5b5b5b5b6000811115613cfa57613cf9873083613e23565b5b8085613d069190615757565b94505b613d14878787613e23565b505050505b505050565b6000838311158290613d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d5d9190614a49565b60405180910390fd5b5060008385613d759190615757565b9050809150509392505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e89906153d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ef890615463565b60405180910390fd5b613f0c838383614565565b613f7781604051806060016040528060268152602001615b57602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d1e9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061400a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c0590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516140a99190614b26565b60405180910390a3505050565b60006140c130611765565b9050600b60049054906101000a900460ff161561411557600081111561410f5761410e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613e23565b5b5061449f565b6000601a5460195460175460185461412d919061500b565b614137919061500b565b614141919061500b565b90506000808314806141535750600082145b156141605750505061449f565b6000600283601854866141739190614f69565b61417d9190614fda565b6141879190614fda565b9050600061419e828661456a90919063ffffffff16565b905060004790506141ae826145b4565b60006141c3824761456a90919063ffffffff16565b905060006141ee876141e0601754856144a190919063ffffffff16565b61451b90919063ffffffff16565b905060006142198861420b601954866144a190919063ffffffff16565b61451b90919063ffffffff16565b9050600061424489614236601a54876144a190919063ffffffff16565b61451b90919063ffffffff16565b90506000818385876142569190615757565b6142609190615757565b61426a9190615757565b90506000601881905550600060178190555060006019819055506000601a81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516142d2906157bc565b60006040518083038185875af1925050503d806000811461430f576040519150601f19603f3d011682016040523d82523d6000602084013e614314565b606091505b505080995050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051614360906157bc565b60006040518083038185875af1925050503d806000811461439d576040519150601f19603f3d011682016040523d82523d6000602084013e6143a2565b606091505b5050809950506000881180156143b85750600081115b15614405576143c788826147eb565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56187826018546040516143fc939291906157d1565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161444b906157bc565b60006040518083038185875af1925050503d8060008114614488576040519150601f19603f3d011682016040523d82523d6000602084013e61448d565b606091505b50508099505050505050505050505050505b565b60008083036144b35760009050614515565b600082846144c19190614f69565b90508284826144d09190614fda565b14614510576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016145079061587a565b60405180910390fd5b809150505b92915050565b600061455d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506148c6565b905092915050565b505050565b60006145ac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d1e565b905092915050565b6000600267ffffffffffffffff8111156145d1576145d061589a565b5b6040519080825280602002602001820160405280156145ff5781602001602082028036833780820191505090505b5090503081600081518110614617576146166158c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156146bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146e0919061590d565b816001815181106146f4576146f36158c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614759307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612c6b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016147bb959493929190615a33565b600060405180830381600087803b1580156147d557600080fd5b505af19250505080156147e6575060015b505050565b614816307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612c6b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161487d96959493929190615a8d565b60606040518083038185885af1935050505080156148b957506040513d601f19601f820116820180604052508101906148b69190615b03565b60015b156148c2575050505b5050565b6000808311829061490d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016149049190614a49565b60405180910390fd5b506000838561491c9190614fda565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006149598261492e565b9050919050565b6149698161494e565b811461497457600080fd5b50565b60008135905061498681614960565b92915050565b6000602082840312156149a2576149a1614929565b5b60006149b084828501614977565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156149f35780820151818401526020810190506149d8565b60008484015250505050565b6000601f19601f8301169050919050565b6000614a1b826149b9565b614a2581856149c4565b9350614a358185602086016149d5565b614a3e816149ff565b840191505092915050565b60006020820190508181036000830152614a638184614a10565b905092915050565b6000819050919050565b614a7e81614a6b565b8114614a8957600080fd5b50565b600081359050614a9b81614a75565b92915050565b60008060408385031215614ab857614ab7614929565b5b6000614ac685828601614977565b9250506020614ad785828601614a8c565b9150509250929050565b60008115159050919050565b614af681614ae1565b82525050565b6000602082019050614b116000830184614aed565b92915050565b614b2081614a6b565b82525050565b6000602082019050614b3b6000830184614b17565b92915050565b600060208284031215614b5757614b56614929565b5b6000614b6584828501614a8c565b91505092915050565b6000819050919050565b6000614b93614b8e614b898461492e565b614b6e565b61492e565b9050919050565b6000614ba582614b78565b9050919050565b6000614bb782614b9a565b9050919050565b614bc781614bac565b82525050565b6000602082019050614be26000830184614bbe565b92915050565b614bf18161494e565b82525050565b6000602082019050614c0c6000830184614be8565b92915050565b600080600060608486031215614c2b57614c2a614929565b5b6000614c3986828701614977565b9350506020614c4a86828701614977565b9250506040614c5b86828701614a8c565b9150509250925092565b600060ff82169050919050565b614c7b81614c65565b82525050565b6000602082019050614c966000830184614c72565b92915050565b614ca581614ae1565b8114614cb057600080fd5b50565b600081359050614cc281614c9c565b92915050565b60008060408385031215614cdf57614cde614929565b5b6000614ced85828601614977565b9250506020614cfe85828601614cb3565b9150509250929050565b60008060008060808587031215614d2257614d21614929565b5b6000614d3087828801614a8c565b9450506020614d4187828801614a8c565b9350506040614d5287828801614a8c565b9250506060614d6387828801614a8c565b91505092959194509250565b600060208284031215614d8557614d84614929565b5b6000614d9384828501614cb3565b91505092915050565b60008060408385031215614db357614db2614929565b5b6000614dc185828601614977565b9250506020614dd285828601614977565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614e126020836149c4565b9150614e1d82614ddc565b602082019050919050565b60006020820190508181036000830152614e4181614e05565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614e8f57607f821691505b602082108103614ea257614ea1614e48565b5b50919050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614f04602d836149c4565b9150614f0f82614ea8565b604082019050919050565b60006020820190508181036000830152614f3381614ef7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614f7482614a6b565b9150614f7f83614a6b565b9250828202614f8d81614a6b565b91508282048414831517614fa457614fa3614f3a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614fe582614a6b565b9150614ff083614a6b565b92508261500057614fff614fab565b5b828204905092915050565b600061501682614a6b565b915061502183614a6b565b925082820190508082111561503957615038614f3a565b5b92915050565b7f4d757374206b656570206665657320617420373025206f72206c657373000000600082015250565b6000615075601d836149c4565b91506150808261503f565b602082019050919050565b600060208201905081810360008301526150a481615068565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006151076039836149c4565b9150615112826150ab565b604082019050919050565b60006020820190508181036000830152615136816150fa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006151996026836149c4565b91506151a48261513d565b604082019050919050565b600060208201905081810360008301526151c88161518c565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615205601b836149c4565b9150615210826151cf565b602082019050919050565b60006020820190508181036000830152615234816151f8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006152976024836149c4565b91506152a28261523b565b604082019050919050565b600060208201905081810360008301526152c68161528a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006153296022836149c4565b9150615334826152cd565b604082019050919050565b600060208201905081810360008301526153588161531c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153bb6025836149c4565b91506153c68261535f565b604082019050919050565b600060208201905081810360008301526153ea816153ae565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061544d6023836149c4565b9150615458826153f1565b604082019050919050565b6000602082019050818103600083015261547c81615440565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006154b96016836149c4565b91506154c482615483565b602082019050919050565b600060208201905081810360008301526154e8816154ac565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061554b6035836149c4565b9150615556826154ef565b604082019050919050565b6000602082019050818103600083015261557a8161553e565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006155b76013836149c4565b91506155c282615581565b602082019050919050565b600060208201905081810360008301526155e6816155aa565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006156496036836149c4565b9150615654826155ed565b604082019050919050565b600060208201905081810360008301526156788161563c565b9050919050565b7f426f742063616e742073656c6c00000000000000000000000000000000000000600082015250565b60006156b5600d836149c4565b91506156c08261567f565b602082019050919050565b600060208201905081810360008301526156e4816156a8565b9050919050565b7f426f742069732072656b74000000000000000000000000000000000000000000600082015250565b6000615721600b836149c4565b915061572c826156eb565b602082019050919050565b6000602082019050818103600083015261575081615714565b9050919050565b600061576282614a6b565b915061576d83614a6b565b925082820390508181111561578557615784614f3a565b5b92915050565b600081905092915050565b50565b60006157a660008361578b565b91506157b182615796565b600082019050919050565b60006157c782615799565b9150819050919050565b60006060820190506157e66000830186614b17565b6157f36020830185614b17565b6158006040830184614b17565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006158646021836149c4565b915061586f82615808565b604082019050919050565b6000602082019050818103600083015261589381615857565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061590781614960565b92915050565b60006020828403121561592357615922614929565b5b6000615931848285016158f8565b91505092915050565b6000819050919050565b600061595f61595a6159558461593a565b614b6e565b614a6b565b9050919050565b61596f81615944565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6159aa8161494e565b82525050565b60006159bc83836159a1565b60208301905092915050565b6000602082019050919050565b60006159e082615975565b6159ea8185615980565b93506159f583615991565b8060005b83811015615a26578151615a0d88826159b0565b9750615a18836159c8565b9250506001810190506159f9565b5085935050505092915050565b600060a082019050615a486000830188614b17565b615a556020830187615966565b8181036040830152615a6781866159d5565b9050615a766060830185614be8565b615a836080830184614b17565b9695505050505050565b600060c082019050615aa26000830189614be8565b615aaf6020830188614b17565b615abc6040830187615966565b615ac96060830186615966565b615ad66080830185614be8565b615ae360a0830184614b17565b979650505050505050565b600081519050615afd81614a75565b92915050565b600080600060608486031215615b1c57615b1b614929565b5b6000615b2a86828701615aee565b9350506020615b3b86828701615aee565b9250506040615b4c86828701615aee565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220799e2bec5f5528bf4e3e236fa8f70584ebf54e6010f38462ad54a1f45a5c5f0564736f6c63430008120033
Deployed Bytecode Sourcemap
30796:17909:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39637:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7924:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10157:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31981:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36237:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32161:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30869:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9044:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39472:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31829:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31907:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36508:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31132:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31867:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31649:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10833:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30972:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36947:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11696:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30927:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31274:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31392:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39818:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31686:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31354:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9215:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22974:148;;;;;;;;;;;;;:::i;:::-;;36108:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36770:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31064:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31544;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46297:175;;;;;;;;;;;;;:::i;:::-;;40064:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35709:156;;;;;;;;;;;;;:::i;:::-;;22332:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31101:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37422:537;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31721:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37135:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37316:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8143:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38728:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31618:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31947:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31797:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37983:547;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12492:393;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9571:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39240:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32231:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35969:87;;;;;;;;;;;;;:::i;:::-;;32427:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31314:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35873:88;;;;;;;;;;;;;:::i;:::-;;38538:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31169:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31429:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31510:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9834:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31468:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31581:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23277:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31759:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31211:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39954:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39637:173;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39752:13:::1;;;;;;;;;;;39720:46;;39741:9;39720:46;;;;;;;;;;;;39793:9;39777:13;;:25;;;;;;;;;;;;;;;;;;39637:173:::0;:::o;7924:100::-;7978:13;8011:5;8004:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7924:100;:::o;10157:194::-;10265:4;10282:39;10291:12;:10;:12::i;:::-;10305:7;10314:6;10282:8;:39::i;:::-;10339:4;10332:11;;10157:194;;;;:::o;31981:31::-;;;;:::o;36237:263::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36348:1:::1;36334:10;:15;;36312:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;36488:3;36474:10;36458:13;:11;:13::i;:::-;:26;;;;:::i;:::-;36457:34;;;;:::i;:::-;36433:20;:59;;;;36237:263:::0;:::o;32161:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;30869:51::-;;;:::o;9044:108::-;9105:7;9132:12;;9125:19;;9044:108;:::o;39472:157::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39579:9:::1;;;;;;;;;;;39551:38;;39568:9;39551:38;;;;;;;;;;;;39612:9;39600;;:21;;;;;;;;;;;;;;;;;;39472:157:::0;:::o;31829:29::-;;;;:::o;31907:33::-;;;;:::o;36508:254::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36619:1:::1;36605:10;:15;;36583:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;36750:3;36736:10;36720:13;:11;:13::i;:::-;:26;;;;:::i;:::-;36719:34;;;;:::i;:::-;36706:9;:48;;;;36508:254:::0;:::o;31132:28::-;;;;;;;;;;;;;:::o;31867:33::-;;;;:::o;31649:28::-;;;;:::o;10833:454::-;10973:4;10990:36;11000:6;11008:9;11019:6;10990:9;:36::i;:::-;11037:220;11060:6;11081:12;:10;:12::i;:::-;11108:138;11164:6;11108:138;;;;;;;;;;;;;;;;;:11;:19;11120:6;11108:19;;;;;;;;;;;;;;;:33;11128:12;:10;:12::i;:::-;11108:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;11037:8;:220::i;:::-;11275:4;11268:11;;10833:454;;;;;:::o;30972:53::-;31018:6;30972:53;:::o;36947:92::-;36997:5;37022:9;;;;;;;;;;;37015:16;;36947:92;:::o;11696:293::-;11809:4;11826:133;11849:12;:10;:12::i;:::-;11876:7;11898:50;11937:10;11898:11;:25;11910:12;:10;:12::i;:::-;11898:25;;;;;;;;;;;;;;;:34;11924:7;11898:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11826:8;:133::i;:::-;11977:4;11970:11;;11696:293;;;;:::o;30927:38::-;;;:::o;31274:33::-;;;;;;;;;;;;;:::o;31392:30::-;;;;;;;;;;;;;:::o;39818:128::-;39886:4;39910:19;:28;39930:7;39910:28;;;;;;;;;;;;;;;;;;;;;;;;;39903:35;;39818:128;;;:::o;31686:28::-;;;;:::o;31354:31::-;;;;;;;;;;;;;:::o;9215:143::-;9305:7;9332:9;:18;9342:7;9332:18;;;;;;;;;;;;;;;;9325:25;;9215:143;;;:::o;22974:148::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23081:1:::1;23044:40;;23065:6;;;;;;;;;;;23044:40;;;;;;;;;;;;23112:1;23095:6;;:19;;;;;;;;;;;;;;;;;;22974:148::o:0;36108:121::-;36160:4;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36194:5:::1;36177:14;;:22;;;;;;;;;;;;;;;;;;36217:4;36210:11;;36108:121:::0;:::o;36770:169::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36927:4:::1;36885:31;:39;36917:6;36885:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;36770:169:::0;;:::o;31064:30::-;;;;;;;;;;;;;:::o;31544:::-;;;;:::o;46297:175::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;46372:1:::1;46351:18;:22;;;;46405:1;46384:18;:22;;;;46432:1;46417:12;:16;;;;46463:1;46444:16;:20;;;;46297:175::o:0;40064:99::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40151:4:::1;40133:6;:15;40140:7;40133:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;40064:99:::0;:::o;35709:156::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35780:4:::1;35764:13;;:20;;;;;;;;;;;;;;;;;;35809:4;35795:11;;:18;;;;;;;;;;;;;;;;;;35845:12;35824:18;:33;;;;35709:156::o:0;22332:79::-;22370:7;22397:6;;;;;;;;;;;22390:13;;22332:79;:::o;31101:24::-;;;;;;;;;;;;;:::o;37422:537::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37618:13:::1;37600:15;:31;;;;37660:13;37642:15;:31;;;;37696:7;37684:9;:19;;;;37730:11;37714:13;:27;;;;37867:13;;37842:9;;37811:15;;37780;;:46;;;;:::i;:::-;:71;;;;:::i;:::-;:100;;;;:::i;:::-;37752:12;:128;;;;37915:2;37899:12;;:18;;37891:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;37422:537:::0;;;;:::o;31721:31::-;;;;:::o;37135:100::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37220:7:::1;37206:11;;:21;;;;;;;;;;;;;;;;;;37135:100:::0;:::o;37316:98::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37399:7:::1;37386:10;;:20;;;;;;;;;;;;;;;;;;37316:98:::0;:::o;8143:104::-;8199:13;8232:7;8225:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8143:104;:::o;38728:308::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38876:13:::1;38868:21;;:4;:21;;::::0;38846:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;38987:41;39016:4;39022:5;38987:28;:41::i;:::-;38728:308:::0;;:::o;31618:24::-;;;;:::o;31947:27::-;;;;:::o;31797:25::-;;;;:::o;37983:547::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38180:13:::1;38161:16;:32;;;;38223:13;38204:16;:32;;;;38260:7;38247:10;:20;;;;38295:11;38278:14;:28;;;;38436:14;;38410:10;;38378:16;;38346;;:48;;;;:::i;:::-;:74;;;;:::i;:::-;:104;;;;:::i;:::-;38317:13;:133;;;;38486:2;38469:13;;:19;;38461:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;37983:547:::0;;;;:::o;12492:393::-;12610:4;12627:228;12650:12;:10;:12::i;:::-;12677:7;12699:145;12756:15;12699:145;;;;;;;;;;;;;;;;;:11;:25;12711:12;:10;:12::i;:::-;12699:25;;;;;;;;;;;;;;;:34;12725:7;12699:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;12627:8;:228::i;:::-;12873:4;12866:11;;12492:393;;;;:::o;9571:200::-;9682:4;9699:42;9709:12;:10;:12::i;:::-;9723:9;9734:6;9699:9;:42::i;:::-;9759:4;9752:11;;9571:200;;;;:::o;39240:224::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39393:15:::1;;;;;;;;;;;39350:59;;39373:18;39350:59;;;;;;;;;;;;39438:18;39420:15;;:36;;;;;;;;;;;;;;;;;;39240:224:::0;:::o;32231:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;35969:87::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36043:5:::1;36027:13;;:21;;;;;;;;;;;;;;;;;;35969:87::o:0;32427:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;31314:33::-;;;;;;;;;;;;;:::o;35873:88::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35949:4:::1;35933:13;;:20;;;;;;;;;;;;;;;;;;35873:88::o:0;38538:182::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38654:8:::1;38623:19;:28;38643:7;38623:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;38694:7;38678:34;;;38703:8;38678:34;;;;;;:::i;:::-;;;;;;;;38538:182:::0;;:::o;31169:35::-;;;;:::o;31429:32::-;;;;;;;;;;;;;:::o;31510:27::-;;;;:::o;9834:176::-;9948:7;9975:11;:18;9987:5;9975:18;;;;;;;;;;;;;;;:27;9994:7;9975:27;;;;;;;;;;;;;;;;9968:34;;9834:176;;;;:::o;31468:33::-;;;;:::o;31581:30::-;;;;:::o;23277:281::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23400:1:::1;23380:22;;:8;:22;;::::0;23358:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23513:8;23484:38;;23505:6;;;;;;;;;;;23484:38;;;;;;;;;;;;23542:8;23533:6;;:17;;;;;;;;;;;;;;;;;;23277:281:::0;:::o;31759:31::-;;;;:::o;31211:24::-;;;;:::o;39954:102::-;22554:12;:10;:12::i;:::-;22544:22;;:6;;;;;;;;;;;:22;;;22536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40043:5:::1;40025:6;:15;40032:7;40025:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;39954:102:::0;:::o;17254:181::-;17312:7;17332:9;17348:1;17344;:5;;;;:::i;:::-;17332:17;;17373:1;17368;:6;;17360:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17426:1;17419:8;;;17254:181;;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;15876:380::-;16029:1;16012:19;;:5;:19;;;16004:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16110:1;16091:21;;:7;:21;;;16083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16194:6;16164:11;:18;16176:5;16164:18;;;;;;;;;;;;;;;:27;16183:7;16164:27;;;;;;;;;;;;;;;:36;;;;16232:7;16216:32;;16225:5;16216:32;;;16241:6;16216:32;;;;;;:::i;:::-;;;;;;;;15876:380;;;:::o;40171:4870::-;40319:1;40303:18;;:4;:18;;;40295:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40396:1;40382:16;;:2;:16;;;40374:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;40454:13;;;;;;;;;;;40449:183;;40510:19;:25;40530:4;40510:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;40539:19;:23;40559:2;40539:23;;;;;;;;;;;;;;;;;;;;;;;;;40510:52;40484:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;40449:183;40656:1;40646:6;:11;40642:93;;40674:28;40690:4;40696:2;40700:1;40674:15;:28::i;:::-;40717:7;;40642:93;40751:14;;;;;;;;;;;40747:1485;;;40812:7;:5;:7::i;:::-;40804:15;;:4;:15;;;;:49;;;;;40846:7;:5;:7::i;:::-;40840:13;;:2;:13;;;;40804:49;:86;;;;;40888:1;40874:16;;:2;:16;;;;40804:86;:128;;;;;40925:6;40911:21;;:2;:21;;;;40804:128;:204;;;;;40955:19;:25;40975:4;40955:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;40984:19;:23;41004:2;40984:23;;;;;;;;;;;;;;;;;;;;;;;;;40955:52;40953:55;40804:204;:234;;;;;41030:8;;;;;;;;;;;41029:9;40804:234;40782:1439;;;41127:25;:31;41153:4;41127:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;41184:31;:35;41216:2;41184:35;;;;;;;;;;;;;;;;;;;;;;;;;41183:36;41127:92;41101:1105;;;41306:20;;41296:6;:30;;41262:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;41514:9;;41497:13;41507:2;41497:9;:13::i;:::-;41488:6;:22;;;;:::i;:::-;:35;;41454:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;41101:1105;;;41692:25;:29;41718:2;41692:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;41747:31;:37;41779:4;41747:37;;;;;;;;;;;;;;;;;;;;;;;;;41746:38;41692:92;41666:540;;;41871:20;;41861:6;:30;;41827:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;41666:540;;;42106:9;;42089:13;42099:2;42089:9;:13::i;:::-;42080:6;:22;;;;:::i;:::-;:35;;42046:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;41666:540;41101:1105;40782:1439;40747:1485;42244:28;42275:24;42293:4;42275:9;:24::i;:::-;42244:55;;42312:12;42350:1;42327:20;:24;42312:39;;42382:7;:35;;;;;42406:11;;;;;;;;;;;42382:35;:61;;;;;42435:8;;;;;;;;;;;42434:9;42382:61;:110;;;;;42461:25;:31;42487:4;42461:31;;;;;;;;;;;;;;;;;;;;;;;;;42460:32;42382:110;:153;;;;;42510:19;:25;42530:4;42510:25;;;;;;;;;;;;;;;;;;;;;;;;;42509:26;42382:153;:194;;;;;42553:19;:23;42573:2;42553:23;;;;;;;;;;;;;;;;;;;;;;;;;42552:24;42382:194;42364:326;;;42614:4;42603:8;;:15;;;;;;;;;;;;;;;;;;42635:10;:8;:10::i;:::-;42673:5;42662:8;;:16;;;;;;;;;;;;;;;;;;42364:326;42702:12;42718:8;;;;;;;;;;;42717:9;42702:24;;42828:19;:25;42848:4;42828:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;42857:19;:23;42877:2;42857:23;;;;;;;;;;;;;;;;;;;;;;;;;42828:52;42824:100;;;42907:5;42897:15;;42824:100;42936:12;43041:7;43037:1951;;;43095:12;43090:1;43069:18;;:22;;;;:::i;:::-;:38;;:55;;;;;43111:13;;;;;;;;;;;43069:55;43065:1774;;;43149:25;:29;43175:2;43149:29;;;;;;;;;;;;;;;;;;;;;;;;;43145:258;;;43195:4;43180:6;:12;43187:4;43180:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;43145:258;;;43227:25;:31;43253:4;43227:31;;;;;;;;;;;;;;;;;;;;;;;;;43223:180;;;43273:4;43260:6;:10;43267:2;43260:10;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;43223:180;;;43337:4;43324:6;:10;43331:2;43324:10;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;43379:4;43364:6;:12;43371:4;43364:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;43223:180;43145:258;43065:1774;;;43465:25;:29;43491:2;43465:29;;;;;;;;;;;;;;;;;;;;;;;;;43461:1378;;;43524:6;:12;43531:4;43524:12;;;;;;;;;;;;;;;;;;;;;;;;;43523:13;43515:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;43593:1;43577:13;;:17;43573:535;;;43626:34;43656:3;43626:25;43637:13;;43626:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;43619:41;;43783:13;;43738:16;;43731:4;:23;;;;:::i;:::-;43730:66;;;;:::i;:::-;43683:18;;:113;;;;;;;:::i;:::-;;;;;;;;43857:13;;43843:10;;43836:4;:17;;;;:::i;:::-;43835:35;;;;:::i;:::-;43819:12;;:51;;;;;;;:::i;:::-;;;;;;;;43993:13;;43948:16;;43941:4;:23;;;;:::i;:::-;43940:66;;;;:::i;:::-;43893:18;;:113;;;;;;;:::i;:::-;;;;;;;;44075:13;;44057:14;;44050:4;:21;;;;:::i;:::-;44049:39;;;;:::i;:::-;44029:16;;:59;;;;;;;:::i;:::-;;;;;;;;43573:535;43461:1378;;;44169:25;:31;44195:4;44169:31;;;;;;;;;;;;;;;;;;;;;;;;;44165:674;;;44240:1;44225:12;;:16;44221:525;;;44273:33;44302:3;44273:24;44284:12;;44273:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;44266:40;;44428:12;;44384:15;;44377:4;:22;;;;:::i;:::-;44376:64;;;;:::i;:::-;44329:18;;:111;;;;;;;:::i;:::-;;;;;;;;44500:12;;44487:9;;44480:4;:16;;;;:::i;:::-;44479:33;;;;:::i;:::-;44463:12;;:49;;;;;;;:::i;:::-;;;;;;;;44634:12;;44590:15;;44583:4;:22;;;;:::i;:::-;44582:64;;;;:::i;:::-;44535:18;;:111;;;;;;;:::i;:::-;;;;;;;;44714:12;;44697:13;;44690:4;:20;;;;:::i;:::-;44689:37;;;;:::i;:::-;44669:16;;:57;;;;;;;:::i;:::-;;;;;;;;44221:525;44165:674;;;44795:6;:12;44802:4;44795:12;;;;;;;;;;;;;;;;;;;;;;;;;44794:13;44786:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;44165:674;43461:1378;43065:1774;44866:1;44859:4;:8;44855:91;;;44888:42;44904:4;44918;44925;44888:15;:42::i;:::-;44855:91;44972:4;44962:14;;;;;:::i;:::-;;;43037:1951;45000:33;45016:4;45022:2;45026:6;45000:15;:33::i;:::-;40284:4757;;;;40171:4870;;;;:::o;18157:226::-;18277:7;18310:1;18305;:6;;18313:12;18297:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18337:9;18353:1;18349;:5;;;;:::i;:::-;18337:17;;18374:1;18367:8;;;18157:226;;;;;:::o;39044:188::-;39161:5;39127:25;:31;39153:4;39127:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;39218:5;39184:40;;39212:4;39184:40;;;;;;;;;;;;39044:188;;:::o;13375:610::-;13533:1;13515:20;;:6;:20;;;13507:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13617:1;13596:23;;:9;:23;;;13588:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13672:47;13693:6;13701:9;13712:6;13672:20;:47::i;:::-;13752:108;13788:6;13752:108;;;;;;;;;;;;;;;;;:9;:17;13762:6;13752:17;;;;;;;;;;;;;;;;:21;;:108;;;;;:::i;:::-;13732:9;:17;13742:6;13732:17;;;;;;;;;;;;;;;:128;;;;13894:32;13919:6;13894:9;:20;13904:9;13894:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13871:9;:20;13881:9;13871:20;;;;;;;;;;;;;;;:55;;;;13959:9;13942:35;;13951:6;13942:35;;;13970:6;13942:35;;;;;;:::i;:::-;;;;;;;;13375:610;;;:::o;46480:2222::-;46519:23;46545:24;46563:4;46545:9;:24::i;:::-;46519:50;;46586:10;;;;;;;;;;;46582:269;;;46635:1;46617:15;:19;46613:206;;;46657:146;46703:4;46731:15;;;;;;;;;;;46769;46657;:146::i;:::-;46613:206;46833:7;;;46582:269;46863:25;46987:16;;46959:12;;46925:18;;46891;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;:112;;;;:::i;:::-;46863:140;;47014:12;47062:1;47043:15;:20;:46;;;;47088:1;47067:17;:22;47043:46;47039:85;;;47106:7;;;;;47039:85;47185:23;47298:1;47265:17;47230:18;;47212:15;:36;;;;:::i;:::-;47211:71;;;;:::i;:::-;:88;;;;:::i;:::-;47185:114;;47310:26;47339:36;47359:15;47339;:19;;:36;;;;:::i;:::-;47310:65;;47388:25;47416:21;47388:49;;47450:36;47467:18;47450:16;:36::i;:::-;47499:18;47520:44;47546:17;47520:21;:25;;:44;;;;:::i;:::-;47499:65;;47577:23;47603:81;47656:17;47603:34;47618:18;;47603:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;47577:107;;47695:17;47715:51;47748:17;47715:28;47730:12;;47715:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;47695:71;;47777:21;47801:79;47852:17;47801:32;47816:16;;47801:10;:14;;:32;;;;:::i;:::-;:36;;:79;;;;:::i;:::-;47777:103;;47893:23;48001:13;47976:9;47945:15;47919:10;:41;;;;:::i;:::-;:66;;;;:::i;:::-;:95;;;;:::i;:::-;47893:121;;48048:1;48027:18;:22;;;;48081:1;48060:18;:22;;;;48108:1;48093:12;:16;;;;48139:1;48120:16;:20;;;;48175:9;;;;;;;;;;;48167:23;;48198:9;48167:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48153:59;;;;;48245:13;;;;;;;;;;;48237:27;;48272:13;48237:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48223:67;;;;;48325:1;48307:15;:19;:42;;;;;48348:1;48330:15;:19;48307:42;48303:278;;;48366:46;48379:15;48396;48366:12;:46::i;:::-;48432:137;48465:18;48502:15;48536:18;;48432:137;;;;;;;;:::i;:::-;;;;;;;;48303:278;48615:15;;;;;;;;;;;48607:29;;48658:21;48607:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48593:101;;;;;46508:2194;;;;;;;;;;;46480:2222;:::o;18642:471::-;18700:7;18950:1;18945;:6;18941:47;;18975:1;18968:8;;;;18941:47;19000:9;19016:1;19012;:5;;;;:::i;:::-;19000:17;;19045:1;19040;19036;:5;;;;:::i;:::-;:10;19028:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;19104:1;19097:8;;;18642:471;;;;;:::o;19589:132::-;19647:7;19674:39;19678:1;19681;19674:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;19667:46;;19589:132;;;;:::o;16859:125::-;;;;:::o;17718:136::-;17776:7;17803:43;17807:1;17810;17803:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;17796:50;;17718:136;;;;:::o;45049:650::-;45175:21;45213:1;45199:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45175:40;;45244:4;45226;45231:1;45226:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;45270:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45260:4;45265:1;45260:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;45305:62;45322:4;45337:15;45355:11;45305:8;:62::i;:::-;45423:15;:66;;;45508:11;45538:1;45586:4;45617;45641:15;45423:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45406:286;45104:595;45049:650;:::o;45707:582::-;45855:62;45872:4;45887:15;45905:11;45855:8;:62::i;:::-;45977:15;:31;;;46016:9;46053:4;46077:11;46107:1;46154;31018:6;46231:15;45977:284;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;45960:322;;;;;;;45707:582;;:::o;20217:312::-;20337:7;20369:1;20365;:5;20372:12;20357:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;20396:9;20412:1;20408;:5;;;;:::i;:::-;20396:17;;20520:1;20513:8;;;20217:312;;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:246::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1646:1;1641:3;1637:11;1631:18;1627:1;1622:3;1618:11;1611:39;1583:2;1580:1;1576:10;1571:15;;1547:113;;;1694:1;1685:6;1680:3;1676:16;1669:27;1518:184;1456:246;;;:::o;1708:102::-;1749:6;1800:2;1796:7;1791:2;1784:5;1780:14;1776:28;1766:38;;1708:102;;;:::o;1816:377::-;1904:3;1932:39;1965:5;1932:39;:::i;:::-;1987:71;2051:6;2046:3;1987:71;:::i;:::-;1980:78;;2067:65;2125:6;2120:3;2113:4;2106:5;2102:16;2067:65;:::i;:::-;2157:29;2179:6;2157:29;:::i;:::-;2152:3;2148:39;2141:46;;1908:285;1816:377;;;;:::o;2199:313::-;2312:4;2350:2;2339:9;2335:18;2327:26;;2399:9;2393:4;2389:20;2385:1;2374:9;2370:17;2363:47;2427:78;2500:4;2491:6;2427:78;:::i;:::-;2419:86;;2199:313;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:329::-;4192:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:119;;;4247:79;;:::i;:::-;4209:119;4367:1;4392:53;4437:7;4428:6;4417:9;4413:22;4392:53;:::i;:::-;4382:63;;4338:117;4133:329;;;;:::o;4468:60::-;4496:3;4517:5;4510:12;;4468:60;;;:::o;4534:142::-;4584:9;4617:53;4635:34;4644:24;4662:5;4644:24;:::i;:::-;4635:34;:::i;:::-;4617:53;:::i;:::-;4604:66;;4534:142;;;:::o;4682:126::-;4732:9;4765:37;4796:5;4765:37;:::i;:::-;4752:50;;4682:126;;;:::o;4814:153::-;4891:9;4924:37;4955:5;4924:37;:::i;:::-;4911:50;;4814:153;;;:::o;4973:185::-;5087:64;5145:5;5087:64;:::i;:::-;5082:3;5075:77;4973:185;;:::o;5164:276::-;5284:4;5322:2;5311:9;5307:18;5299:26;;5335:98;5430:1;5419:9;5415:17;5406:6;5335:98;:::i;:::-;5164:276;;;;:::o;5446:118::-;5533:24;5551:5;5533:24;:::i;:::-;5528:3;5521:37;5446:118;;:::o;5570:222::-;5663:4;5701:2;5690:9;5686:18;5678:26;;5714:71;5782:1;5771:9;5767:17;5758:6;5714:71;:::i;:::-;5570:222;;;;:::o;5798:619::-;5875:6;5883;5891;5940:2;5928:9;5919:7;5915:23;5911:32;5908:119;;;5946:79;;:::i;:::-;5908:119;6066:1;6091:53;6136:7;6127:6;6116:9;6112:22;6091:53;:::i;:::-;6081:63;;6037:117;6193:2;6219:53;6264:7;6255:6;6244:9;6240:22;6219:53;:::i;:::-;6209:63;;6164:118;6321:2;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6292:118;5798:619;;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:468::-;7179:6;7187;7236:2;7224:9;7215:7;7211:23;7207:32;7204:119;;;7242:79;;:::i;:::-;7204:119;7362:1;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7333:117;7489:2;7515:50;7557:7;7548:6;7537:9;7533:22;7515:50;:::i;:::-;7505:60;;7460:115;7114:468;;;;;:::o;7588:765::-;7674:6;7682;7690;7698;7747:3;7735:9;7726:7;7722:23;7718:33;7715:120;;;7754:79;;:::i;:::-;7715:120;7874:1;7899:53;7944:7;7935:6;7924:9;7920:22;7899:53;:::i;:::-;7889:63;;7845:117;8001:2;8027:53;8072:7;8063:6;8052:9;8048:22;8027:53;:::i;:::-;8017:63;;7972:118;8129:2;8155:53;8200:7;8191:6;8180:9;8176:22;8155:53;:::i;:::-;8145:63;;8100:118;8257:2;8283:53;8328:7;8319:6;8308:9;8304:22;8283:53;:::i;:::-;8273:63;;8228:118;7588:765;;;;;;;:::o;8359:323::-;8415:6;8464:2;8452:9;8443:7;8439:23;8435:32;8432:119;;;8470:79;;:::i;:::-;8432:119;8590:1;8615:50;8657:7;8648:6;8637:9;8633:22;8615:50;:::i;:::-;8605:60;;8561:114;8359:323;;;;:::o;8688:474::-;8756:6;8764;8813:2;8801:9;8792:7;8788:23;8784:32;8781:119;;;8819:79;;:::i;:::-;8781:119;8939:1;8964:53;9009:7;9000:6;8989:9;8985:22;8964:53;:::i;:::-;8954:63;;8910:117;9066:2;9092:53;9137:7;9128:6;9117:9;9113:22;9092:53;:::i;:::-;9082:63;;9037:118;8688:474;;;;;:::o;9168:182::-;9308:34;9304:1;9296:6;9292:14;9285:58;9168:182;:::o;9356:366::-;9498:3;9519:67;9583:2;9578:3;9519:67;:::i;:::-;9512:74;;9595:93;9684:3;9595:93;:::i;:::-;9713:2;9708:3;9704:12;9697:19;;9356:366;;;:::o;9728:419::-;9894:4;9932:2;9921:9;9917:18;9909:26;;9981:9;9975:4;9971:20;9967:1;9956:9;9952:17;9945:47;10009:131;10135:4;10009:131;:::i;:::-;10001:139;;9728:419;;;:::o;10153:180::-;10201:77;10198:1;10191:88;10298:4;10295:1;10288:15;10322:4;10319:1;10312:15;10339:320;10383:6;10420:1;10414:4;10410:12;10400:22;;10467:1;10461:4;10457:12;10488:18;10478:81;;10544:4;10536:6;10532:17;10522:27;;10478:81;10606:2;10598:6;10595:14;10575:18;10572:38;10569:84;;10625:18;;:::i;:::-;10569:84;10390:269;10339:320;;;:::o;10665:232::-;10805:34;10801:1;10793:6;10789:14;10782:58;10874:15;10869:2;10861:6;10857:15;10850:40;10665:232;:::o;10903:366::-;11045:3;11066:67;11130:2;11125:3;11066:67;:::i;:::-;11059:74;;11142:93;11231:3;11142:93;:::i;:::-;11260:2;11255:3;11251:12;11244:19;;10903:366;;;:::o;11275:419::-;11441:4;11479:2;11468:9;11464:18;11456:26;;11528:9;11522:4;11518:20;11514:1;11503:9;11499:17;11492:47;11556:131;11682:4;11556:131;:::i;:::-;11548:139;;11275:419;;;:::o;11700:180::-;11748:77;11745:1;11738:88;11845:4;11842:1;11835:15;11869:4;11866:1;11859:15;11886:410;11926:7;11949:20;11967:1;11949:20;:::i;:::-;11944:25;;11983:20;12001:1;11983:20;:::i;:::-;11978:25;;12038:1;12035;12031:9;12060:30;12078:11;12060:30;:::i;:::-;12049:41;;12239:1;12230:7;12226:15;12223:1;12220:22;12200:1;12193:9;12173:83;12150:139;;12269:18;;:::i;:::-;12150:139;11934:362;11886:410;;;;:::o;12302:180::-;12350:77;12347:1;12340:88;12447:4;12444:1;12437:15;12471:4;12468:1;12461:15;12488:185;12528:1;12545:20;12563:1;12545:20;:::i;:::-;12540:25;;12579:20;12597:1;12579:20;:::i;:::-;12574:25;;12618:1;12608:35;;12623:18;;:::i;:::-;12608:35;12665:1;12662;12658:9;12653:14;;12488:185;;;;:::o;12679:191::-;12719:3;12738:20;12756:1;12738:20;:::i;:::-;12733:25;;12772:20;12790:1;12772:20;:::i;:::-;12767:25;;12815:1;12812;12808:9;12801:16;;12836:3;12833:1;12830:10;12827:36;;;12843:18;;:::i;:::-;12827:36;12679:191;;;;:::o;12876:179::-;13016:31;13012:1;13004:6;13000:14;12993:55;12876:179;:::o;13061:366::-;13203:3;13224:67;13288:2;13283:3;13224:67;:::i;:::-;13217:74;;13300:93;13389:3;13300:93;:::i;:::-;13418:2;13413:3;13409:12;13402:19;;13061:366;;;:::o;13433:419::-;13599:4;13637:2;13626:9;13622:18;13614:26;;13686:9;13680:4;13676:20;13672:1;13661:9;13657:17;13650:47;13714:131;13840:4;13714:131;:::i;:::-;13706:139;;13433:419;;;:::o;13858:244::-;13998:34;13994:1;13986:6;13982:14;13975:58;14067:27;14062:2;14054:6;14050:15;14043:52;13858:244;:::o;14108:366::-;14250:3;14271:67;14335:2;14330:3;14271:67;:::i;:::-;14264:74;;14347:93;14436:3;14347:93;:::i;:::-;14465:2;14460:3;14456:12;14449:19;;14108:366;;;:::o;14480:419::-;14646:4;14684:2;14673:9;14669:18;14661:26;;14733:9;14727:4;14723:20;14719:1;14708:9;14704:17;14697:47;14761:131;14887:4;14761:131;:::i;:::-;14753:139;;14480:419;;;:::o;14905:225::-;15045:34;15041:1;15033:6;15029:14;15022:58;15114:8;15109:2;15101:6;15097:15;15090:33;14905:225;:::o;15136:366::-;15278:3;15299:67;15363:2;15358:3;15299:67;:::i;:::-;15292:74;;15375:93;15464:3;15375:93;:::i;:::-;15493:2;15488:3;15484:12;15477:19;;15136:366;;;:::o;15508:419::-;15674:4;15712:2;15701:9;15697:18;15689:26;;15761:9;15755:4;15751:20;15747:1;15736:9;15732:17;15725:47;15789:131;15915:4;15789:131;:::i;:::-;15781:139;;15508:419;;;:::o;15933:177::-;16073:29;16069:1;16061:6;16057:14;16050:53;15933:177;:::o;16116:366::-;16258:3;16279:67;16343:2;16338:3;16279:67;:::i;:::-;16272:74;;16355:93;16444:3;16355:93;:::i;:::-;16473:2;16468:3;16464:12;16457:19;;16116:366;;;:::o;16488:419::-;16654:4;16692:2;16681:9;16677:18;16669:26;;16741:9;16735:4;16731:20;16727:1;16716:9;16712:17;16705:47;16769:131;16895:4;16769:131;:::i;:::-;16761:139;;16488:419;;;:::o;16913:223::-;17053:34;17049:1;17041:6;17037:14;17030:58;17122:6;17117:2;17109:6;17105:15;17098:31;16913:223;:::o;17142:366::-;17284:3;17305:67;17369:2;17364:3;17305:67;:::i;:::-;17298:74;;17381:93;17470:3;17381:93;:::i;:::-;17499:2;17494:3;17490:12;17483:19;;17142:366;;;:::o;17514:419::-;17680:4;17718:2;17707:9;17703:18;17695:26;;17767:9;17761:4;17757:20;17753:1;17742:9;17738:17;17731:47;17795:131;17921:4;17795:131;:::i;:::-;17787:139;;17514:419;;;:::o;17939:221::-;18079:34;18075:1;18067:6;18063:14;18056:58;18148:4;18143:2;18135:6;18131:15;18124:29;17939:221;:::o;18166:366::-;18308:3;18329:67;18393:2;18388:3;18329:67;:::i;:::-;18322:74;;18405:93;18494:3;18405:93;:::i;:::-;18523:2;18518:3;18514:12;18507:19;;18166:366;;;:::o;18538:419::-;18704:4;18742:2;18731:9;18727:18;18719:26;;18791:9;18785:4;18781:20;18777:1;18766:9;18762:17;18755:47;18819:131;18945:4;18819:131;:::i;:::-;18811:139;;18538:419;;;:::o;18963:224::-;19103:34;19099:1;19091:6;19087:14;19080:58;19172:7;19167:2;19159:6;19155:15;19148:32;18963:224;:::o;19193:366::-;19335:3;19356:67;19420:2;19415:3;19356:67;:::i;:::-;19349:74;;19432:93;19521:3;19432:93;:::i;:::-;19550:2;19545:3;19541:12;19534:19;;19193:366;;;:::o;19565:419::-;19731:4;19769:2;19758:9;19754:18;19746:26;;19818:9;19812:4;19808:20;19804:1;19793:9;19789:17;19782:47;19846:131;19972:4;19846:131;:::i;:::-;19838:139;;19565:419;;;:::o;19990:222::-;20130:34;20126:1;20118:6;20114:14;20107:58;20199:5;20194:2;20186:6;20182:15;20175:30;19990:222;:::o;20218:366::-;20360:3;20381:67;20445:2;20440:3;20381:67;:::i;:::-;20374:74;;20457:93;20546:3;20457:93;:::i;:::-;20575:2;20570:3;20566:12;20559:19;;20218:366;;;:::o;20590:419::-;20756:4;20794:2;20783:9;20779:18;20771:26;;20843:9;20837:4;20833:20;20829:1;20818:9;20814:17;20807:47;20871:131;20997:4;20871:131;:::i;:::-;20863:139;;20590:419;;;:::o;21015:172::-;21155:24;21151:1;21143:6;21139:14;21132:48;21015:172;:::o;21193:366::-;21335:3;21356:67;21420:2;21415:3;21356:67;:::i;:::-;21349:74;;21432:93;21521:3;21432:93;:::i;:::-;21550:2;21545:3;21541:12;21534:19;;21193:366;;;:::o;21565:419::-;21731:4;21769:2;21758:9;21754:18;21746:26;;21818:9;21812:4;21808:20;21804:1;21793:9;21789:17;21782:47;21846:131;21972:4;21846:131;:::i;:::-;21838:139;;21565:419;;;:::o;21990:240::-;22130:34;22126:1;22118:6;22114:14;22107:58;22199:23;22194:2;22186:6;22182:15;22175:48;21990:240;:::o;22236:366::-;22378:3;22399:67;22463:2;22458:3;22399:67;:::i;:::-;22392:74;;22475:93;22564:3;22475:93;:::i;:::-;22593:2;22588:3;22584:12;22577:19;;22236:366;;;:::o;22608:419::-;22774:4;22812:2;22801:9;22797:18;22789:26;;22861:9;22855:4;22851:20;22847:1;22836:9;22832:17;22825:47;22889:131;23015:4;22889:131;:::i;:::-;22881:139;;22608:419;;;:::o;23033:169::-;23173:21;23169:1;23161:6;23157:14;23150:45;23033:169;:::o;23208:366::-;23350:3;23371:67;23435:2;23430:3;23371:67;:::i;:::-;23364:74;;23447:93;23536:3;23447:93;:::i;:::-;23565:2;23560:3;23556:12;23549:19;;23208:366;;;:::o;23580:419::-;23746:4;23784:2;23773:9;23769:18;23761:26;;23833:9;23827:4;23823:20;23819:1;23808:9;23804:17;23797:47;23861:131;23987:4;23861:131;:::i;:::-;23853:139;;23580:419;;;:::o;24005:241::-;24145:34;24141:1;24133:6;24129:14;24122:58;24214:24;24209:2;24201:6;24197:15;24190:49;24005:241;:::o;24252:366::-;24394:3;24415:67;24479:2;24474:3;24415:67;:::i;:::-;24408:74;;24491:93;24580:3;24491:93;:::i;:::-;24609:2;24604:3;24600:12;24593:19;;24252:366;;;:::o;24624:419::-;24790:4;24828:2;24817:9;24813:18;24805:26;;24877:9;24871:4;24867:20;24863:1;24852:9;24848:17;24841:47;24905:131;25031:4;24905:131;:::i;:::-;24897:139;;24624:419;;;:::o;25049:163::-;25189:15;25185:1;25177:6;25173:14;25166:39;25049:163;:::o;25218:366::-;25360:3;25381:67;25445:2;25440:3;25381:67;:::i;:::-;25374:74;;25457:93;25546:3;25457:93;:::i;:::-;25575:2;25570:3;25566:12;25559:19;;25218:366;;;:::o;25590:419::-;25756:4;25794:2;25783:9;25779:18;25771:26;;25843:9;25837:4;25833:20;25829:1;25818:9;25814:17;25807:47;25871:131;25997:4;25871:131;:::i;:::-;25863:139;;25590:419;;;:::o;26015:161::-;26155:13;26151:1;26143:6;26139:14;26132:37;26015:161;:::o;26182:366::-;26324:3;26345:67;26409:2;26404:3;26345:67;:::i;:::-;26338:74;;26421:93;26510:3;26421:93;:::i;:::-;26539:2;26534:3;26530:12;26523:19;;26182:366;;;:::o;26554:419::-;26720:4;26758:2;26747:9;26743:18;26735:26;;26807:9;26801:4;26797:20;26793:1;26782:9;26778:17;26771:47;26835:131;26961:4;26835:131;:::i;:::-;26827:139;;26554:419;;;:::o;26979:194::-;27019:4;27039:20;27057:1;27039:20;:::i;:::-;27034:25;;27073:20;27091:1;27073:20;:::i;:::-;27068:25;;27117:1;27114;27110:9;27102:17;;27141:1;27135:4;27132:11;27129:37;;;27146:18;;:::i;:::-;27129:37;26979:194;;;;:::o;27179:147::-;27280:11;27317:3;27302:18;;27179:147;;;;:::o;27332:114::-;;:::o;27452:398::-;27611:3;27632:83;27713:1;27708:3;27632:83;:::i;:::-;27625:90;;27724:93;27813:3;27724:93;:::i;:::-;27842:1;27837:3;27833:11;27826:18;;27452:398;;;:::o;27856:379::-;28040:3;28062:147;28205:3;28062:147;:::i;:::-;28055:154;;28226:3;28219:10;;27856:379;;;:::o;28241:442::-;28390:4;28428:2;28417:9;28413:18;28405:26;;28441:71;28509:1;28498:9;28494:17;28485:6;28441:71;:::i;:::-;28522:72;28590:2;28579:9;28575:18;28566:6;28522:72;:::i;:::-;28604;28672:2;28661:9;28657:18;28648:6;28604:72;:::i;:::-;28241:442;;;;;;:::o;28689:220::-;28829:34;28825:1;28817:6;28813:14;28806:58;28898:3;28893:2;28885:6;28881:15;28874:28;28689:220;:::o;28915:366::-;29057:3;29078:67;29142:2;29137:3;29078:67;:::i;:::-;29071:74;;29154:93;29243:3;29154:93;:::i;:::-;29272:2;29267:3;29263:12;29256:19;;28915:366;;;:::o;29287:419::-;29453:4;29491:2;29480:9;29476:18;29468:26;;29540:9;29534:4;29530:20;29526:1;29515:9;29511:17;29504:47;29568:131;29694:4;29568:131;:::i;:::-;29560:139;;29287:419;;;:::o;29712:180::-;29760:77;29757:1;29750:88;29857:4;29854:1;29847:15;29881:4;29878:1;29871:15;29898:180;29946:77;29943:1;29936:88;30043:4;30040:1;30033:15;30067:4;30064:1;30057:15;30084:143;30141:5;30172:6;30166:13;30157:22;;30188:33;30215:5;30188:33;:::i;:::-;30084:143;;;;:::o;30233:351::-;30303:6;30352:2;30340:9;30331:7;30327:23;30323:32;30320:119;;;30358:79;;:::i;:::-;30320:119;30478:1;30503:64;30559:7;30550:6;30539:9;30535:22;30503:64;:::i;:::-;30493:74;;30449:128;30233:351;;;;:::o;30590:85::-;30635:7;30664:5;30653:16;;30590:85;;;:::o;30681:158::-;30739:9;30772:61;30790:42;30799:32;30825:5;30799:32;:::i;:::-;30790:42;:::i;:::-;30772:61;:::i;:::-;30759:74;;30681:158;;;:::o;30845:147::-;30940:45;30979:5;30940:45;:::i;:::-;30935:3;30928:58;30845:147;;:::o;30998:114::-;31065:6;31099:5;31093:12;31083:22;;30998:114;;;:::o;31118:184::-;31217:11;31251:6;31246:3;31239:19;31291:4;31286:3;31282:14;31267:29;;31118:184;;;;:::o;31308:132::-;31375:4;31398:3;31390:11;;31428:4;31423:3;31419:14;31411:22;;31308:132;;;:::o;31446:108::-;31523:24;31541:5;31523:24;:::i;:::-;31518:3;31511:37;31446:108;;:::o;31560:179::-;31629:10;31650:46;31692:3;31684:6;31650:46;:::i;:::-;31728:4;31723:3;31719:14;31705:28;;31560:179;;;;:::o;31745:113::-;31815:4;31847;31842:3;31838:14;31830:22;;31745:113;;;:::o;31894:732::-;32013:3;32042:54;32090:5;32042:54;:::i;:::-;32112:86;32191:6;32186:3;32112:86;:::i;:::-;32105:93;;32222:56;32272:5;32222:56;:::i;:::-;32301:7;32332:1;32317:284;32342:6;32339:1;32336:13;32317:284;;;32418:6;32412:13;32445:63;32504:3;32489:13;32445:63;:::i;:::-;32438:70;;32531:60;32584:6;32531:60;:::i;:::-;32521:70;;32377:224;32364:1;32361;32357:9;32352:14;;32317:284;;;32321:14;32617:3;32610:10;;32018:608;;;31894:732;;;;:::o;32632:831::-;32895:4;32933:3;32922:9;32918:19;32910:27;;32947:71;33015:1;33004:9;33000:17;32991:6;32947:71;:::i;:::-;33028:80;33104:2;33093:9;33089:18;33080:6;33028:80;:::i;:::-;33155:9;33149:4;33145:20;33140:2;33129:9;33125:18;33118:48;33183:108;33286:4;33277:6;33183:108;:::i;:::-;33175:116;;33301:72;33369:2;33358:9;33354:18;33345:6;33301:72;:::i;:::-;33383:73;33451:3;33440:9;33436:19;33427:6;33383:73;:::i;:::-;32632:831;;;;;;;;:::o;33469:807::-;33718:4;33756:3;33745:9;33741:19;33733:27;;33770:71;33838:1;33827:9;33823:17;33814:6;33770:71;:::i;:::-;33851:72;33919:2;33908:9;33904:18;33895:6;33851:72;:::i;:::-;33933:80;34009:2;33998:9;33994:18;33985:6;33933:80;:::i;:::-;34023;34099:2;34088:9;34084:18;34075:6;34023:80;:::i;:::-;34113:73;34181:3;34170:9;34166:19;34157:6;34113:73;:::i;:::-;34196;34264:3;34253:9;34249:19;34240:6;34196:73;:::i;:::-;33469:807;;;;;;;;;:::o;34282:143::-;34339:5;34370:6;34364:13;34355:22;;34386:33;34413:5;34386:33;:::i;:::-;34282:143;;;;:::o;34431:663::-;34519:6;34527;34535;34584:2;34572:9;34563:7;34559:23;34555:32;34552:119;;;34590:79;;:::i;:::-;34552:119;34710:1;34735:64;34791:7;34782:6;34771:9;34767:22;34735:64;:::i;:::-;34725:74;;34681:128;34848:2;34874:64;34930:7;34921:6;34910:9;34906:22;34874:64;:::i;:::-;34864:74;;34819:129;34987:2;35013:64;35069:7;35060:6;35049:9;35045:22;35013:64;:::i;:::-;35003:74;;34958:129;34431:663;;;;;:::o
Swarm Source
ipfs://799e2bec5f5528bf4e3e236fa8f70584ebf54e6010f38462ad54a1f45a5c5f05
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.