ERC-20
Overview
Max Total Supply
1,000,000,000,000 CAR
Holders
45
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
852,742,104.628135619 CARValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CAR
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-29 */ // CapitalAggregatorMeme: $CAR // Deflationary DeFi-as-a-Service (DaaS) Token, with 60% supply burned to 0x0dEaD //Initial Supply: 1,000,000,000,000 $CAR //60% of $CAR burned to 0x0dEaD //10% of each buy goes to existing holders. //10% of each sell goes into marketing/development/buybacks and staking // Twitter: https://twitter.com/CARETHTOKEN // Website: https://capitalaggregatorrewards.com/ // Telegram: https://t.me/CARETH pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @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) { return a + b; } /** * @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 a - b; } /** * @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) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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 a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual 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 { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.0 (utils/Address.sol) pragma solidity ^0.8.0; /** * @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) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @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"); (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"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: contracts/varistablecapital.sol // Vari-Stable Capital: $VSC // Deflationary DeFi-as-a-Service (DaaS) Token, with 60% supply burned to 0x0dEaD // You buy on Ethereum, we execute algorithmic stablecoin strategies on various chains and return the profits to $VSC holders. //Initial Supply: 1,000,000,000,000 $VSC //60% of $VSC burned to 0x0dEaD //10% of each buy goes to existing holders. //10% of each sell goes into various-chain algorithmic stablecoin investing to add to the treasury and buy back $VSC tokens. // Twitter: // Website: // Medium: // Telegram: interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } pragma solidity ^0.8.0; //SPDX-License-Identifier: MIT contract CAR is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'CapitalAggregatorRewards'; string private _symbol = 'CAR'; uint8 private _decimals = 9; uint256 private _taxFee = 10; uint256 private _teamFee = 10; uint256 private _previousTaxFee = _taxFee; uint256 private _previousTeamFee = _teamFee; address payable public _VSCWalletAddress; address payable public _marketingWalletAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwap = false; bool public swapEnabled = true; uint256 private _maxTxAmount = 100000000000000e9; // We will set a minimum amount of tokens to be swaped => 5M uint256 private _numOfTokensToExchangeForTeam = 5 * 10**3 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapEnabledUpdated(bool enabled); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor (address payable VSCWalletAddress, address payable marketingWalletAddress) { _VSCWalletAddress = VSCWalletAddress; _marketingWalletAddress = marketingWalletAddress; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } 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 _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, 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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludeFromFee(address account, bool excluded) external onlyOwner() { _isExcludedFromFee[account] = excluded; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeAccount(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function removeAllFee() private { if(_taxFee == 0 && _teamFee == 0) return; _previousTaxFee = _taxFee; _previousTeamFee = _teamFee; _taxFee = 0; _teamFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _teamFee = _previousTeamFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } 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 _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(sender != owner() && recipient != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap? // also, don't get caught in a circular team event. // also, don't swap if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam; if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) { // We need to swap the current tokens to ETH and send to the team wallet swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToTeam(address(this).balance); } } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } //transfer amount, it will take tax and team fee _tokenTransfer(sender,recipient,amount,takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{ // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function sendETHToTeam(uint256 amount) private { _VSCWalletAddress.transfer(amount.div(2)); _marketingWalletAddress.transfer(amount.div(2)); } // We are exposing these functions to be able to manual swap and send // in case the token is highly valued and 5M becomes too much function manualSwap() external onlyOwner() { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external onlyOwner() { uint256 contractETHBalance = address(this).balance; sendETHToTeam(contractETHBalance); } function setSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tTeam = tAmount.mul(teamFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _getTaxFee() private view returns(uint256) { return _taxFee; } function _getMaxTxAmount() private view returns(uint256) { return _maxTxAmount; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner() { require(taxFee >= 1 && taxFee <= 25, 'taxFee should be in 1 - 25'); _taxFee = taxFee; } function _setTeamFee(uint256 teamFee) external onlyOwner() { require(teamFee >= 1 && teamFee <= 25, 'teamFee should be in 1 - 25'); _teamFee = teamFee; } function _setVSCWallet(address payable VSCWalletAddress) external onlyOwner() { _VSCWalletAddress = VSCWalletAddress; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { require(maxTxAmount >= 100000000000000e9 , 'maxTxAmount should be greater than 100000000000000e9'); _maxTxAmount = maxTxAmount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"VSCWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":"_VSCWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"VSCWalletAddress","type":"address"}],"name":"_setVSCWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052683635c9adc5dea0000060075560075460001962000023919062000946565b60001962000032919062000883565b6008556040518060400160405280601881526020017f4361706974616c41676772656761746f72526577617264730000000000000000815250600a908051906020019062000082929190620006cc565b506040518060400160405280600381526020017f4341520000000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000d0929190620006cc565b506009600c60006101000a81548160ff021916908360ff160217905550600a600d55600a600e55600d54600f55600e546010556000601260146101000a81548160ff0219169083151502179055506001601260156101000a81548160ff02191690831515021790555069152d02c7e14af680000060135565048c273950006014553480156200015e57600080fd5b5060405162005988380380620059888339818101604052810190620001849190620007d6565b620001a462000198620005d760201b60201c565b620005df60201b60201c565b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600160006200023d620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002db57600080fd5b505afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003169190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037957600080fd5b505afa1580156200038e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b49190620007aa565b6040518363ffffffff1660e01b8152600401620003d392919062000839565b602060405180830381600087803b158015620003ee57600080fd5b505af115801562000403573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004299190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160046000620004ac620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000565620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620005c6919062000866565b60405180910390a350505062000a3f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620006da9062000910565b90600052602060002090601f016020900481019282620006fe57600085556200074a565b82601f106200071957805160ff19168380011785556200074a565b828001600101855582156200074a579182015b82811115620007495782518255916020019190600101906200072c565b5b5090506200075991906200075d565b5090565b5b80821115620007785760008160009055506001016200075e565b5090565b6000815190506200078d8162000a0b565b92915050565b600081519050620007a48162000a25565b92915050565b600060208284031215620007bd57600080fd5b6000620007cd848285016200077c565b91505092915050565b60008060408385031215620007ea57600080fd5b6000620007fa8582860162000793565b92505060206200080d8582860162000793565b9150509250929050565b6200082281620008be565b82525050565b620008338162000906565b82525050565b600060408201905062000850600083018562000817565b6200085f602083018462000817565b9392505050565b60006020820190506200087d600083018462000828565b92915050565b6000620008908262000906565b91506200089d8362000906565b925082821015620008b357620008b26200097e565b5b828203905092915050565b6000620008cb82620008e6565b9050919050565b6000620008df82620008e6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200092957607f821691505b6020821081141562000940576200093f620009dc565b5b50919050565b6000620009538262000906565b9150620009608362000906565b925082620009735762000972620009ad565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000a1681620008be565b811462000a2257600080fd5b50565b62000a3081620008d2565b811462000a3c57600080fd5b50565b60805160601c60a05160601c614f0162000a8760003960008181610f91015261243f01526000818161095d015281816127aa015281816128c001526128e70152614f016000f3fe6080604052600436106102135760003560e01c80635880b87311610118578063c0072488116100a0578063f2cc0c181161006f578063f2cc0c18146107e4578063f2fde38b1461080d578063f429389014610836578063f815a8421461084d578063f84354f1146108785761021a565b8063c007248814610718578063cba0e99614610741578063dd62ed3e1461077e578063e01af92c146107bb5761021a565b80638da5cb5b116100e75780638da5cb5b1461061f57806395d89b411461064a578063a457c2d714610675578063a9059cbb146106b2578063af9549e0146106ef5761021a565b80635880b873146105775780636ddd1713146105a057806370a08231146105cb578063715018a6146106085761021a565b80632d8381191161019b5780634144d9e41161016a5780634144d9e4146104905780634549b039146104bb57806349bd5a5e146104f857806351bc3c85146105235780635342acb41461053a5761021a565b80632d838119146103c2578063313ce567146103ff578063395093511461042a5780633bd5d173146104675761021a565b806318160ddd116101e257806318160ddd146102dd5780631bbae6e01461030857806323b872dd14610331578063286671621461036e5780632abe39ec146103975761021a565b806306fdde031461021f578063095ea7b31461024a57806313114a9d146102875780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108a1565b604051610241919061481d565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c919061401e565b610933565b60405161027e91906147e7565b60405180910390f35b34801561029357600080fd5b5061029c610951565b6040516102a99190614a3f565b60405180910390f35b3480156102be57600080fd5b506102c761095b565b6040516102d49190614802565b60405180910390f35b3480156102e957600080fd5b506102f261097f565b6040516102ff9190614a3f565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190614083565b610989565b005b34801561033d57600080fd5b5061035860048036038101906103539190613f93565b610a5c565b60405161036591906147e7565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190614083565b610b35565b005b3480156103a357600080fd5b506103ac610c0c565b6040516103b991906147cc565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190614083565b610c32565b6040516103f69190614a3f565b60405180910390f35b34801561040b57600080fd5b50610414610ca0565b6040516104219190614ab4565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c919061401e565b610cb7565b60405161045e91906147e7565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190614083565b610d6a565b005b34801561049c57600080fd5b506104a5610ee5565b6040516104b291906147cc565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906140ac565b610f0b565b6040516104ef9190614a3f565b60405180910390f35b34801561050457600080fd5b5061050d610f8f565b60405161051a91906147b1565b60405180910390f35b34801561052f57600080fd5b50610538610fb3565b005b34801561054657600080fd5b50610561600480360381019061055c9190613edc565b611048565b60405161056e91906147e7565b60405180910390f35b34801561058357600080fd5b5061059e60048036038101906105999190614083565b61109e565b005b3480156105ac57600080fd5b506105b5611175565b6040516105c291906147e7565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613edc565b611188565b6040516105ff9190614a3f565b60405180910390f35b34801561061457600080fd5b5061061d611273565b005b34801561062b57600080fd5b506106346112fb565b60405161064191906147b1565b60405180910390f35b34801561065657600080fd5b5061065f611324565b60405161066c919061481d565b60405180910390f35b34801561068157600080fd5b5061069c6004803603810190610697919061401e565b6113b6565b6040516106a991906147e7565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d4919061401e565b611483565b6040516106e691906147e7565b60405180910390f35b3480156106fb57600080fd5b5061071660048036038101906107119190613fe2565b6114a1565b005b34801561072457600080fd5b5061073f600480360381019061073a9190613f2e565b611578565b005b34801561074d57600080fd5b5061076860048036038101906107639190613edc565b611638565b60405161077591906147e7565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613f57565b61168e565b6040516107b29190614a3f565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd919061405a565b611715565b005b3480156107f057600080fd5b5061080b60048036038101906108069190613edc565b6117ae565b005b34801561081957600080fd5b50610834600480360381019061082f9190613edc565b611acc565b005b34801561084257600080fd5b5061084b611bc4565b005b34801561085957600080fd5b50610862611c51565b60405161086f9190614a3f565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613edc565b611c59565b005b6060600a80546108b090614d09565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614d09565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b5050505050905090565b6000610947610940612027565b848461202f565b6001905092915050565b6000600954905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b610991612027565b73ffffffffffffffffffffffffffffffffffffffff166109af6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc9061495f565b60405180910390fd5b69152d02c7e14af6800000811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a49906148ff565b60405180910390fd5b8060138190555050565b6000610a698484846121fa565b610b2a84610a75612027565b610b2585604051806060016040528060288152602001614e7f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adb612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b600190509392505050565b610b3d612027565b73ffffffffffffffffffffffffffffffffffffffff16610b5b6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba89061495f565b60405180910390fd5b60018110158015610bc3575060198111155b610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf9906148bf565b60405180910390fd5b80600e8190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600854821115610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c709061485f565b60405180910390fd5b6000610c836125d0565b9050610c9881846125fb90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610d60610cc4612027565b84610d5b8560036000610cd5612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b61202f565b6001905092915050565b6000610d74612027565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90614a1f565b60405180910390fd5b6000610e0e83612627565b50505050509050610e6781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ebf8160085461268e90919063ffffffff16565b600881905550610eda8360095461261190919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754831115610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f499061491f565b60405180910390fd5b81610f72576000610f6284612627565b5050505050905080915050610f89565b6000610f7d84612627565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610fbb612027565b73ffffffffffffffffffffffffffffffffffffffff16610fd96112fb565b73ffffffffffffffffffffffffffffffffffffffff161461102f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110269061495f565b60405180910390fd5b600061103a30611188565b9050611045816126a4565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110a6612027565b73ffffffffffffffffffffffffffffffffffffffff166110c46112fb565b73ffffffffffffffffffffffffffffffffffffffff161461111a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111119061495f565b60405180910390fd5b6001811015801561112c575060198111155b61116b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611162906149df565b60405180910390fd5b80600d8190555050565b601260159054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561122357600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061126e565b61126b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c32565b90505b919050565b61127b612027565b73ffffffffffffffffffffffffffffffffffffffff166112996112fb565b73ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e69061495f565b60405180910390fd5b6112f96000612998565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461133390614d09565b80601f016020809104026020016040519081016040528092919081815260200182805461135f90614d09565b80156113ac5780601f10611381576101008083540402835291602001916113ac565b820191906000526020600020905b81548152906001019060200180831161138f57829003601f168201915b5050505050905090565b60006114796113c3612027565b8461147485604051806060016040528060258152602001614ea760259139600360006113ed612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b6001905092915050565b6000611497611490612027565b84846121fa565b6001905092915050565b6114a9612027565b73ffffffffffffffffffffffffffffffffffffffff166114c76112fb565b73ffffffffffffffffffffffffffffffffffffffff161461151d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115149061495f565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611580612027565b73ffffffffffffffffffffffffffffffffffffffff1661159e6112fb565b73ffffffffffffffffffffffffffffffffffffffff16146115f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb9061495f565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61171d612027565b73ffffffffffffffffffffffffffffffffffffffff1661173b6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117889061495f565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6117b6612027565b73ffffffffffffffffffffffffffffffffffffffff166117d46112fb565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118219061495f565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a4906149ff565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611931906148df565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a0e576119ca600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c32565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4612027565b73ffffffffffffffffffffffffffffffffffffffff16611af26112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f9061495f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf9061487f565b60405180910390fd5b611bc181612998565b50565b611bcc612027565b73ffffffffffffffffffffffffffffffffffffffff16611bea6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c379061495f565b60405180910390fd5b6000479050611c4e81612a5c565b50565b600047905090565b611c61612027565b73ffffffffffffffffffffffffffffffffffffffff16611c7f6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc9061495f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d58906148df565b60405180910390fd5b60005b600680549050811015612023578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611dc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156120105760066001600680549050611e1d9190614c05565b81548110611e54577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611eb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611fd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612023565b808061201b90614d3b565b915050611d64565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561209f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612096906149bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121069061489f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121ed9190614a3f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561226a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122619061499f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d19061483f565b60405180910390fd5b6000811161231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123149061497f565b60405180910390fd5b6123256112fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561239357506123636112fb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123de576013548111156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d49061493f565b60405180910390fd5b5b60006123e930611188565b905060135481106123fa5760135490505b60006014548210159050601260149054906101000a900460ff1615801561242d5750601260159054906101000a900460ff165b80156124365750805b801561248e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124b65761249c826126a4565b600047905060008111156124b4576124b347612a5c565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061255d5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561256757600090505b61257386868684612b57565b505050505050565b60008383111582906125c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ba919061481d565b60405180910390fd5b5082840390509392505050565b60008060006125dd612e68565b915091506125f481836125fb90919063ffffffff16565b9250505090565b600081836126099190614b7a565b905092915050565b6000818361261f9190614b24565b905092915050565b60008060008060008060008060006126448a600d54600e546131b3565b92509250925060006126546125d0565b905060008060006126668e8786613249565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000818361269c9190614c05565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612702577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156127305781602001602082028036833780820191505090505b509050308160008151811061276e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561280e57600080fd5b505afa158015612822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128469190613f05565b81600181518110612880577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128e5307f00000000000000000000000000000000000000000000000000000000000000008461202f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612947959493929190614a5a565b600060405180830381600087803b15801561296157600080fd5b505af1158015612975573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612aac6002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612ad7573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612b286002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612b53573d6000803e3d6000fd5b5050565b80612b6557612b646132a7565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c085750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c1d57612c188484846132ea565b612e54565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cc05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cd557612cd084848461354a565b612e53565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d795750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d8e57612d898484846137aa565b612e52565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e305750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e4557612e40848484613975565b612e51565b612e508484846137aa565b5b5b5b5b80612e6257612e61613c6a565b5b50505050565b600080600060085490506000600754905060005b60068054905081101561317657826001600060068481548110612ec8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612fdc5750816002600060068481548110612f74577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ff357600854600754945094505050506131af565b6130a96001600060068481548110613034577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461268e90919063ffffffff16565b925061316160026000600684815481106130ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361268e90919063ffffffff16565b9150808061316e90614d3b565b915050612e7c565b5061318e6007546008546125fb90919063ffffffff16565b8210156131a6576008546007549350935050506131af565b81819350935050505b9091565b6000806000806131df60646131d1888a613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061320960646131fb888b613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061323282613224858c61268e90919063ffffffff16565b61268e90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806132628588613c7e90919063ffffffff16565b905060006132798688613c7e90919063ffffffff16565b90506000613290828461268e90919063ffffffff16565b905082818395509550955050505093509350939050565b6000600d541480156132bb57506000600e54145b156132c5576132e8565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806132fc87612627565b95509550955095509550955061335a87600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133ef86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061348485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134d081613c94565b6134da8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516135379190614a3f565b60405180910390a3505050505050505050565b60008060008060008061355c87612627565b9550955095509550955095506135ba86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136e485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061373081613c94565b61373a8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516137979190614a3f565b60405180910390a3505050505050505050565b6000806000806000806137bc87612627565b95509550955095509550955061381a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138af85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fb81613c94565b6139058483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139629190614a3f565b60405180910390a3505050505050505050565b60008060008060008061398787612627565b9550955095509550955095506139e587600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ba485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bf081613c94565b613bfa8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c579190614a3f565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008183613c8c9190614bab565b905092915050565b6000613c9e6125d0565b90506000613cb58284613c7e90919063ffffffff16565b9050613d0981600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e3457613df083600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613e4e8260085461268e90919063ffffffff16565b600881905550613e698160095461261190919063ffffffff16565b6009819055505050565b600081359050613e8281614e22565b92915050565b600081519050613e9781614e22565b92915050565b600081359050613eac81614e39565b92915050565b600081359050613ec181614e50565b92915050565b600081359050613ed681614e67565b92915050565b600060208284031215613eee57600080fd5b6000613efc84828501613e73565b91505092915050565b600060208284031215613f1757600080fd5b6000613f2584828501613e88565b91505092915050565b600060208284031215613f4057600080fd5b6000613f4e84828501613e9d565b91505092915050565b60008060408385031215613f6a57600080fd5b6000613f7885828601613e73565b9250506020613f8985828601613e73565b9150509250929050565b600080600060608486031215613fa857600080fd5b6000613fb686828701613e73565b9350506020613fc786828701613e73565b9250506040613fd886828701613ec7565b9150509250925092565b60008060408385031215613ff557600080fd5b600061400385828601613e73565b925050602061401485828601613eb2565b9150509250929050565b6000806040838503121561403157600080fd5b600061403f85828601613e73565b925050602061405085828601613ec7565b9150509250929050565b60006020828403121561406c57600080fd5b600061407a84828501613eb2565b91505092915050565b60006020828403121561409557600080fd5b60006140a384828501613ec7565b91505092915050565b600080604083850312156140bf57600080fd5b60006140cd85828601613ec7565b92505060206140de85828601613eb2565b9150509250929050565b60006140f4838361410f565b60208301905092915050565b61410981614c4b565b82525050565b61411881614c39565b82525050565b61412781614c39565b82525050565b600061413882614adf565b6141428185614b02565b935061414d83614acf565b8060005b8381101561417e57815161416588826140e8565b975061417083614af5565b925050600181019050614151565b5085935050505092915050565b61419481614c5d565b82525050565b6141a381614ca0565b82525050565b6141b281614cc4565b82525050565b60006141c382614aea565b6141cd8185614b13565b93506141dd818560208601614cd6565b6141e681614e11565b840191505092915050565b60006141fe602383614b13565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614264602a83614b13565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b60006142ca602683614b13565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614330602283614b13565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614396601b83614b13565b91507f7465616d4665652073686f756c6420626520696e2031202d20323500000000006000830152602082019050919050565b60006143d6601b83614b13565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000614416603483614b13565b91507f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008301527f616e2031303030303030303030303030303065390000000000000000000000006020830152604082019050919050565b600061447c601f83614b13565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b60006144bc602883614b13565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614522602083614b13565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000614562602983614b13565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b60006145c8602583614b13565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061462e602483614b13565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614694601a83614b13565b91507f7461784665652073686f756c6420626520696e2031202d2032350000000000006000830152602082019050919050565b60006146d4602283614b13565b91507f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008301527f722e0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061473a602c83614b13565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b61479c81614c89565b82525050565b6147ab81614c93565b82525050565b60006020820190506147c6600083018461411e565b92915050565b60006020820190506147e16000830184614100565b92915050565b60006020820190506147fc600083018461418b565b92915050565b6000602082019050614817600083018461419a565b92915050565b6000602082019050818103600083015261483781846141b8565b905092915050565b60006020820190508181036000830152614858816141f1565b9050919050565b6000602082019050818103600083015261487881614257565b9050919050565b60006020820190508181036000830152614898816142bd565b9050919050565b600060208201905081810360008301526148b881614323565b9050919050565b600060208201905081810360008301526148d881614389565b9050919050565b600060208201905081810360008301526148f8816143c9565b9050919050565b6000602082019050818103600083015261491881614409565b9050919050565b600060208201905081810360008301526149388161446f565b9050919050565b60006020820190508181036000830152614958816144af565b9050919050565b6000602082019050818103600083015261497881614515565b9050919050565b6000602082019050818103600083015261499881614555565b9050919050565b600060208201905081810360008301526149b8816145bb565b9050919050565b600060208201905081810360008301526149d881614621565b9050919050565b600060208201905081810360008301526149f881614687565b9050919050565b60006020820190508181036000830152614a18816146c7565b9050919050565b60006020820190508181036000830152614a388161472d565b9050919050565b6000602082019050614a546000830184614793565b92915050565b600060a082019050614a6f6000830188614793565b614a7c60208301876141a9565b8181036040830152614a8e818661412d565b9050614a9d606083018561411e565b614aaa6080830184614793565b9695505050505050565b6000602082019050614ac960008301846147a2565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614b2f82614c89565b9150614b3a83614c89565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b6f57614b6e614d84565b5b828201905092915050565b6000614b8582614c89565b9150614b9083614c89565b925082614ba057614b9f614db3565b5b828204905092915050565b6000614bb682614c89565b9150614bc183614c89565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bfa57614bf9614d84565b5b828202905092915050565b6000614c1082614c89565b9150614c1b83614c89565b925082821015614c2e57614c2d614d84565b5b828203905092915050565b6000614c4482614c69565b9050919050565b6000614c5682614c69565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614cab82614cb2565b9050919050565b6000614cbd82614c69565b9050919050565b6000614ccf82614c89565b9050919050565b60005b83811015614cf4578082015181840152602081019050614cd9565b83811115614d03576000848401525b50505050565b60006002820490506001821680614d2157607f821691505b60208210811415614d3557614d34614de2565b5b50919050565b6000614d4682614c89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d7957614d78614d84565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614e2b81614c39565b8114614e3657600080fd5b50565b614e4281614c4b565b8114614e4d57600080fd5b50565b614e5981614c5d565b8114614e6457600080fd5b50565b614e7081614c89565b8114614e7b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c165223d53b366f230b9115028fa25dfaeaf5e3efda40f38d903304fa396ba0464736f6c6343000800003300000000000000000000000049118c846548985e8f280f28f50aeecd5647bf520000000000000000000000007818e0b4aae4550065a32ce42cba18b9fda5348f
Deployed Bytecode
0x6080604052600436106102135760003560e01c80635880b87311610118578063c0072488116100a0578063f2cc0c181161006f578063f2cc0c18146107e4578063f2fde38b1461080d578063f429389014610836578063f815a8421461084d578063f84354f1146108785761021a565b8063c007248814610718578063cba0e99614610741578063dd62ed3e1461077e578063e01af92c146107bb5761021a565b80638da5cb5b116100e75780638da5cb5b1461061f57806395d89b411461064a578063a457c2d714610675578063a9059cbb146106b2578063af9549e0146106ef5761021a565b80635880b873146105775780636ddd1713146105a057806370a08231146105cb578063715018a6146106085761021a565b80632d8381191161019b5780634144d9e41161016a5780634144d9e4146104905780634549b039146104bb57806349bd5a5e146104f857806351bc3c85146105235780635342acb41461053a5761021a565b80632d838119146103c2578063313ce567146103ff578063395093511461042a5780633bd5d173146104675761021a565b806318160ddd116101e257806318160ddd146102dd5780631bbae6e01461030857806323b872dd14610331578063286671621461036e5780632abe39ec146103975761021a565b806306fdde031461021f578063095ea7b31461024a57806313114a9d146102875780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108a1565b604051610241919061481d565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c919061401e565b610933565b60405161027e91906147e7565b60405180910390f35b34801561029357600080fd5b5061029c610951565b6040516102a99190614a3f565b60405180910390f35b3480156102be57600080fd5b506102c761095b565b6040516102d49190614802565b60405180910390f35b3480156102e957600080fd5b506102f261097f565b6040516102ff9190614a3f565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190614083565b610989565b005b34801561033d57600080fd5b5061035860048036038101906103539190613f93565b610a5c565b60405161036591906147e7565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190614083565b610b35565b005b3480156103a357600080fd5b506103ac610c0c565b6040516103b991906147cc565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190614083565b610c32565b6040516103f69190614a3f565b60405180910390f35b34801561040b57600080fd5b50610414610ca0565b6040516104219190614ab4565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c919061401e565b610cb7565b60405161045e91906147e7565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190614083565b610d6a565b005b34801561049c57600080fd5b506104a5610ee5565b6040516104b291906147cc565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906140ac565b610f0b565b6040516104ef9190614a3f565b60405180910390f35b34801561050457600080fd5b5061050d610f8f565b60405161051a91906147b1565b60405180910390f35b34801561052f57600080fd5b50610538610fb3565b005b34801561054657600080fd5b50610561600480360381019061055c9190613edc565b611048565b60405161056e91906147e7565b60405180910390f35b34801561058357600080fd5b5061059e60048036038101906105999190614083565b61109e565b005b3480156105ac57600080fd5b506105b5611175565b6040516105c291906147e7565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613edc565b611188565b6040516105ff9190614a3f565b60405180910390f35b34801561061457600080fd5b5061061d611273565b005b34801561062b57600080fd5b506106346112fb565b60405161064191906147b1565b60405180910390f35b34801561065657600080fd5b5061065f611324565b60405161066c919061481d565b60405180910390f35b34801561068157600080fd5b5061069c6004803603810190610697919061401e565b6113b6565b6040516106a991906147e7565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d4919061401e565b611483565b6040516106e691906147e7565b60405180910390f35b3480156106fb57600080fd5b5061071660048036038101906107119190613fe2565b6114a1565b005b34801561072457600080fd5b5061073f600480360381019061073a9190613f2e565b611578565b005b34801561074d57600080fd5b5061076860048036038101906107639190613edc565b611638565b60405161077591906147e7565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613f57565b61168e565b6040516107b29190614a3f565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd919061405a565b611715565b005b3480156107f057600080fd5b5061080b60048036038101906108069190613edc565b6117ae565b005b34801561081957600080fd5b50610834600480360381019061082f9190613edc565b611acc565b005b34801561084257600080fd5b5061084b611bc4565b005b34801561085957600080fd5b50610862611c51565b60405161086f9190614a3f565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613edc565b611c59565b005b6060600a80546108b090614d09565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614d09565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b5050505050905090565b6000610947610940612027565b848461202f565b6001905092915050565b6000600954905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b610991612027565b73ffffffffffffffffffffffffffffffffffffffff166109af6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc9061495f565b60405180910390fd5b69152d02c7e14af6800000811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a49906148ff565b60405180910390fd5b8060138190555050565b6000610a698484846121fa565b610b2a84610a75612027565b610b2585604051806060016040528060288152602001614e7f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adb612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b600190509392505050565b610b3d612027565b73ffffffffffffffffffffffffffffffffffffffff16610b5b6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba89061495f565b60405180910390fd5b60018110158015610bc3575060198111155b610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf9906148bf565b60405180910390fd5b80600e8190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600854821115610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c709061485f565b60405180910390fd5b6000610c836125d0565b9050610c9881846125fb90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610d60610cc4612027565b84610d5b8560036000610cd5612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b61202f565b6001905092915050565b6000610d74612027565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90614a1f565b60405180910390fd5b6000610e0e83612627565b50505050509050610e6781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ebf8160085461268e90919063ffffffff16565b600881905550610eda8360095461261190919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754831115610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f499061491f565b60405180910390fd5b81610f72576000610f6284612627565b5050505050905080915050610f89565b6000610f7d84612627565b50505050915050809150505b92915050565b7f000000000000000000000000800d0e7335b65b71ef8eb88d650dd8f5910d438481565b610fbb612027565b73ffffffffffffffffffffffffffffffffffffffff16610fd96112fb565b73ffffffffffffffffffffffffffffffffffffffff161461102f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110269061495f565b60405180910390fd5b600061103a30611188565b9050611045816126a4565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110a6612027565b73ffffffffffffffffffffffffffffffffffffffff166110c46112fb565b73ffffffffffffffffffffffffffffffffffffffff161461111a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111119061495f565b60405180910390fd5b6001811015801561112c575060198111155b61116b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611162906149df565b60405180910390fd5b80600d8190555050565b601260159054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561122357600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061126e565b61126b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c32565b90505b919050565b61127b612027565b73ffffffffffffffffffffffffffffffffffffffff166112996112fb565b73ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e69061495f565b60405180910390fd5b6112f96000612998565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461133390614d09565b80601f016020809104026020016040519081016040528092919081815260200182805461135f90614d09565b80156113ac5780601f10611381576101008083540402835291602001916113ac565b820191906000526020600020905b81548152906001019060200180831161138f57829003601f168201915b5050505050905090565b60006114796113c3612027565b8461147485604051806060016040528060258152602001614ea760259139600360006113ed612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b6001905092915050565b6000611497611490612027565b84846121fa565b6001905092915050565b6114a9612027565b73ffffffffffffffffffffffffffffffffffffffff166114c76112fb565b73ffffffffffffffffffffffffffffffffffffffff161461151d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115149061495f565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611580612027565b73ffffffffffffffffffffffffffffffffffffffff1661159e6112fb565b73ffffffffffffffffffffffffffffffffffffffff16146115f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb9061495f565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61171d612027565b73ffffffffffffffffffffffffffffffffffffffff1661173b6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117889061495f565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6117b6612027565b73ffffffffffffffffffffffffffffffffffffffff166117d46112fb565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118219061495f565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a4906149ff565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611931906148df565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a0e576119ca600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c32565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4612027565b73ffffffffffffffffffffffffffffffffffffffff16611af26112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f9061495f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf9061487f565b60405180910390fd5b611bc181612998565b50565b611bcc612027565b73ffffffffffffffffffffffffffffffffffffffff16611bea6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c379061495f565b60405180910390fd5b6000479050611c4e81612a5c565b50565b600047905090565b611c61612027565b73ffffffffffffffffffffffffffffffffffffffff16611c7f6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc9061495f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d58906148df565b60405180910390fd5b60005b600680549050811015612023578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611dc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156120105760066001600680549050611e1d9190614c05565b81548110611e54577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611eb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611fd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612023565b808061201b90614d3b565b915050611d64565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561209f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612096906149bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121069061489f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121ed9190614a3f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561226a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122619061499f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d19061483f565b60405180910390fd5b6000811161231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123149061497f565b60405180910390fd5b6123256112fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561239357506123636112fb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123de576013548111156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d49061493f565b60405180910390fd5b5b60006123e930611188565b905060135481106123fa5760135490505b60006014548210159050601260149054906101000a900460ff1615801561242d5750601260159054906101000a900460ff165b80156124365750805b801561248e57507f000000000000000000000000800d0e7335b65b71ef8eb88d650dd8f5910d438473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124b65761249c826126a4565b600047905060008111156124b4576124b347612a5c565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061255d5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561256757600090505b61257386868684612b57565b505050505050565b60008383111582906125c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ba919061481d565b60405180910390fd5b5082840390509392505050565b60008060006125dd612e68565b915091506125f481836125fb90919063ffffffff16565b9250505090565b600081836126099190614b7a565b905092915050565b6000818361261f9190614b24565b905092915050565b60008060008060008060008060006126448a600d54600e546131b3565b92509250925060006126546125d0565b905060008060006126668e8786613249565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000818361269c9190614c05565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612702577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156127305781602001602082028036833780820191505090505b509050308160008151811061276e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561280e57600080fd5b505afa158015612822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128469190613f05565b81600181518110612880577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128e5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461202f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612947959493929190614a5a565b600060405180830381600087803b15801561296157600080fd5b505af1158015612975573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612aac6002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612ad7573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612b286002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612b53573d6000803e3d6000fd5b5050565b80612b6557612b646132a7565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c085750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c1d57612c188484846132ea565b612e54565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cc05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cd557612cd084848461354a565b612e53565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d795750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d8e57612d898484846137aa565b612e52565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e305750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e4557612e40848484613975565b612e51565b612e508484846137aa565b5b5b5b5b80612e6257612e61613c6a565b5b50505050565b600080600060085490506000600754905060005b60068054905081101561317657826001600060068481548110612ec8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612fdc5750816002600060068481548110612f74577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ff357600854600754945094505050506131af565b6130a96001600060068481548110613034577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461268e90919063ffffffff16565b925061316160026000600684815481106130ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361268e90919063ffffffff16565b9150808061316e90614d3b565b915050612e7c565b5061318e6007546008546125fb90919063ffffffff16565b8210156131a6576008546007549350935050506131af565b81819350935050505b9091565b6000806000806131df60646131d1888a613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061320960646131fb888b613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061323282613224858c61268e90919063ffffffff16565b61268e90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806132628588613c7e90919063ffffffff16565b905060006132798688613c7e90919063ffffffff16565b90506000613290828461268e90919063ffffffff16565b905082818395509550955050505093509350939050565b6000600d541480156132bb57506000600e54145b156132c5576132e8565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806132fc87612627565b95509550955095509550955061335a87600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133ef86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061348485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134d081613c94565b6134da8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516135379190614a3f565b60405180910390a3505050505050505050565b60008060008060008061355c87612627565b9550955095509550955095506135ba86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136e485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061373081613c94565b61373a8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516137979190614a3f565b60405180910390a3505050505050505050565b6000806000806000806137bc87612627565b95509550955095509550955061381a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138af85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fb81613c94565b6139058483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139629190614a3f565b60405180910390a3505050505050505050565b60008060008060008061398787612627565b9550955095509550955095506139e587600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ba485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bf081613c94565b613bfa8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c579190614a3f565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008183613c8c9190614bab565b905092915050565b6000613c9e6125d0565b90506000613cb58284613c7e90919063ffffffff16565b9050613d0981600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e3457613df083600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613e4e8260085461268e90919063ffffffff16565b600881905550613e698160095461261190919063ffffffff16565b6009819055505050565b600081359050613e8281614e22565b92915050565b600081519050613e9781614e22565b92915050565b600081359050613eac81614e39565b92915050565b600081359050613ec181614e50565b92915050565b600081359050613ed681614e67565b92915050565b600060208284031215613eee57600080fd5b6000613efc84828501613e73565b91505092915050565b600060208284031215613f1757600080fd5b6000613f2584828501613e88565b91505092915050565b600060208284031215613f4057600080fd5b6000613f4e84828501613e9d565b91505092915050565b60008060408385031215613f6a57600080fd5b6000613f7885828601613e73565b9250506020613f8985828601613e73565b9150509250929050565b600080600060608486031215613fa857600080fd5b6000613fb686828701613e73565b9350506020613fc786828701613e73565b9250506040613fd886828701613ec7565b9150509250925092565b60008060408385031215613ff557600080fd5b600061400385828601613e73565b925050602061401485828601613eb2565b9150509250929050565b6000806040838503121561403157600080fd5b600061403f85828601613e73565b925050602061405085828601613ec7565b9150509250929050565b60006020828403121561406c57600080fd5b600061407a84828501613eb2565b91505092915050565b60006020828403121561409557600080fd5b60006140a384828501613ec7565b91505092915050565b600080604083850312156140bf57600080fd5b60006140cd85828601613ec7565b92505060206140de85828601613eb2565b9150509250929050565b60006140f4838361410f565b60208301905092915050565b61410981614c4b565b82525050565b61411881614c39565b82525050565b61412781614c39565b82525050565b600061413882614adf565b6141428185614b02565b935061414d83614acf565b8060005b8381101561417e57815161416588826140e8565b975061417083614af5565b925050600181019050614151565b5085935050505092915050565b61419481614c5d565b82525050565b6141a381614ca0565b82525050565b6141b281614cc4565b82525050565b60006141c382614aea565b6141cd8185614b13565b93506141dd818560208601614cd6565b6141e681614e11565b840191505092915050565b60006141fe602383614b13565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614264602a83614b13565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b60006142ca602683614b13565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614330602283614b13565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614396601b83614b13565b91507f7465616d4665652073686f756c6420626520696e2031202d20323500000000006000830152602082019050919050565b60006143d6601b83614b13565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000614416603483614b13565b91507f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008301527f616e2031303030303030303030303030303065390000000000000000000000006020830152604082019050919050565b600061447c601f83614b13565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b60006144bc602883614b13565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614522602083614b13565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000614562602983614b13565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b60006145c8602583614b13565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061462e602483614b13565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614694601a83614b13565b91507f7461784665652073686f756c6420626520696e2031202d2032350000000000006000830152602082019050919050565b60006146d4602283614b13565b91507f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008301527f722e0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061473a602c83614b13565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b61479c81614c89565b82525050565b6147ab81614c93565b82525050565b60006020820190506147c6600083018461411e565b92915050565b60006020820190506147e16000830184614100565b92915050565b60006020820190506147fc600083018461418b565b92915050565b6000602082019050614817600083018461419a565b92915050565b6000602082019050818103600083015261483781846141b8565b905092915050565b60006020820190508181036000830152614858816141f1565b9050919050565b6000602082019050818103600083015261487881614257565b9050919050565b60006020820190508181036000830152614898816142bd565b9050919050565b600060208201905081810360008301526148b881614323565b9050919050565b600060208201905081810360008301526148d881614389565b9050919050565b600060208201905081810360008301526148f8816143c9565b9050919050565b6000602082019050818103600083015261491881614409565b9050919050565b600060208201905081810360008301526149388161446f565b9050919050565b60006020820190508181036000830152614958816144af565b9050919050565b6000602082019050818103600083015261497881614515565b9050919050565b6000602082019050818103600083015261499881614555565b9050919050565b600060208201905081810360008301526149b8816145bb565b9050919050565b600060208201905081810360008301526149d881614621565b9050919050565b600060208201905081810360008301526149f881614687565b9050919050565b60006020820190508181036000830152614a18816146c7565b9050919050565b60006020820190508181036000830152614a388161472d565b9050919050565b6000602082019050614a546000830184614793565b92915050565b600060a082019050614a6f6000830188614793565b614a7c60208301876141a9565b8181036040830152614a8e818661412d565b9050614a9d606083018561411e565b614aaa6080830184614793565b9695505050505050565b6000602082019050614ac960008301846147a2565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614b2f82614c89565b9150614b3a83614c89565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b6f57614b6e614d84565b5b828201905092915050565b6000614b8582614c89565b9150614b9083614c89565b925082614ba057614b9f614db3565b5b828204905092915050565b6000614bb682614c89565b9150614bc183614c89565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bfa57614bf9614d84565b5b828202905092915050565b6000614c1082614c89565b9150614c1b83614c89565b925082821015614c2e57614c2d614d84565b5b828203905092915050565b6000614c4482614c69565b9050919050565b6000614c5682614c69565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614cab82614cb2565b9050919050565b6000614cbd82614c69565b9050919050565b6000614ccf82614c89565b9050919050565b60005b83811015614cf4578082015181840152602081019050614cd9565b83811115614d03576000848401525b50505050565b60006002820490506001821680614d2157607f821691505b60208210811415614d3557614d34614de2565b5b50919050565b6000614d4682614c89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d7957614d78614d84565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614e2b81614c39565b8114614e3657600080fd5b50565b614e4281614c4b565b8114614e4d57600080fd5b50565b614e5981614c5d565b8114614e6457600080fd5b50565b614e7081614c89565b8114614e7b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c165223d53b366f230b9115028fa25dfaeaf5e3efda40f38d903304fa396ba0464736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000049118c846548985e8f280f28f50aeecd5647bf520000000000000000000000007818e0b4aae4550065a32ce42cba18b9fda5348f
-----Decoded View---------------
Arg [0] : VSCWalletAddress (address): 0x49118C846548985E8f280f28f50AEeCD5647BF52
Arg [1] : marketingWalletAddress (address): 0x7818e0b4aae4550065a32ce42cBA18B9fDa5348f
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000049118c846548985e8f280f28f50aeecd5647bf52
Arg [1] : 0000000000000000000000007818e0b4aae4550065a32ce42cba18b9fda5348f
Deployed Bytecode Sourcemap
31179:18835:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33899:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34903:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36251:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32307:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34212:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49774:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35088:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49421:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32197:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37259:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34109:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35429:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36358:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32248:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36775:472;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32369:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42445:168;;;;;;;;;;;;;:::i;:::-;;38950:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49228:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32450:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34327:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12852:103;;;;;;;;;;;;;:::i;:::-;;12201:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34002:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35671:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34549:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36094:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49621:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35964:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34740:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42805:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37540:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13110:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42625:168;;;;;;;;;;;;;:::i;:::-;;49098:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38027:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33899:91;33936:13;33973:5;33966:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33899:91;:::o;34903:173::-;34978:4;34999:39;35008:12;:10;:12::i;:::-;35022:7;35031:6;34999:8;:39::i;:::-;35060:4;35053:11;;34903:173;;;;:::o;36251:95::-;36293:7;36324:10;;36317:17;;36251:95;:::o;32307:51::-;;;:::o;34212:103::-;34265:7;34296;;34289:14;;34212:103;:::o;49774:233::-;12432:12;:10;:12::i;:::-;12421:23;;:7;:5;:7::i;:::-;:23;;;12413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49879:17:::1;49864:11;:32;;49856:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;49984:11;49969:12;:26;;;;49774:233:::0;:::o;35088:329::-;35186:4;35207:36;35217:6;35225:9;35236:6;35207:9;:36::i;:::-;35258:121;35267:6;35275:12;:10;:12::i;:::-;35289:89;35327:6;35289:89;;;;;;;;;;;;;;;;;:11;:19;35301:6;35289:19;;;;;;;;;;;;;;;:33;35309:12;:10;:12::i;:::-;35289:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;35258:8;:121::i;:::-;35401:4;35394:11;;35088:329;;;;;:::o;49421:188::-;12432:12;:10;:12::i;:::-;12421:23;;:7;:5;:7::i;:::-;:23;;;12413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49514:1:::1;49503:7;:12;;:29;;;;;49530:2;49519:7;:13;;49503:29;49495:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;49590:7;49579:8;:18;;;;49421:188:::0;:::o;32197:40::-;;;;;;;;;;;;;:::o;37259:269::-;37325:7;37368;;37357;:18;;37349:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;37437:19;37460:10;:8;:10::i;:::-;37437:33;;37492:24;37504:11;37492:7;:11;;:24;;;;:::i;:::-;37485:31;;;37259:269;;;:::o;34109:91::-;34150:5;34179:9;;;;;;;;;;;34172:16;;34109:91;:::o;35429:230::-;35517:4;35538:83;35547:12;:10;:12::i;:::-;35561:7;35570:50;35609:10;35570:11;:25;35582:12;:10;:12::i;:::-;35570:25;;;;;;;;;;;;;;;:34;35596:7;35570:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;35538:8;:83::i;:::-;35643:4;35636:11;;35429:230;;;;:::o;36358:405::-;36414:14;36431:12;:10;:12::i;:::-;36414:29;;36467:11;:19;36479:6;36467:19;;;;;;;;;;;;;;;;;;;;;;;;;36466:20;36458:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;36551:15;36575:19;36586:7;36575:10;:19::i;:::-;36550:44;;;;;;;36627:28;36647:7;36627;:15;36635:6;36627:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;36609:7;:15;36617:6;36609:15;;;;;;;;;;;;;;;:46;;;;36680:20;36692:7;36680;;:11;;:20;;;;:::i;:::-;36670:7;:30;;;;36728:23;36743:7;36728:10;;:14;;:23;;;;:::i;:::-;36715:10;:36;;;;36358:405;;;:::o;32248:46::-;;;;;;;;;;;;;:::o;36775:472::-;36865:7;36908;;36897;:18;;36889:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;36971:17;36966:270;;37010:15;37034:19;37045:7;37034:10;:19::i;:::-;37009:44;;;;;;;37079:7;37072:14;;;;;36966:270;37129:23;37160:19;37171:7;37160:10;:19::i;:::-;37127:52;;;;;;;37205:15;37198:22;;;36775:472;;;;;:::o;32369:38::-;;;:::o;42445:168::-;12432:12;:10;:12::i;:::-;12421:23;;:7;:5;:7::i;:::-;:23;;;12413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42503:23:::1;42529:24;42547:4;42529:9;:24::i;:::-;42503:50;;42568:33;42585:15;42568:16;:33::i;:::-;12492:1;42445:168::o:0;38950:131::-;39014:4;39042:18;:27;39061:7;39042:27;;;;;;;;;;;;;;;;;;;;;;;;;39035:34;;38950:131;;;:::o;49228:181::-;12432:12;:10;:12::i;:::-;12421:23;;:7;:5;:7::i;:::-;:23;;;12413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49318:1:::1;49308:6;:11;;:27;;;;;49333:2;49323:6;:12;;49308:27;49300:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;49391:6;49381:7;:16;;;;49228:181:::0;:::o;32450:30::-;;;;;;;;;;;;;:::o;34327:210::-;34393:7;34421:11;:20;34433:7;34421:20;;;;;;;;;;;;;;;;;;;;;;;;;34417:49;;;34450:7;:16;34458:7;34450:16;;;;;;;;;;;;;;;;34443:23;;;;34417:49;34488:37;34508:7;:16;34516:7;34508:16;;;;;;;;;;;;;;;;34488:19;:37::i;:::-;34481:44;;34327:210;;;;:::o;12852:103::-;12432:12;:10;:12::i;:::-;12421:23;;:7;:5;:7::i;:::-;:23;;;12413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12917:30:::1;12944:1;12917:18;:30::i;:::-;12852:103::o:0;12201:87::-;12247:7;12274:6;;;;;;;;;;;12267:13;;12201:87;:::o;34002:95::-;34041:13;34078:7;34071:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34002:95;:::o;35671:281::-;35764:4;35785:129;35794:12;:10;:12::i;:::-;35808:7;35817:96;35856:15;35817:96;;;;;;;;;;;;;;;;;:11;:25;35829:12;:10;:12::i;:::-;35817:25;;;;;;;;;;;;;;;:34;35843:7;35817:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;35785:8;:129::i;:::-;35936:4;35929:11;;35671:281;;;;:::o;34549:179::-;34627:4;34648:42;34658:12;:10;:12::i;:::-;34672:9;34683:6;34648:9;:42::i;:::-;34712:4;34705:11;;34549:179;;;;:::o;36094:145::-;12432:12;:10;:12::i;:::-;12421:23;;:7;:5;:7::i;:::-;:23;;;12413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36219:8:::1;36189:18;:27;36208:7;36189:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;36094:145:::0;;:::o;49621:141::-;12432:12;:10;:12::i;:::-;12421:23;;:7;:5;:7::i;:::-;:23;;;12413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49734:16:::1;49714:17;;:36;;;;;;;;;;;;;;;;;;49621:141:::0;:::o;35964:118::-;36022:4;36050:11;:20;36062:7;36050:20;;;;;;;;;;;;;;;;;;;;;;;;;36043:27;;35964:118;;;:::o;34740:151::-;34821:7;34852:11;:18;34864:5;34852:18;;;;;;;;;;;;;;;:27;34871:7;34852:27;;;;;;;;;;;;;;;;34845:34;;34740:151;;;;:::o;42805:106::-;12432:12;:10;:12::i;:::-;12421:23;;:7;:5;:7::i;:::-;:23;;;12413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42892:7:::1;42878:11;;:21;;;;;;;;;;;;;;;;;;42805:106:::0;:::o;37540:475::-;12432:12;:10;:12::i;:::-;12421:23;;:7;:5;:7::i;:::-;:23;;;12413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37636:42:::1;37625:53;;:7;:53;;;;37617:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;37741:11;:20;37753:7;37741:20;;;;;;;;;;;;;;;;;;;;;;;;;37740:21;37732:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;37830:1;37811:7;:16;37819:7;37811:16;;;;;;;;;;;;;;;;:20;37808:116;;;37871:37;37891:7;:16;37899:7;37891:16;;;;;;;;;;;;;;;;37871:19;:37::i;:::-;37852:7;:16;37860:7;37852:16;;;;;;;;;;;;;;;:56;;;;37808:116;37961:4;37938:11;:20;37950:7;37938:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;37980:9;37995:7;37980:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37540:475:::0;:::o;13110:201::-;12432:12;:10;:12::i;:::-;12421:23;;:7;:5;:7::i;:::-;:23;;;12413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13219:1:::1;13199:22;;:8;:22;;;;13191:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13275:28;13294:8;13275:18;:28::i;:::-;13110:201:::0;:::o;42625:168::-;12432:12;:10;:12::i;:::-;12421:23;;:7;:5;:7::i;:::-;:23;;;12413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42683:26:::1;42712:21;42683:50;;42748:33;42762:18;42748:13;:33::i;:::-;12492:1;42625:168::o:0;49098:118::-;49144:15;49183:21;49176:28;;49098:118;:::o;38027:522::-;12432:12;:10;:12::i;:::-;12421:23;;:7;:5;:7::i;:::-;:23;;;12413:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38112:11:::1;:20;38124:7;38112:20;;;;;;;;;;;;;;;;;;;;;;;;;38104:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;38184:9;38179:359;38203:9;:16;;;;38199:1;:20;38179:359;;;38265:7;38249:23;;:9;38259:1;38249:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;38245:278;;;38312:9;38341:1;38322:9;:16;;;;:20;;;;:::i;:::-;38312:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38297:9;38307:1;38297:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;38385:1;38366:7;:16;38374:7;38366:16;;;;;;;;;;;;;;;:20;;;;38432:5;38409:11;:20;38421:7;38409:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;38460:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38498:5;;38245:278;38221:3;;;;;:::i;:::-;;;;38179:359;;;;38027:522:::0;:::o;10925:98::-;10978:7;11005:10;10998:17;;10925:98;:::o;39093:357::-;39207:1;39190:19;;:5;:19;;;;39182:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39292:1;39273:21;;:7;:21;;;;39265:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39380:6;39350:11;:18;39362:5;39350:18;;;;;;;;;;;;;;;:27;39369:7;39350:27;;;;;;;;;;;;;;;:36;;;;39422:7;39406:32;;39415:5;39406:32;;;39431:6;39406:32;;;;;;:::i;:::-;;;;;;;;39093:357;;;:::o;39462:1964::-;39581:1;39563:20;;:6;:20;;;;39555:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;39669:1;39648:23;;:9;:23;;;;39640:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;39743:1;39734:6;:10;39726:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;39820:7;:5;:7::i;:::-;39810:17;;:6;:17;;;;:41;;;;;39844:7;:5;:7::i;:::-;39831:20;;:9;:20;;;;39810:41;39807:138;;;39888:12;;39878:6;:22;;39870:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;39807:138;40228:28;40259:24;40277:4;40259:9;:24::i;:::-;40228:55;;40327:12;;40303:20;:36;40300:124;;40396:12;;40373:35;;40300:124;40440:24;40491:29;;40467:20;:53;;40440:80;;40540:6;;;;;;;;;;;40539:7;:22;;;;;40550:11;;;;;;;;;;;40539:22;:45;;;;;40565:19;40539:45;:72;;;;;40598:13;40588:23;;:6;:23;;;;40539:72;40535:436;;;40722:38;40739:20;40722:16;:38::i;:::-;40781:26;40810:21;40781:50;;40874:1;40853:18;:22;40850:106;;;40900:36;40914:21;40900:13;:36::i;:::-;40850:106;40535:436;;41052:12;41067:4;41052:19;;41179:18;:26;41198:6;41179:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;41209:18;:29;41228:9;41209:29;;;;;;;;;;;;;;;;;;;;;;;;;41179:59;41176:113;;;41268:5;41258:15;;41176:113;41367:47;41382:6;41389:9;41399:6;41406:7;41367:14;:47::i;:::-;39462:1964;;;;;;:::o;5464:240::-;5584:7;5642:1;5637;:6;;5645:12;5629:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5684:1;5680;:5;5673:12;;5464:240;;;;;:::o;48084:175::-;48125:7;48150:15;48167;48186:19;:17;:19::i;:::-;48149:56;;;;48227:20;48239:7;48227;:11;;:20;;;;:::i;:::-;48220:27;;;;48084:175;:::o;4322:98::-;4380:7;4411:1;4407;:5;;;;:::i;:::-;4400:12;;4322:98;;;;:::o;3185:::-;3243:7;3274:1;3270;:5;;;;:::i;:::-;3263:12;;3185:98;;;;:::o;46842:481::-;46901:7;46910;46919;46928;46937;46946;46971:23;46996:12;47010:13;47027:39;47039:7;47048;;47057:8;;47027:11;:39::i;:::-;46970:96;;;;;;47081:19;47104:10;:8;:10::i;:::-;47081:33;;47130:15;47147:23;47172:12;47188:39;47200:7;47209:4;47215:11;47188;:39::i;:::-;47129:98;;;;;;47250:7;47259:15;47276:4;47282:15;47299:4;47305:5;47242:69;;;;;;;;;;;;;;;;;;;46842:481;;;;;;;:::o;3566:98::-;3624:7;3655:1;3651;:5;;;;:::i;:::-;3644:12;;3566:98;;;;:::o;41438:656::-;32868:4;32859:6;;:13;;;;;;;;;;;;;;;;;;41583:21:::1;41621:1;41607:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41583:40;;41656:4;41638;41643:1;41638:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;41686:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41676:4;41681:1;41676:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;41725:62;41742:4;41757:15;41775:11;41725:8;:62::i;:::-;41834:15;:66;;;41919:11;41949:1;41997:4;42028;42052:15;41834:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32887:1;32912:5:::0;32903:6;;:14;;;;;;;;;;;;;;;;;;41438:656;:::o;13471:191::-;13545:16;13564:6;;;;;;;;;;;13545:25;;13590:8;13581:6;;:17;;;;;;;;;;;;;;;;;;13645:8;13614:40;;13635:8;13614:40;;;;;;;;;;;;13471:191;;:::o;42106:177::-;42168:17;;;;;;;;;;;:26;;:41;42195:13;42206:1;42195:6;:10;;:13;;;;:::i;:::-;42168:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42224:23;;;;;;;;;;;:32;;:47;42257:13;42268:1;42257:6;:10;;:13;;;;:::i;:::-;42224:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42106:177;:::o;42923:883::-;43039:7;43035:44;;43065:14;:12;:14::i;:::-;43035:44;43100:11;:19;43112:6;43100:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;43124:11;:22;43136:9;43124:22;;;;;;;;;;;;;;;;;;;;;;;;;43123:23;43100:46;43096:637;;;43167:48;43189:6;43197:9;43208:6;43167:21;:48::i;:::-;43096:637;;;43242:11;:19;43254:6;43242:19;;;;;;;;;;;;;;;;;;;;;;;;;43241:20;:46;;;;;43265:11;:22;43277:9;43265:22;;;;;;;;;;;;;;;;;;;;;;;;;43241:46;43237:496;;;43308:46;43328:6;43336:9;43347:6;43308:19;:46::i;:::-;43237:496;;;43381:11;:19;43393:6;43381:19;;;;;;;;;;;;;;;;;;;;;;;;;43380:20;:47;;;;;43405:11;:22;43417:9;43405:22;;;;;;;;;;;;;;;;;;;;;;;;;43404:23;43380:47;43376:357;;;43448:44;43466:6;43474:9;43485:6;43448:17;:44::i;:::-;43376:357;;;43518:11;:19;43530:6;43518:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;43541:11;:22;43553:9;43541:22;;;;;;;;;;;;;;;;;;;;;;;;;43518:45;43514:219;;;43584:48;43606:6;43614:9;43625:6;43584:21;:48::i;:::-;43514:219;;;43673:44;43691:6;43699:9;43710:6;43673:17;:44::i;:::-;43514:219;43376:357;43237:496;43096:637;43753:7;43749:45;;43779:15;:13;:15::i;:::-;43749:45;42923:883;;;;:::o;48271:595::-;48321:7;48330;48354:15;48372:7;;48354:25;;48394:15;48412:7;;48394:25;;48439:9;48434:305;48458:9;:16;;;;48454:1;:20;48434:305;;;48528:7;48504;:21;48512:9;48522:1;48512:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48504:21;;;;;;;;;;;;;;;;:31;:66;;;;48563:7;48539;:21;48547:9;48557:1;48547:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48539:21;;;;;;;;;;;;;;;;:31;48504:66;48500:97;;;48580:7;;48589;;48572:25;;;;;;;;;48500:97;48626:34;48638:7;:21;48646:9;48656:1;48646:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48638:21;;;;;;;;;;;;;;;;48626:7;:11;;:34;;;;:::i;:::-;48616:44;;48689:34;48701:7;:21;48709:9;48719:1;48709:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48701:21;;;;;;;;;;;;;;;;48689:7;:11;;:34;;;;:::i;:::-;48679:44;;48476:3;;;;;:::i;:::-;;;;48434:305;;;;48767:20;48779:7;;48767;;:11;;:20;;;;:::i;:::-;48757:7;:30;48753:61;;;48797:7;;48806;;48789:25;;;;;;;;48753:61;48837:7;48846;48829:25;;;;;;48271:595;;;:::o;47335:371::-;47428:7;47437;47446;47470:12;47485:28;47509:3;47485:19;47497:6;47485:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;47470:43;;47528:13;47544:29;47569:3;47544:20;47556:7;47544;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;47528:45;;47588:23;47614:28;47636:5;47614:17;47626:4;47614:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;47588:54;;47665:15;47682:4;47688:5;47657:37;;;;;;;;;47335:371;;;;;;;:::o;47718:354::-;47813:7;47822;47831;47855:15;47873:24;47885:11;47873:7;:11;;:24;;;;:::i;:::-;47855:42;;47912:12;47927:21;47936:11;47927:4;:8;;:21;;;;:::i;:::-;47912:36;;47963:23;47989:17;48001:4;47989:7;:11;;:17;;;;:::i;:::-;47963:43;;48029:7;48038:15;48055:4;48021:39;;;;;;;;;47718:354;;;;;;;:::o;38561:238::-;38622:1;38611:7;;:12;:29;;;;;38639:1;38627:8;;:13;38611:29;38608:41;;;38642:7;;38608:41;38683:7;;38665:15;:25;;;;38724:8;;38705:16;:27;;;;38759:1;38749:7;:11;;;;38786:1;38775:8;:12;;;;38561:238;:::o;44949:580::-;45056:15;45073:23;45098:12;45112:23;45137:12;45151:13;45168:19;45179:7;45168:10;:19::i;:::-;45055:132;;;;;;;;;;;;45220:28;45240:7;45220;:15;45228:6;45220:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45202:7;:15;45210:6;45202:15;;;;;;;;;;;;;;;:46;;;;45281:28;45301:7;45281;:15;45289:6;45281:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45263:7;:15;45271:6;45263:15;;;;;;;;;;;;;;;:46;;;;45345:39;45368:15;45345:7;:18;45353:9;45345:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45324:7;:18;45332:9;45324:18;;;;;;;;;;;;;;;:60;;;;45399:16;45409:5;45399:9;:16::i;:::-;45430:23;45442:4;45448;45430:11;:23::i;:::-;45490:9;45473:44;;45482:6;45473:44;;;45501:15;45473:44;;;;;;:::i;:::-;;;;;;;;44949:580;;;;;;;;;:::o;44345:592::-;44450:15;44467:23;44492:12;44506:23;44531:12;44545:13;44562:19;44573:7;44562:10;:19::i;:::-;44449:132;;;;;;;;;;;;44614:28;44634:7;44614;:15;44622:6;44614:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44596:7;:15;44604:6;44596:15;;;;;;;;;;;;;;;:46;;;;44678:39;44701:15;44678:7;:18;44686:9;44678:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44657:7;:18;44665:9;44657:18;;;;;;;;;;;;;;;:60;;;;44753:39;44776:15;44753:7;:18;44761:9;44753:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44732:7;:18;44740:9;44732:18;;;;;;;;;;;;;;;:60;;;;44807:16;44817:5;44807:9;:16::i;:::-;44838:23;44850:4;44856;44838:11;:23::i;:::-;44898:9;44881:44;;44890:6;44881:44;;;44909:15;44881:44;;;;;;:::i;:::-;;;;;;;;44345:592;;;;;;;;;:::o;43818:515::-;43921:15;43938:23;43963:12;43977:23;44002:12;44016:13;44033:19;44044:7;44033:10;:19::i;:::-;43920:132;;;;;;;;;;;;44085:28;44105:7;44085;:15;44093:6;44085:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44067:7;:15;44075:6;44067:15;;;;;;;;;;;;;;;:46;;;;44149:39;44172:15;44149:7;:18;44157:9;44149:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44128:7;:18;44136:9;44128:18;;;;;;;;;;;;;;;:60;;;;44203:16;44213:5;44203:9;:16::i;:::-;44234:23;44246:4;44252;44234:11;:23::i;:::-;44294:9;44277:44;;44286:6;44277:44;;;44305:15;44277:44;;;;;;:::i;:::-;;;;;;;;43818:515;;;;;;;;;:::o;45541:655::-;45648:15;45665:23;45690:12;45704:23;45729:12;45743:13;45760:19;45771:7;45760:10;:19::i;:::-;45647:132;;;;;;;;;;;;45812:28;45832:7;45812;:15;45820:6;45812:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45794:7;:15;45802:6;45794:15;;;;;;;;;;;;;;;:46;;;;45873:28;45893:7;45873;:15;45881:6;45873:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45855:7;:15;45863:6;45855:15;;;;;;;;;;;;;;;:46;;;;45937:39;45960:15;45937:7;:18;45945:9;45937:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45916:7;:18;45924:9;45916:18;;;;;;;;;;;;;;;:60;;;;46012:39;46035:15;46012:7;:18;46020:9;46012:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45991:7;:18;45999:9;45991:18;;;;;;;;;;;;;;;:60;;;;46066:16;46076:5;46066:9;:16::i;:::-;46097:23;46109:4;46115;46097:11;:23::i;:::-;46157:9;46140:44;;46149:6;46140:44;;;46168:15;46140:44;;;;;;:::i;:::-;;;;;;;;45541:655;;;;;;;;;:::o;38811:127::-;38869:15;;38859:7;:25;;;;38910:16;;38899:8;:27;;;;38811:127::o;3923:98::-;3981:7;4012:1;4008;:5;;;;:::i;:::-;4001:12;;3923:98;;;;:::o;46208:349::-;46265:19;46288:10;:8;:10::i;:::-;46265:33;;46313:13;46329:22;46339:11;46329:5;:9;;:22;;;;:::i;:::-;46313:38;;46391:33;46418:5;46391:7;:22;46407:4;46391:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46366:7;:22;46382:4;46366:22;;;;;;;;;;;;;;;:58;;;;46442:11;:26;46462:4;46442:26;;;;;;;;;;;;;;;;;;;;;;;;;46439:106;;;46512:33;46539:5;46512:7;:22;46528:4;46512:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46487:7;:22;46503:4;46487:22;;;;;;;;;;;;;;;:58;;;;46439:106;46208:349;;;:::o;46569:159::-;46651:17;46663:4;46651:7;;:11;;:17;;;;:::i;:::-;46641:7;:27;;;;46696:20;46711:4;46696:10;;:14;;:20;;;;:::i;:::-;46683:10;:33;;;;46569:159;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:133::-;;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;511:84;;;;:::o;601:139::-;;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;653:87;;;;:::o;746:262::-;;854:2;842:9;833:7;829:23;825:32;822:2;;;870:1;867;860:12;822:2;913:1;938:53;983:7;974:6;963:9;959:22;938:53;:::i;:::-;928:63;;884:117;812:196;;;;:::o;1014:284::-;;1133:2;1121:9;1112:7;1108:23;1104:32;1101:2;;;1149:1;1146;1139:12;1101:2;1192:1;1217:64;1273:7;1264:6;1253:9;1249:22;1217:64;:::i;:::-;1207:74;;1163:128;1091:207;;;;:::o;1304:278::-;;1420:2;1408:9;1399:7;1395:23;1391:32;1388:2;;;1436:1;1433;1426:12;1388:2;1479:1;1504:61;1557:7;1548:6;1537:9;1533:22;1504:61;:::i;:::-;1494:71;;1450:125;1378:204;;;;:::o;1588:407::-;;;1713:2;1701:9;1692:7;1688:23;1684:32;1681:2;;;1729:1;1726;1719:12;1681:2;1772:1;1797:53;1842:7;1833:6;1822:9;1818:22;1797:53;:::i;:::-;1787:63;;1743:117;1899:2;1925:53;1970:7;1961:6;1950:9;1946:22;1925:53;:::i;:::-;1915:63;;1870:118;1671:324;;;;;:::o;2001:552::-;;;;2143:2;2131:9;2122:7;2118:23;2114:32;2111:2;;;2159:1;2156;2149:12;2111:2;2202:1;2227:53;2272:7;2263:6;2252:9;2248:22;2227:53;:::i;:::-;2217:63;;2173:117;2329:2;2355:53;2400:7;2391:6;2380:9;2376:22;2355:53;:::i;:::-;2345:63;;2300:118;2457:2;2483:53;2528:7;2519:6;2508:9;2504:22;2483:53;:::i;:::-;2473:63;;2428:118;2101:452;;;;;:::o;2559:401::-;;;2681:2;2669:9;2660:7;2656:23;2652:32;2649:2;;;2697:1;2694;2687:12;2649:2;2740:1;2765:53;2810:7;2801:6;2790:9;2786:22;2765:53;:::i;:::-;2755:63;;2711:117;2867:2;2893:50;2935:7;2926:6;2915:9;2911:22;2893:50;:::i;:::-;2883:60;;2838:115;2639:321;;;;;:::o;2966:407::-;;;3091:2;3079:9;3070:7;3066:23;3062:32;3059:2;;;3107:1;3104;3097:12;3059:2;3150:1;3175:53;3220:7;3211:6;3200:9;3196:22;3175:53;:::i;:::-;3165:63;;3121:117;3277:2;3303:53;3348:7;3339:6;3328:9;3324:22;3303:53;:::i;:::-;3293:63;;3248:118;3049:324;;;;;:::o;3379:256::-;;3484:2;3472:9;3463:7;3459:23;3455:32;3452:2;;;3500:1;3497;3490:12;3452:2;3543:1;3568:50;3610:7;3601:6;3590:9;3586:22;3568:50;:::i;:::-;3558:60;;3514:114;3442:193;;;;:::o;3641:262::-;;3749:2;3737:9;3728:7;3724:23;3720:32;3717:2;;;3765:1;3762;3755:12;3717:2;3808:1;3833:53;3878:7;3869:6;3858:9;3854:22;3833:53;:::i;:::-;3823:63;;3779:117;3707:196;;;;:::o;3909:401::-;;;4031:2;4019:9;4010:7;4006:23;4002:32;3999:2;;;4047:1;4044;4037:12;3999:2;4090:1;4115:53;4160:7;4151:6;4140:9;4136:22;4115:53;:::i;:::-;4105:63;;4061:117;4217:2;4243:50;4285:7;4276:6;4265:9;4261:22;4243:50;:::i;:::-;4233:60;;4188:115;3989:321;;;;;:::o;4316:179::-;;4406:46;4448:3;4440:6;4406:46;:::i;:::-;4484:4;4479:3;4475:14;4461:28;;4396:99;;;;:::o;4501:142::-;4604:32;4630:5;4604:32;:::i;:::-;4599:3;4592:45;4582:61;;:::o;4649:108::-;4726:24;4744:5;4726:24;:::i;:::-;4721:3;4714:37;4704:53;;:::o;4763:118::-;4850:24;4868:5;4850:24;:::i;:::-;4845:3;4838:37;4828:53;;:::o;4917:732::-;;5065:54;5113:5;5065:54;:::i;:::-;5135:86;5214:6;5209:3;5135:86;:::i;:::-;5128:93;;5245:56;5295:5;5245:56;:::i;:::-;5324:7;5355:1;5340:284;5365:6;5362:1;5359:13;5340:284;;;5441:6;5435:13;5468:63;5527:3;5512:13;5468:63;:::i;:::-;5461:70;;5554:60;5607:6;5554:60;:::i;:::-;5544:70;;5400:224;5387:1;5384;5380:9;5375:14;;5340:284;;;5344:14;5640:3;5633:10;;5041:608;;;;;;;:::o;5655:109::-;5736:21;5751:5;5736:21;:::i;:::-;5731:3;5724:34;5714:50;;:::o;5770:185::-;5884:64;5942:5;5884:64;:::i;:::-;5879:3;5872:77;5862:93;;:::o;5961:147::-;6056:45;6095:5;6056:45;:::i;:::-;6051:3;6044:58;6034:74;;:::o;6114:364::-;;6230:39;6263:5;6230:39;:::i;:::-;6285:71;6349:6;6344:3;6285:71;:::i;:::-;6278:78;;6365:52;6410:6;6405:3;6398:4;6391:5;6387:16;6365:52;:::i;:::-;6442:29;6464:6;6442:29;:::i;:::-;6437:3;6433:39;6426:46;;6206:272;;;;;:::o;6484:367::-;;6647:67;6711:2;6706:3;6647:67;:::i;:::-;6640:74;;6744:34;6740:1;6735:3;6731:11;6724:55;6810:5;6805:2;6800:3;6796:12;6789:27;6842:2;6837:3;6833:12;6826:19;;6630:221;;;:::o;6857:374::-;;7020:67;7084:2;7079:3;7020:67;:::i;:::-;7013:74;;7117:34;7113:1;7108:3;7104:11;7097:55;7183:12;7178:2;7173:3;7169:12;7162:34;7222:2;7217:3;7213:12;7206:19;;7003:228;;;:::o;7237:370::-;;7400:67;7464:2;7459:3;7400:67;:::i;:::-;7393:74;;7497:34;7493:1;7488:3;7484:11;7477:55;7563:8;7558:2;7553:3;7549:12;7542:30;7598:2;7593:3;7589:12;7582:19;;7383:224;;;:::o;7613:366::-;;7776:67;7840:2;7835:3;7776:67;:::i;:::-;7769:74;;7873:34;7869:1;7864:3;7860:11;7853:55;7939:4;7934:2;7929:3;7925:12;7918:26;7970:2;7965:3;7961:12;7954:19;;7759:220;;;:::o;7985:325::-;;8148:67;8212:2;8207:3;8148:67;:::i;:::-;8141:74;;8245:29;8241:1;8236:3;8232:11;8225:50;8301:2;8296:3;8292:12;8285:19;;8131:179;;;:::o;8316:325::-;;8479:67;8543:2;8538:3;8479:67;:::i;:::-;8472:74;;8576:29;8572:1;8567:3;8563:11;8556:50;8632:2;8627:3;8623:12;8616:19;;8462:179;;;:::o;8647:384::-;;8810:67;8874:2;8869:3;8810:67;:::i;:::-;8803:74;;8907:34;8903:1;8898:3;8894:11;8887:55;8973:22;8968:2;8963:3;8959:12;8952:44;9022:2;9017:3;9013:12;9006:19;;8793:238;;;:::o;9037:329::-;;9200:67;9264:2;9259:3;9200:67;:::i;:::-;9193:74;;9297:33;9293:1;9288:3;9284:11;9277:54;9357:2;9352:3;9348:12;9341:19;;9183:183;;;:::o;9372:372::-;;9535:67;9599:2;9594:3;9535:67;:::i;:::-;9528:74;;9632:34;9628:1;9623:3;9619:11;9612:55;9698:10;9693:2;9688:3;9684:12;9677:32;9735:2;9730:3;9726:12;9719:19;;9518:226;;;:::o;9750:330::-;;9913:67;9977:2;9972:3;9913:67;:::i;:::-;9906:74;;10010:34;10006:1;10001:3;9997:11;9990:55;10071:2;10066:3;10062:12;10055:19;;9896:184;;;:::o;10086:373::-;;10249:67;10313:2;10308:3;10249:67;:::i;:::-;10242:74;;10346:34;10342:1;10337:3;10333:11;10326:55;10412:11;10407:2;10402:3;10398:12;10391:33;10450:2;10445:3;10441:12;10434:19;;10232:227;;;:::o;10465:369::-;;10628:67;10692:2;10687:3;10628:67;:::i;:::-;10621:74;;10725:34;10721:1;10716:3;10712:11;10705:55;10791:7;10786:2;10781:3;10777:12;10770:29;10825:2;10820:3;10816:12;10809:19;;10611:223;;;:::o;10840:368::-;;11003:67;11067:2;11062:3;11003:67;:::i;:::-;10996:74;;11100:34;11096:1;11091:3;11087:11;11080:55;11166:6;11161:2;11156:3;11152:12;11145:28;11199:2;11194:3;11190:12;11183:19;;10986:222;;;:::o;11214:324::-;;11377:67;11441:2;11436:3;11377:67;:::i;:::-;11370:74;;11474:28;11470:1;11465:3;11461:11;11454:49;11529:2;11524:3;11520:12;11513:19;;11360:178;;;:::o;11544:366::-;;11707:67;11771:2;11766:3;11707:67;:::i;:::-;11700:74;;11804:34;11800:1;11795:3;11791:11;11784:55;11870:4;11865:2;11860:3;11856:12;11849:26;11901:2;11896:3;11892:12;11885:19;;11690:220;;;:::o;11916:376::-;;12079:67;12143:2;12138:3;12079:67;:::i;:::-;12072:74;;12176:34;12172:1;12167:3;12163:11;12156:55;12242:14;12237:2;12232:3;12228:12;12221:36;12283:2;12278:3;12274:12;12267:19;;12062:230;;;:::o;12298:118::-;12385:24;12403:5;12385:24;:::i;:::-;12380:3;12373:37;12363:53;;:::o;12422:112::-;12505:22;12521:5;12505:22;:::i;:::-;12500:3;12493:35;12483:51;;:::o;12540:222::-;;12671:2;12660:9;12656:18;12648:26;;12684:71;12752:1;12741:9;12737:17;12728:6;12684:71;:::i;:::-;12638:124;;;;:::o;12768:254::-;;12915:2;12904:9;12900:18;12892:26;;12928:87;13012:1;13001:9;12997:17;12988:6;12928:87;:::i;:::-;12882:140;;;;:::o;13028:210::-;;13153:2;13142:9;13138:18;13130:26;;13166:65;13228:1;13217:9;13213:17;13204:6;13166:65;:::i;:::-;13120:118;;;;:::o;13244:276::-;;13402:2;13391:9;13387:18;13379:26;;13415:98;13510:1;13499:9;13495:17;13486:6;13415:98;:::i;:::-;13369:151;;;;:::o;13526:313::-;;13677:2;13666:9;13662:18;13654:26;;13726:9;13720:4;13716:20;13712:1;13701:9;13697:17;13690:47;13754:78;13827:4;13818:6;13754:78;:::i;:::-;13746:86;;13644:195;;;;:::o;13845:419::-;;14049:2;14038:9;14034:18;14026:26;;14098:9;14092:4;14088:20;14084:1;14073:9;14069:17;14062:47;14126:131;14252:4;14126:131;:::i;:::-;14118:139;;14016:248;;;:::o;14270:419::-;;14474:2;14463:9;14459:18;14451:26;;14523:9;14517:4;14513:20;14509:1;14498:9;14494:17;14487:47;14551:131;14677:4;14551:131;:::i;:::-;14543:139;;14441:248;;;:::o;14695:419::-;;14899:2;14888:9;14884:18;14876:26;;14948:9;14942:4;14938:20;14934:1;14923:9;14919:17;14912:47;14976:131;15102:4;14976:131;:::i;:::-;14968:139;;14866:248;;;:::o;15120:419::-;;15324:2;15313:9;15309:18;15301:26;;15373:9;15367:4;15363:20;15359:1;15348:9;15344:17;15337:47;15401:131;15527:4;15401:131;:::i;:::-;15393:139;;15291:248;;;:::o;15545:419::-;;15749:2;15738:9;15734:18;15726:26;;15798:9;15792:4;15788:20;15784:1;15773:9;15769:17;15762:47;15826:131;15952:4;15826:131;:::i;:::-;15818:139;;15716:248;;;:::o;15970:419::-;;16174:2;16163:9;16159:18;16151:26;;16223:9;16217:4;16213:20;16209:1;16198:9;16194:17;16187:47;16251:131;16377:4;16251:131;:::i;:::-;16243:139;;16141:248;;;:::o;16395:419::-;;16599:2;16588:9;16584:18;16576:26;;16648:9;16642:4;16638:20;16634:1;16623:9;16619:17;16612:47;16676:131;16802:4;16676:131;:::i;:::-;16668:139;;16566:248;;;:::o;16820:419::-;;17024:2;17013:9;17009:18;17001:26;;17073:9;17067:4;17063:20;17059:1;17048:9;17044:17;17037:47;17101:131;17227:4;17101:131;:::i;:::-;17093:139;;16991:248;;;:::o;17245:419::-;;17449:2;17438:9;17434:18;17426:26;;17498:9;17492:4;17488:20;17484:1;17473:9;17469:17;17462:47;17526:131;17652:4;17526:131;:::i;:::-;17518:139;;17416:248;;;:::o;17670:419::-;;17874:2;17863:9;17859:18;17851:26;;17923:9;17917:4;17913:20;17909:1;17898:9;17894:17;17887:47;17951:131;18077:4;17951:131;:::i;:::-;17943:139;;17841:248;;;:::o;18095:419::-;;18299:2;18288:9;18284:18;18276:26;;18348:9;18342:4;18338:20;18334:1;18323:9;18319:17;18312:47;18376:131;18502:4;18376:131;:::i;:::-;18368:139;;18266:248;;;:::o;18520:419::-;;18724:2;18713:9;18709:18;18701:26;;18773:9;18767:4;18763:20;18759:1;18748:9;18744:17;18737:47;18801:131;18927:4;18801:131;:::i;:::-;18793:139;;18691:248;;;:::o;18945:419::-;;19149:2;19138:9;19134:18;19126:26;;19198:9;19192:4;19188:20;19184:1;19173:9;19169:17;19162:47;19226:131;19352:4;19226:131;:::i;:::-;19218:139;;19116:248;;;:::o;19370:419::-;;19574:2;19563:9;19559:18;19551:26;;19623:9;19617:4;19613:20;19609:1;19598:9;19594:17;19587:47;19651:131;19777:4;19651:131;:::i;:::-;19643:139;;19541:248;;;:::o;19795:419::-;;19999:2;19988:9;19984:18;19976:26;;20048:9;20042:4;20038:20;20034:1;20023:9;20019:17;20012:47;20076:131;20202:4;20076:131;:::i;:::-;20068:139;;19966:248;;;:::o;20220:419::-;;20424:2;20413:9;20409:18;20401:26;;20473:9;20467:4;20463:20;20459:1;20448:9;20444:17;20437:47;20501:131;20627:4;20501:131;:::i;:::-;20493:139;;20391:248;;;:::o;20645:222::-;;20776:2;20765:9;20761:18;20753:26;;20789:71;20857:1;20846:9;20842:17;20833:6;20789:71;:::i;:::-;20743:124;;;;:::o;20873:831::-;;21174:3;21163:9;21159:19;21151:27;;21188:71;21256:1;21245:9;21241:17;21232:6;21188:71;:::i;:::-;21269:80;21345:2;21334:9;21330:18;21321:6;21269:80;:::i;:::-;21396:9;21390:4;21386:20;21381:2;21370:9;21366:18;21359:48;21424:108;21527:4;21518:6;21424:108;:::i;:::-;21416:116;;21542:72;21610:2;21599:9;21595:18;21586:6;21542:72;:::i;:::-;21624:73;21692:3;21681:9;21677:19;21668:6;21624:73;:::i;:::-;21141:563;;;;;;;;:::o;21710:214::-;;21837:2;21826:9;21822:18;21814:26;;21850:67;21914:1;21903:9;21899:17;21890:6;21850:67;:::i;:::-;21804:120;;;;:::o;21930:132::-;;22020:3;22012:11;;22050:4;22045:3;22041:14;22033:22;;22002:60;;;:::o;22068:114::-;;22169:5;22163:12;22153:22;;22142:40;;;:::o;22188:99::-;;22274:5;22268:12;22258:22;;22247:40;;;:::o;22293:113::-;;22395:4;22390:3;22386:14;22378:22;;22368:38;;;:::o;22412:184::-;;22545:6;22540:3;22533:19;22585:4;22580:3;22576:14;22561:29;;22523:73;;;;:::o;22602:169::-;;22720:6;22715:3;22708:19;22760:4;22755:3;22751:14;22736:29;;22698:73;;;;:::o;22777:305::-;;22836:20;22854:1;22836:20;:::i;:::-;22831:25;;22870:20;22888:1;22870:20;:::i;:::-;22865:25;;23024:1;22956:66;22952:74;22949:1;22946:81;22943:2;;;23030:18;;:::i;:::-;22943:2;23074:1;23071;23067:9;23060:16;;22821:261;;;;:::o;23088:185::-;;23145:20;23163:1;23145:20;:::i;:::-;23140:25;;23179:20;23197:1;23179:20;:::i;:::-;23174:25;;23218:1;23208:2;;23223:18;;:::i;:::-;23208:2;23265:1;23262;23258:9;23253:14;;23130:143;;;;:::o;23279:348::-;;23342:20;23360:1;23342:20;:::i;:::-;23337:25;;23376:20;23394:1;23376:20;:::i;:::-;23371:25;;23564:1;23496:66;23492:74;23489:1;23486:81;23481:1;23474:9;23467:17;23463:105;23460:2;;;23571:18;;:::i;:::-;23460:2;23619:1;23616;23612:9;23601:20;;23327:300;;;;:::o;23633:191::-;;23693:20;23711:1;23693:20;:::i;:::-;23688:25;;23727:20;23745:1;23727:20;:::i;:::-;23722:25;;23766:1;23763;23760:8;23757:2;;;23771:18;;:::i;:::-;23757:2;23816:1;23813;23809:9;23801:17;;23678:146;;;;:::o;23830:96::-;;23896:24;23914:5;23896:24;:::i;:::-;23885:35;;23875:51;;;:::o;23932:104::-;;24006:24;24024:5;24006:24;:::i;:::-;23995:35;;23985:51;;;:::o;24042:90::-;;24119:5;24112:13;24105:21;24094:32;;24084:48;;;:::o;24138:126::-;;24215:42;24208:5;24204:54;24193:65;;24183:81;;;:::o;24270:77::-;;24336:5;24325:16;;24315:32;;;:::o;24353:86::-;;24428:4;24421:5;24417:16;24406:27;;24396:43;;;:::o;24445:180::-;;24555:64;24613:5;24555:64;:::i;:::-;24542:77;;24532:93;;;:::o;24631:140::-;;24741:24;24759:5;24741:24;:::i;:::-;24728:37;;24718:53;;;:::o;24777:121::-;;24868:24;24886:5;24868:24;:::i;:::-;24855:37;;24845:53;;;:::o;24904:307::-;24972:1;24982:113;24996:6;24993:1;24990:13;24982:113;;;25081:1;25076:3;25072:11;25066:18;25062:1;25057:3;25053:11;25046:39;25018:2;25015:1;25011:10;25006:15;;24982:113;;;25113:6;25110:1;25107:13;25104:2;;;25193:1;25184:6;25179:3;25175:16;25168:27;25104:2;24953:258;;;;:::o;25217:320::-;;25298:1;25292:4;25288:12;25278:22;;25345:1;25339:4;25335:12;25366:18;25356:2;;25422:4;25414:6;25410:17;25400:27;;25356:2;25484;25476:6;25473:14;25453:18;25450:38;25447:2;;;25503:18;;:::i;:::-;25447:2;25268:269;;;;:::o;25543:233::-;;25605:24;25623:5;25605:24;:::i;:::-;25596:33;;25651:66;25644:5;25641:77;25638:2;;;25721:18;;:::i;:::-;25638:2;25768:1;25761:5;25757:13;25750:20;;25586:190;;;:::o;25782:180::-;25830:77;25827:1;25820:88;25927:4;25924:1;25917:15;25951:4;25948:1;25941:15;25968:180;26016:77;26013:1;26006:88;26113:4;26110:1;26103:15;26137:4;26134:1;26127:15;26154:180;26202:77;26199:1;26192:88;26299:4;26296:1;26289:15;26323:4;26320:1;26313:15;26340:102;;26432:2;26428:7;26423:2;26416:5;26412:14;26408:28;26398:38;;26388:54;;;:::o;26448:122::-;26521:24;26539:5;26521:24;:::i;:::-;26514:5;26511:35;26501:2;;26560:1;26557;26550:12;26501:2;26491:79;:::o;26576:138::-;26657:32;26683:5;26657:32;:::i;:::-;26650:5;26647:43;26637:2;;26704:1;26701;26694:12;26637:2;26627:87;:::o;26720:116::-;26790:21;26805:5;26790:21;:::i;:::-;26783:5;26780:32;26770:2;;26826:1;26823;26816:12;26770:2;26760:76;:::o;26842:122::-;26915:24;26933:5;26915:24;:::i;:::-;26908:5;26905:35;26895:2;;26954:1;26951;26944:12;26895:2;26885:79;:::o
Swarm Source
ipfs://c165223d53b366f230b9115028fa25dfaeaf5e3efda40f38d903304fa396ba04
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.