ERC-20
Overview
Max Total Supply
1,000,000,000,000 VSM
Holders
268
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
134,628,168.115509421 VSMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
VariStableMeme
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-28 */ /** *Submitted for verification at Etherscan.io on 2021-11-27 */ /** *Submitted for verification at Etherscan.io on 2021-11-27 */ // Vari-Stable Capital: $VSM // 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 $VSM holders. //Initial Supply: 1,000,000,000,000 $VSM //60% of $MSC burned to 0x0dEaD //10% of each buy goes to existing holders. //10% of each sell goes into marketing/development and staking // Twitter: https://twitter.com/VariStableMeme // Website: https://varistablememe.com/ // Telegram: https://t.me/VariStableCapital 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 VariStableMeme 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 = 'VariStableMeme'; string private _symbol = 'VSM'; 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
60c0604052683635c9adc5dea0000060075560075460001962000023919062000946565b60001962000032919062000883565b6008556040518060400160405280600e81526020017f56617269537461626c654d656d65000000000000000000000000000000000000815250600a908051906020019062000082929190620006cc565b506040518060400160405280600381526020017f56534d0000000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000d0929190620006cc565b506009600c60006101000a81548160ff021916908360ff160217905550600a600d55600a600e55600d54600f55600e546010556000601260146101000a81548160ff0219169083151502179055506001601260156101000a81548160ff02191690831515021790555069152d02c7e14af680000060135565048c273950006014553480156200015e57600080fd5b5060405162005a4838038062005a488339818101604052810190620001849190620007d6565b620001a462000198620005d760201b60201c565b620005df60201b60201c565b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600160006200023d620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002db57600080fd5b505afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003169190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037957600080fd5b505afa1580156200038e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b49190620007aa565b6040518363ffffffff1660e01b8152600401620003d392919062000839565b602060405180830381600087803b158015620003ee57600080fd5b505af115801562000403573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004299190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160046000620004ac620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000565620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620005c6919062000866565b60405180910390a350505062000a3f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620006da9062000910565b90600052602060002090601f016020900481019282620006fe57600085556200074a565b82601f106200071957805160ff19168380011785556200074a565b828001600101855582156200074a579182015b82811115620007495782518255916020019190600101906200072c565b5b5090506200075991906200075d565b5090565b5b80821115620007785760008160009055506001016200075e565b5090565b6000815190506200078d8162000a0b565b92915050565b600081519050620007a48162000a25565b92915050565b600060208284031215620007bd57600080fd5b6000620007cd848285016200077c565b91505092915050565b60008060408385031215620007ea57600080fd5b6000620007fa8582860162000793565b92505060206200080d8582860162000793565b9150509250929050565b6200082281620008be565b82525050565b620008338162000906565b82525050565b600060408201905062000850600083018562000817565b6200085f602083018462000817565b9392505050565b60006020820190506200087d600083018462000828565b92915050565b6000620008908262000906565b91506200089d8362000906565b925082821015620008b357620008b26200097e565b5b828203905092915050565b6000620008cb82620008e6565b9050919050565b6000620008df82620008e6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200092957607f821691505b6020821081141562000940576200093f620009dc565b5b50919050565b6000620009538262000906565b9150620009608362000906565b925082620009735762000972620009ad565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000a1681620008be565b811462000a2257600080fd5b50565b62000a3081620008d2565b811462000a3c57600080fd5b50565b60805160601c60a05160601c614fc162000a8760003960008181610f91015261243f01526000818161095d015281816127aa015281816128c001526128e70152614fc16000f3fe6080604052600436106102135760003560e01c80635880b87311610118578063c0072488116100a0578063f2cc0c181161006f578063f2cc0c18146107e4578063f2fde38b1461080d578063f429389014610836578063f815a8421461084d578063f84354f1146108785761021a565b8063c007248814610718578063cba0e99614610741578063dd62ed3e1461077e578063e01af92c146107bb5761021a565b80638da5cb5b116100e75780638da5cb5b1461061f57806395d89b411461064a578063a457c2d714610675578063a9059cbb146106b2578063af9549e0146106ef5761021a565b80635880b873146105775780636ddd1713146105a057806370a08231146105cb578063715018a6146106085761021a565b80632d8381191161019b5780634144d9e41161016a5780634144d9e4146104905780634549b039146104bb57806349bd5a5e146104f857806351bc3c85146105235780635342acb41461053a5761021a565b80632d838119146103c2578063313ce567146103ff578063395093511461042a5780633bd5d173146104675761021a565b806318160ddd116101e257806318160ddd146102dd5780631bbae6e01461030857806323b872dd14610331578063286671621461036e5780632abe39ec146103975761021a565b806306fdde031461021f578063095ea7b31461024a57806313114a9d146102875780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108a1565b60405161024191906144ab565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c919061401e565b610933565b60405161027e9190614475565b60405180910390f35b34801561029357600080fd5b5061029c610951565b6040516102a991906146cd565b60405180910390f35b3480156102be57600080fd5b506102c761095b565b6040516102d49190614490565b60405180910390f35b3480156102e957600080fd5b506102f261097f565b6040516102ff91906146cd565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190614083565b610989565b005b34801561033d57600080fd5b5061035860048036038101906103539190613f93565b610a5c565b6040516103659190614475565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190614083565b610b35565b005b3480156103a357600080fd5b506103ac610c0c565b6040516103b9919061445a565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190614083565b610c32565b6040516103f691906146cd565b60405180910390f35b34801561040b57600080fd5b50610414610ca0565b6040516104219190614742565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c919061401e565b610cb7565b60405161045e9190614475565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190614083565b610d6a565b005b34801561049c57600080fd5b506104a5610ee5565b6040516104b2919061445a565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906140ac565b610f0b565b6040516104ef91906146cd565b60405180910390f35b34801561050457600080fd5b5061050d610f8f565b60405161051a919061443f565b60405180910390f35b34801561052f57600080fd5b50610538610fb3565b005b34801561054657600080fd5b50610561600480360381019061055c9190613edc565b611048565b60405161056e9190614475565b60405180910390f35b34801561058357600080fd5b5061059e60048036038101906105999190614083565b61109e565b005b3480156105ac57600080fd5b506105b5611175565b6040516105c29190614475565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613edc565b611188565b6040516105ff91906146cd565b60405180910390f35b34801561061457600080fd5b5061061d611273565b005b34801561062b57600080fd5b506106346112fb565b604051610641919061443f565b60405180910390f35b34801561065657600080fd5b5061065f611324565b60405161066c91906144ab565b60405180910390f35b34801561068157600080fd5b5061069c6004803603810190610697919061401e565b6113b6565b6040516106a99190614475565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d4919061401e565b611483565b6040516106e69190614475565b60405180910390f35b3480156106fb57600080fd5b5061071660048036038101906107119190613fe2565b6114a1565b005b34801561072457600080fd5b5061073f600480360381019061073a9190613f2e565b611578565b005b34801561074d57600080fd5b5061076860048036038101906107639190613edc565b611638565b6040516107759190614475565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613f57565b61168e565b6040516107b291906146cd565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd919061405a565b611715565b005b3480156107f057600080fd5b5061080b60048036038101906108069190613edc565b6117ae565b005b34801561081957600080fd5b50610834600480360381019061082f9190613edc565b611acc565b005b34801561084257600080fd5b5061084b611bc4565b005b34801561085957600080fd5b50610862611c51565b60405161086f91906146cd565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613edc565b611c59565b005b6060600a80546108b090614997565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614997565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b5050505050905090565b6000610947610940612027565b848461202f565b6001905092915050565b6000600954905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b610991612027565b73ffffffffffffffffffffffffffffffffffffffff166109af6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc906145ed565b60405180910390fd5b69152d02c7e14af6800000811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a499061458d565b60405180910390fd5b8060138190555050565b6000610a698484846121fa565b610b2a84610a75612027565b610b2585604051806060016040528060288152602001614f3f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adb612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b600190509392505050565b610b3d612027565b73ffffffffffffffffffffffffffffffffffffffff16610b5b6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba8906145ed565b60405180910390fd5b60018110158015610bc3575060198111155b610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf99061454d565b60405180910390fd5b80600e8190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600854821115610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c70906144ed565b60405180910390fd5b6000610c836125d0565b9050610c9881846125fb90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610d60610cc4612027565b84610d5b8560036000610cd5612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b61202f565b6001905092915050565b6000610d74612027565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa906146ad565b60405180910390fd5b6000610e0e83612627565b50505050509050610e6781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ebf8160085461268e90919063ffffffff16565b600881905550610eda8360095461261190919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754831115610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f49906145ad565b60405180910390fd5b81610f72576000610f6284612627565b5050505050905080915050610f89565b6000610f7d84612627565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610fbb612027565b73ffffffffffffffffffffffffffffffffffffffff16610fd96112fb565b73ffffffffffffffffffffffffffffffffffffffff161461102f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611026906145ed565b60405180910390fd5b600061103a30611188565b9050611045816126a4565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110a6612027565b73ffffffffffffffffffffffffffffffffffffffff166110c46112fb565b73ffffffffffffffffffffffffffffffffffffffff161461111a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611111906145ed565b60405180910390fd5b6001811015801561112c575060198111155b61116b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111629061466d565b60405180910390fd5b80600d8190555050565b601260159054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561122357600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061126e565b61126b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c32565b90505b919050565b61127b612027565b73ffffffffffffffffffffffffffffffffffffffff166112996112fb565b73ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e6906145ed565b60405180910390fd5b6112f96000612998565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461133390614997565b80601f016020809104026020016040519081016040528092919081815260200182805461135f90614997565b80156113ac5780601f10611381576101008083540402835291602001916113ac565b820191906000526020600020905b81548152906001019060200180831161138f57829003601f168201915b5050505050905090565b60006114796113c3612027565b8461147485604051806060016040528060258152602001614f6760259139600360006113ed612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b6001905092915050565b6000611497611490612027565b84846121fa565b6001905092915050565b6114a9612027565b73ffffffffffffffffffffffffffffffffffffffff166114c76112fb565b73ffffffffffffffffffffffffffffffffffffffff161461151d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611514906145ed565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611580612027565b73ffffffffffffffffffffffffffffffffffffffff1661159e6112fb565b73ffffffffffffffffffffffffffffffffffffffff16146115f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb906145ed565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61171d612027565b73ffffffffffffffffffffffffffffffffffffffff1661173b6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611788906145ed565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6117b6612027565b73ffffffffffffffffffffffffffffffffffffffff166117d46112fb565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611821906145ed565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a49061468d565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119319061456d565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a0e576119ca600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c32565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4612027565b73ffffffffffffffffffffffffffffffffffffffff16611af26112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f906145ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf9061450d565b60405180910390fd5b611bc181612998565b50565b611bcc612027565b73ffffffffffffffffffffffffffffffffffffffff16611bea6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c37906145ed565b60405180910390fd5b6000479050611c4e81612a5c565b50565b600047905090565b611c61612027565b73ffffffffffffffffffffffffffffffffffffffff16611c7f6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc906145ed565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d589061456d565b60405180910390fd5b60005b600680549050811015612023578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611dc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156120105760066001600680549050611e1d9190614893565b81548110611e54577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611eb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611fd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612023565b808061201b906149c9565b915050611d64565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561209f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120969061464d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121069061452d565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121ed91906146cd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561226a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122619061462d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d1906144cd565b60405180910390fd5b6000811161231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123149061460d565b60405180910390fd5b6123256112fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561239357506123636112fb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123de576013548111156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d4906145cd565b60405180910390fd5b5b60006123e930611188565b905060135481106123fa5760135490505b60006014548210159050601260149054906101000a900460ff1615801561242d5750601260159054906101000a900460ff165b80156124365750805b801561248e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124b65761249c826126a4565b600047905060008111156124b4576124b347612a5c565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061255d5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561256757600090505b61257386868684612b57565b505050505050565b60008383111582906125c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ba91906144ab565b60405180910390fd5b5082840390509392505050565b60008060006125dd612e68565b915091506125f481836125fb90919063ffffffff16565b9250505090565b600081836126099190614808565b905092915050565b6000818361261f91906147b2565b905092915050565b60008060008060008060008060006126448a600d54600e546131b3565b92509250925060006126546125d0565b905060008060006126668e8786613249565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000818361269c9190614893565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612702577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156127305781602001602082028036833780820191505090505b509050308160008151811061276e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561280e57600080fd5b505afa158015612822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128469190613f05565b81600181518110612880577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128e5307f00000000000000000000000000000000000000000000000000000000000000008461202f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129479594939291906146e8565b600060405180830381600087803b15801561296157600080fd5b505af1158015612975573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612aac6002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612ad7573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612b286002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612b53573d6000803e3d6000fd5b5050565b80612b6557612b646132a7565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c085750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c1d57612c188484846132ea565b612e54565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cc05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cd557612cd084848461354a565b612e53565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d795750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d8e57612d898484846137aa565b612e52565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e305750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e4557612e40848484613975565b612e51565b612e508484846137aa565b5b5b5b5b80612e6257612e61613c6a565b5b50505050565b600080600060085490506000600754905060005b60068054905081101561317657826001600060068481548110612ec8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612fdc5750816002600060068481548110612f74577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ff357600854600754945094505050506131af565b6130a96001600060068481548110613034577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461268e90919063ffffffff16565b925061316160026000600684815481106130ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361268e90919063ffffffff16565b9150808061316e906149c9565b915050612e7c565b5061318e6007546008546125fb90919063ffffffff16565b8210156131a6576008546007549350935050506131af565b81819350935050505b9091565b6000806000806131df60646131d1888a613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061320960646131fb888b613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061323282613224858c61268e90919063ffffffff16565b61268e90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806132628588613c7e90919063ffffffff16565b905060006132798688613c7e90919063ffffffff16565b90506000613290828461268e90919063ffffffff16565b905082818395509550955050505093509350939050565b6000600d541480156132bb57506000600e54145b156132c5576132e8565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806132fc87612627565b95509550955095509550955061335a87600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133ef86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061348485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134d081613c94565b6134da8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161353791906146cd565b60405180910390a3505050505050505050565b60008060008060008061355c87612627565b9550955095509550955095506135ba86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136e485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061373081613c94565b61373a8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161379791906146cd565b60405180910390a3505050505050505050565b6000806000806000806137bc87612627565b95509550955095509550955061381a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138af85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fb81613c94565b6139058483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161396291906146cd565b60405180910390a3505050505050505050565b60008060008060008061398787612627565b9550955095509550955095506139e587600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ba485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bf081613c94565b613bfa8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c5791906146cd565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008183613c8c9190614839565b905092915050565b6000613c9e6125d0565b90506000613cb58284613c7e90919063ffffffff16565b9050613d0981600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e3457613df083600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613e4e8260085461268e90919063ffffffff16565b600881905550613e698160095461261190919063ffffffff16565b6009819055505050565b600081359050613e8281614ee2565b92915050565b600081519050613e9781614ee2565b92915050565b600081359050613eac81614ef9565b92915050565b600081359050613ec181614f10565b92915050565b600081359050613ed681614f27565b92915050565b600060208284031215613eee57600080fd5b6000613efc84828501613e73565b91505092915050565b600060208284031215613f1757600080fd5b6000613f2584828501613e88565b91505092915050565b600060208284031215613f4057600080fd5b6000613f4e84828501613e9d565b91505092915050565b60008060408385031215613f6a57600080fd5b6000613f7885828601613e73565b9250506020613f8985828601613e73565b9150509250929050565b600080600060608486031215613fa857600080fd5b6000613fb686828701613e73565b9350506020613fc786828701613e73565b9250506040613fd886828701613ec7565b9150509250925092565b60008060408385031215613ff557600080fd5b600061400385828601613e73565b925050602061401485828601613eb2565b9150509250929050565b6000806040838503121561403157600080fd5b600061403f85828601613e73565b925050602061405085828601613ec7565b9150509250929050565b60006020828403121561406c57600080fd5b600061407a84828501613eb2565b91505092915050565b60006020828403121561409557600080fd5b60006140a384828501613ec7565b91505092915050565b600080604083850312156140bf57600080fd5b60006140cd85828601613ec7565b92505060206140de85828601613eb2565b9150509250929050565b60006140f4838361410f565b60208301905092915050565b614109816148d9565b82525050565b614118816148c7565b82525050565b614127816148c7565b82525050565b60006141388261476d565b6141428185614790565b935061414d8361475d565b8060005b8381101561417e57815161416588826140e8565b975061417083614783565b925050600181019050614151565b5085935050505092915050565b614194816148eb565b82525050565b6141a38161492e565b82525050565b6141b281614952565b82525050565b60006141c382614778565b6141cd81856147a1565b93506141dd818560208601614964565b6141e681614a9f565b840191505092915050565b60006141fe6023836147a1565b915061420982614ab0565b604082019050919050565b6000614221602a836147a1565b915061422c82614aff565b604082019050919050565b60006142446026836147a1565b915061424f82614b4e565b604082019050919050565b60006142676022836147a1565b915061427282614b9d565b604082019050919050565b600061428a601b836147a1565b915061429582614bec565b602082019050919050565b60006142ad601b836147a1565b91506142b882614c15565b602082019050919050565b60006142d06034836147a1565b91506142db82614c3e565b604082019050919050565b60006142f3601f836147a1565b91506142fe82614c8d565b602082019050919050565b60006143166028836147a1565b915061432182614cb6565b604082019050919050565b60006143396020836147a1565b915061434482614d05565b602082019050919050565b600061435c6029836147a1565b915061436782614d2e565b604082019050919050565b600061437f6025836147a1565b915061438a82614d7d565b604082019050919050565b60006143a26024836147a1565b91506143ad82614dcc565b604082019050919050565b60006143c5601a836147a1565b91506143d082614e1b565b602082019050919050565b60006143e86022836147a1565b91506143f382614e44565b604082019050919050565b600061440b602c836147a1565b915061441682614e93565b604082019050919050565b61442a81614917565b82525050565b61443981614921565b82525050565b6000602082019050614454600083018461411e565b92915050565b600060208201905061446f6000830184614100565b92915050565b600060208201905061448a600083018461418b565b92915050565b60006020820190506144a5600083018461419a565b92915050565b600060208201905081810360008301526144c581846141b8565b905092915050565b600060208201905081810360008301526144e6816141f1565b9050919050565b6000602082019050818103600083015261450681614214565b9050919050565b6000602082019050818103600083015261452681614237565b9050919050565b600060208201905081810360008301526145468161425a565b9050919050565b600060208201905081810360008301526145668161427d565b9050919050565b60006020820190508181036000830152614586816142a0565b9050919050565b600060208201905081810360008301526145a6816142c3565b9050919050565b600060208201905081810360008301526145c6816142e6565b9050919050565b600060208201905081810360008301526145e681614309565b9050919050565b600060208201905081810360008301526146068161432c565b9050919050565b600060208201905081810360008301526146268161434f565b9050919050565b6000602082019050818103600083015261464681614372565b9050919050565b6000602082019050818103600083015261466681614395565b9050919050565b60006020820190508181036000830152614686816143b8565b9050919050565b600060208201905081810360008301526146a6816143db565b9050919050565b600060208201905081810360008301526146c6816143fe565b9050919050565b60006020820190506146e26000830184614421565b92915050565b600060a0820190506146fd6000830188614421565b61470a60208301876141a9565b818103604083015261471c818661412d565b905061472b606083018561411e565b6147386080830184614421565b9695505050505050565b60006020820190506147576000830184614430565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006147bd82614917565b91506147c883614917565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147fd576147fc614a12565b5b828201905092915050565b600061481382614917565b915061481e83614917565b92508261482e5761482d614a41565b5b828204905092915050565b600061484482614917565b915061484f83614917565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561488857614887614a12565b5b828202905092915050565b600061489e82614917565b91506148a983614917565b9250828210156148bc576148bb614a12565b5b828203905092915050565b60006148d2826148f7565b9050919050565b60006148e4826148f7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061493982614940565b9050919050565b600061494b826148f7565b9050919050565b600061495d82614917565b9050919050565b60005b83811015614982578082015181840152602081019050614967565b83811115614991576000848401525b50505050565b600060028204905060018216806149af57607f821691505b602082108114156149c3576149c2614a70565b5b50919050565b60006149d482614917565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614a0757614a06614a12565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e203130303030303030303030303030306539000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f7461784665652073686f756c6420626520696e2031202d203235000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b614eeb816148c7565b8114614ef657600080fd5b50565b614f02816148d9565b8114614f0d57600080fd5b50565b614f19816148eb565b8114614f2457600080fd5b50565b614f3081614917565b8114614f3b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a70c15e815386707f1722b17ace990ebd385ac3efe4e5282974dfa761547d20064736f6c634300080400330000000000000000000000003d91c32d6808ca5ab2a21979493b45d8195eb434000000000000000000000000bbe554ed37c916bf735bce33a5713726c5f74757
Deployed Bytecode
0x6080604052600436106102135760003560e01c80635880b87311610118578063c0072488116100a0578063f2cc0c181161006f578063f2cc0c18146107e4578063f2fde38b1461080d578063f429389014610836578063f815a8421461084d578063f84354f1146108785761021a565b8063c007248814610718578063cba0e99614610741578063dd62ed3e1461077e578063e01af92c146107bb5761021a565b80638da5cb5b116100e75780638da5cb5b1461061f57806395d89b411461064a578063a457c2d714610675578063a9059cbb146106b2578063af9549e0146106ef5761021a565b80635880b873146105775780636ddd1713146105a057806370a08231146105cb578063715018a6146106085761021a565b80632d8381191161019b5780634144d9e41161016a5780634144d9e4146104905780634549b039146104bb57806349bd5a5e146104f857806351bc3c85146105235780635342acb41461053a5761021a565b80632d838119146103c2578063313ce567146103ff578063395093511461042a5780633bd5d173146104675761021a565b806318160ddd116101e257806318160ddd146102dd5780631bbae6e01461030857806323b872dd14610331578063286671621461036e5780632abe39ec146103975761021a565b806306fdde031461021f578063095ea7b31461024a57806313114a9d146102875780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108a1565b60405161024191906144ab565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c919061401e565b610933565b60405161027e9190614475565b60405180910390f35b34801561029357600080fd5b5061029c610951565b6040516102a991906146cd565b60405180910390f35b3480156102be57600080fd5b506102c761095b565b6040516102d49190614490565b60405180910390f35b3480156102e957600080fd5b506102f261097f565b6040516102ff91906146cd565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190614083565b610989565b005b34801561033d57600080fd5b5061035860048036038101906103539190613f93565b610a5c565b6040516103659190614475565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190614083565b610b35565b005b3480156103a357600080fd5b506103ac610c0c565b6040516103b9919061445a565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190614083565b610c32565b6040516103f691906146cd565b60405180910390f35b34801561040b57600080fd5b50610414610ca0565b6040516104219190614742565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c919061401e565b610cb7565b60405161045e9190614475565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190614083565b610d6a565b005b34801561049c57600080fd5b506104a5610ee5565b6040516104b2919061445a565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906140ac565b610f0b565b6040516104ef91906146cd565b60405180910390f35b34801561050457600080fd5b5061050d610f8f565b60405161051a919061443f565b60405180910390f35b34801561052f57600080fd5b50610538610fb3565b005b34801561054657600080fd5b50610561600480360381019061055c9190613edc565b611048565b60405161056e9190614475565b60405180910390f35b34801561058357600080fd5b5061059e60048036038101906105999190614083565b61109e565b005b3480156105ac57600080fd5b506105b5611175565b6040516105c29190614475565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613edc565b611188565b6040516105ff91906146cd565b60405180910390f35b34801561061457600080fd5b5061061d611273565b005b34801561062b57600080fd5b506106346112fb565b604051610641919061443f565b60405180910390f35b34801561065657600080fd5b5061065f611324565b60405161066c91906144ab565b60405180910390f35b34801561068157600080fd5b5061069c6004803603810190610697919061401e565b6113b6565b6040516106a99190614475565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d4919061401e565b611483565b6040516106e69190614475565b60405180910390f35b3480156106fb57600080fd5b5061071660048036038101906107119190613fe2565b6114a1565b005b34801561072457600080fd5b5061073f600480360381019061073a9190613f2e565b611578565b005b34801561074d57600080fd5b5061076860048036038101906107639190613edc565b611638565b6040516107759190614475565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613f57565b61168e565b6040516107b291906146cd565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd919061405a565b611715565b005b3480156107f057600080fd5b5061080b60048036038101906108069190613edc565b6117ae565b005b34801561081957600080fd5b50610834600480360381019061082f9190613edc565b611acc565b005b34801561084257600080fd5b5061084b611bc4565b005b34801561085957600080fd5b50610862611c51565b60405161086f91906146cd565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613edc565b611c59565b005b6060600a80546108b090614997565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614997565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b5050505050905090565b6000610947610940612027565b848461202f565b6001905092915050565b6000600954905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b610991612027565b73ffffffffffffffffffffffffffffffffffffffff166109af6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc906145ed565b60405180910390fd5b69152d02c7e14af6800000811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a499061458d565b60405180910390fd5b8060138190555050565b6000610a698484846121fa565b610b2a84610a75612027565b610b2585604051806060016040528060288152602001614f3f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adb612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b600190509392505050565b610b3d612027565b73ffffffffffffffffffffffffffffffffffffffff16610b5b6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba8906145ed565b60405180910390fd5b60018110158015610bc3575060198111155b610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf99061454d565b60405180910390fd5b80600e8190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600854821115610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c70906144ed565b60405180910390fd5b6000610c836125d0565b9050610c9881846125fb90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610d60610cc4612027565b84610d5b8560036000610cd5612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b61202f565b6001905092915050565b6000610d74612027565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa906146ad565b60405180910390fd5b6000610e0e83612627565b50505050509050610e6781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ebf8160085461268e90919063ffffffff16565b600881905550610eda8360095461261190919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754831115610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f49906145ad565b60405180910390fd5b81610f72576000610f6284612627565b5050505050905080915050610f89565b6000610f7d84612627565b50505050915050809150505b92915050565b7f000000000000000000000000ac1cbcf655b8fadb0719776f58b47a448be5d62d81565b610fbb612027565b73ffffffffffffffffffffffffffffffffffffffff16610fd96112fb565b73ffffffffffffffffffffffffffffffffffffffff161461102f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611026906145ed565b60405180910390fd5b600061103a30611188565b9050611045816126a4565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110a6612027565b73ffffffffffffffffffffffffffffffffffffffff166110c46112fb565b73ffffffffffffffffffffffffffffffffffffffff161461111a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611111906145ed565b60405180910390fd5b6001811015801561112c575060198111155b61116b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111629061466d565b60405180910390fd5b80600d8190555050565b601260159054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561122357600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061126e565b61126b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c32565b90505b919050565b61127b612027565b73ffffffffffffffffffffffffffffffffffffffff166112996112fb565b73ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e6906145ed565b60405180910390fd5b6112f96000612998565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461133390614997565b80601f016020809104026020016040519081016040528092919081815260200182805461135f90614997565b80156113ac5780601f10611381576101008083540402835291602001916113ac565b820191906000526020600020905b81548152906001019060200180831161138f57829003601f168201915b5050505050905090565b60006114796113c3612027565b8461147485604051806060016040528060258152602001614f6760259139600360006113ed612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b6001905092915050565b6000611497611490612027565b84846121fa565b6001905092915050565b6114a9612027565b73ffffffffffffffffffffffffffffffffffffffff166114c76112fb565b73ffffffffffffffffffffffffffffffffffffffff161461151d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611514906145ed565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611580612027565b73ffffffffffffffffffffffffffffffffffffffff1661159e6112fb565b73ffffffffffffffffffffffffffffffffffffffff16146115f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb906145ed565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61171d612027565b73ffffffffffffffffffffffffffffffffffffffff1661173b6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611788906145ed565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6117b6612027565b73ffffffffffffffffffffffffffffffffffffffff166117d46112fb565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611821906145ed565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a49061468d565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119319061456d565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a0e576119ca600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c32565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4612027565b73ffffffffffffffffffffffffffffffffffffffff16611af26112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f906145ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf9061450d565b60405180910390fd5b611bc181612998565b50565b611bcc612027565b73ffffffffffffffffffffffffffffffffffffffff16611bea6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c37906145ed565b60405180910390fd5b6000479050611c4e81612a5c565b50565b600047905090565b611c61612027565b73ffffffffffffffffffffffffffffffffffffffff16611c7f6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc906145ed565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d589061456d565b60405180910390fd5b60005b600680549050811015612023578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611dc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156120105760066001600680549050611e1d9190614893565b81548110611e54577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611eb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611fd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612023565b808061201b906149c9565b915050611d64565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561209f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120969061464d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121069061452d565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121ed91906146cd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561226a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122619061462d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d1906144cd565b60405180910390fd5b6000811161231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123149061460d565b60405180910390fd5b6123256112fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561239357506123636112fb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123de576013548111156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d4906145cd565b60405180910390fd5b5b60006123e930611188565b905060135481106123fa5760135490505b60006014548210159050601260149054906101000a900460ff1615801561242d5750601260159054906101000a900460ff165b80156124365750805b801561248e57507f000000000000000000000000ac1cbcf655b8fadb0719776f58b47a448be5d62d73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124b65761249c826126a4565b600047905060008111156124b4576124b347612a5c565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061255d5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561256757600090505b61257386868684612b57565b505050505050565b60008383111582906125c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ba91906144ab565b60405180910390fd5b5082840390509392505050565b60008060006125dd612e68565b915091506125f481836125fb90919063ffffffff16565b9250505090565b600081836126099190614808565b905092915050565b6000818361261f91906147b2565b905092915050565b60008060008060008060008060006126448a600d54600e546131b3565b92509250925060006126546125d0565b905060008060006126668e8786613249565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000818361269c9190614893565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612702577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156127305781602001602082028036833780820191505090505b509050308160008151811061276e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561280e57600080fd5b505afa158015612822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128469190613f05565b81600181518110612880577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128e5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461202f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129479594939291906146e8565b600060405180830381600087803b15801561296157600080fd5b505af1158015612975573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612aac6002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612ad7573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612b286002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612b53573d6000803e3d6000fd5b5050565b80612b6557612b646132a7565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c085750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c1d57612c188484846132ea565b612e54565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cc05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cd557612cd084848461354a565b612e53565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d795750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d8e57612d898484846137aa565b612e52565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e305750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e4557612e40848484613975565b612e51565b612e508484846137aa565b5b5b5b5b80612e6257612e61613c6a565b5b50505050565b600080600060085490506000600754905060005b60068054905081101561317657826001600060068481548110612ec8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612fdc5750816002600060068481548110612f74577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ff357600854600754945094505050506131af565b6130a96001600060068481548110613034577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461268e90919063ffffffff16565b925061316160026000600684815481106130ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361268e90919063ffffffff16565b9150808061316e906149c9565b915050612e7c565b5061318e6007546008546125fb90919063ffffffff16565b8210156131a6576008546007549350935050506131af565b81819350935050505b9091565b6000806000806131df60646131d1888a613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061320960646131fb888b613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061323282613224858c61268e90919063ffffffff16565b61268e90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806132628588613c7e90919063ffffffff16565b905060006132798688613c7e90919063ffffffff16565b90506000613290828461268e90919063ffffffff16565b905082818395509550955050505093509350939050565b6000600d541480156132bb57506000600e54145b156132c5576132e8565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806132fc87612627565b95509550955095509550955061335a87600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133ef86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061348485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134d081613c94565b6134da8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161353791906146cd565b60405180910390a3505050505050505050565b60008060008060008061355c87612627565b9550955095509550955095506135ba86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136e485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061373081613c94565b61373a8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161379791906146cd565b60405180910390a3505050505050505050565b6000806000806000806137bc87612627565b95509550955095509550955061381a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138af85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fb81613c94565b6139058483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161396291906146cd565b60405180910390a3505050505050505050565b60008060008060008061398787612627565b9550955095509550955095506139e587600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ba485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bf081613c94565b613bfa8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c5791906146cd565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008183613c8c9190614839565b905092915050565b6000613c9e6125d0565b90506000613cb58284613c7e90919063ffffffff16565b9050613d0981600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e3457613df083600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613e4e8260085461268e90919063ffffffff16565b600881905550613e698160095461261190919063ffffffff16565b6009819055505050565b600081359050613e8281614ee2565b92915050565b600081519050613e9781614ee2565b92915050565b600081359050613eac81614ef9565b92915050565b600081359050613ec181614f10565b92915050565b600081359050613ed681614f27565b92915050565b600060208284031215613eee57600080fd5b6000613efc84828501613e73565b91505092915050565b600060208284031215613f1757600080fd5b6000613f2584828501613e88565b91505092915050565b600060208284031215613f4057600080fd5b6000613f4e84828501613e9d565b91505092915050565b60008060408385031215613f6a57600080fd5b6000613f7885828601613e73565b9250506020613f8985828601613e73565b9150509250929050565b600080600060608486031215613fa857600080fd5b6000613fb686828701613e73565b9350506020613fc786828701613e73565b9250506040613fd886828701613ec7565b9150509250925092565b60008060408385031215613ff557600080fd5b600061400385828601613e73565b925050602061401485828601613eb2565b9150509250929050565b6000806040838503121561403157600080fd5b600061403f85828601613e73565b925050602061405085828601613ec7565b9150509250929050565b60006020828403121561406c57600080fd5b600061407a84828501613eb2565b91505092915050565b60006020828403121561409557600080fd5b60006140a384828501613ec7565b91505092915050565b600080604083850312156140bf57600080fd5b60006140cd85828601613ec7565b92505060206140de85828601613eb2565b9150509250929050565b60006140f4838361410f565b60208301905092915050565b614109816148d9565b82525050565b614118816148c7565b82525050565b614127816148c7565b82525050565b60006141388261476d565b6141428185614790565b935061414d8361475d565b8060005b8381101561417e57815161416588826140e8565b975061417083614783565b925050600181019050614151565b5085935050505092915050565b614194816148eb565b82525050565b6141a38161492e565b82525050565b6141b281614952565b82525050565b60006141c382614778565b6141cd81856147a1565b93506141dd818560208601614964565b6141e681614a9f565b840191505092915050565b60006141fe6023836147a1565b915061420982614ab0565b604082019050919050565b6000614221602a836147a1565b915061422c82614aff565b604082019050919050565b60006142446026836147a1565b915061424f82614b4e565b604082019050919050565b60006142676022836147a1565b915061427282614b9d565b604082019050919050565b600061428a601b836147a1565b915061429582614bec565b602082019050919050565b60006142ad601b836147a1565b91506142b882614c15565b602082019050919050565b60006142d06034836147a1565b91506142db82614c3e565b604082019050919050565b60006142f3601f836147a1565b91506142fe82614c8d565b602082019050919050565b60006143166028836147a1565b915061432182614cb6565b604082019050919050565b60006143396020836147a1565b915061434482614d05565b602082019050919050565b600061435c6029836147a1565b915061436782614d2e565b604082019050919050565b600061437f6025836147a1565b915061438a82614d7d565b604082019050919050565b60006143a26024836147a1565b91506143ad82614dcc565b604082019050919050565b60006143c5601a836147a1565b91506143d082614e1b565b602082019050919050565b60006143e86022836147a1565b91506143f382614e44565b604082019050919050565b600061440b602c836147a1565b915061441682614e93565b604082019050919050565b61442a81614917565b82525050565b61443981614921565b82525050565b6000602082019050614454600083018461411e565b92915050565b600060208201905061446f6000830184614100565b92915050565b600060208201905061448a600083018461418b565b92915050565b60006020820190506144a5600083018461419a565b92915050565b600060208201905081810360008301526144c581846141b8565b905092915050565b600060208201905081810360008301526144e6816141f1565b9050919050565b6000602082019050818103600083015261450681614214565b9050919050565b6000602082019050818103600083015261452681614237565b9050919050565b600060208201905081810360008301526145468161425a565b9050919050565b600060208201905081810360008301526145668161427d565b9050919050565b60006020820190508181036000830152614586816142a0565b9050919050565b600060208201905081810360008301526145a6816142c3565b9050919050565b600060208201905081810360008301526145c6816142e6565b9050919050565b600060208201905081810360008301526145e681614309565b9050919050565b600060208201905081810360008301526146068161432c565b9050919050565b600060208201905081810360008301526146268161434f565b9050919050565b6000602082019050818103600083015261464681614372565b9050919050565b6000602082019050818103600083015261466681614395565b9050919050565b60006020820190508181036000830152614686816143b8565b9050919050565b600060208201905081810360008301526146a6816143db565b9050919050565b600060208201905081810360008301526146c6816143fe565b9050919050565b60006020820190506146e26000830184614421565b92915050565b600060a0820190506146fd6000830188614421565b61470a60208301876141a9565b818103604083015261471c818661412d565b905061472b606083018561411e565b6147386080830184614421565b9695505050505050565b60006020820190506147576000830184614430565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006147bd82614917565b91506147c883614917565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147fd576147fc614a12565b5b828201905092915050565b600061481382614917565b915061481e83614917565b92508261482e5761482d614a41565b5b828204905092915050565b600061484482614917565b915061484f83614917565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561488857614887614a12565b5b828202905092915050565b600061489e82614917565b91506148a983614917565b9250828210156148bc576148bb614a12565b5b828203905092915050565b60006148d2826148f7565b9050919050565b60006148e4826148f7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061493982614940565b9050919050565b600061494b826148f7565b9050919050565b600061495d82614917565b9050919050565b60005b83811015614982578082015181840152602081019050614967565b83811115614991576000848401525b50505050565b600060028204905060018216806149af57607f821691505b602082108114156149c3576149c2614a70565b5b50919050565b60006149d482614917565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614a0757614a06614a12565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e203130303030303030303030303030306539000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f7461784665652073686f756c6420626520696e2031202d203235000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b614eeb816148c7565b8114614ef657600080fd5b50565b614f02816148d9565b8114614f0d57600080fd5b50565b614f19816148eb565b8114614f2457600080fd5b50565b614f3081614917565b8114614f3b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a70c15e815386707f1722b17ace990ebd385ac3efe4e5282974dfa761547d20064736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003d91c32d6808ca5ab2a21979493b45d8195eb434000000000000000000000000bbe554ed37c916bf735bce33a5713726c5f74757
-----Decoded View---------------
Arg [0] : VSCWalletAddress (address): 0x3d91C32d6808cA5aB2A21979493b45D8195eB434
Arg [1] : marketingWalletAddress (address): 0xbBe554ED37C916bF735BCE33A5713726c5f74757
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000003d91c32d6808ca5ab2a21979493b45d8195eb434
Arg [1] : 000000000000000000000000bbe554ed37c916bf735bce33a5713726c5f74757
Deployed Bytecode Sourcemap
31442:18836:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34163:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35167:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36515:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32571:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34476:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50038:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35352:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49685:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32461:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37523:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34373:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35693:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36622:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32512:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37039:472;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32633:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42709:168;;;;;;;;;;;;;:::i;:::-;;39214:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49492:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32714:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34591:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13115:103;;;;;;;;;;;;;:::i;:::-;;12464:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34266:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35935:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34813:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36358:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49885:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36228:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35004:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43069:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37804:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13373:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42889:168;;;;;;;;;;;;;:::i;:::-;;49362:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38291:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34163:91;34200:13;34237:5;34230:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34163:91;:::o;35167:173::-;35242:4;35263:39;35272:12;:10;:12::i;:::-;35286:7;35295:6;35263:8;:39::i;:::-;35324:4;35317:11;;35167:173;;;;:::o;36515:95::-;36557:7;36588:10;;36581:17;;36515:95;:::o;32571:51::-;;;:::o;34476:103::-;34529:7;34560;;34553:14;;34476:103;:::o;50038:233::-;12695:12;:10;:12::i;:::-;12684:23;;:7;:5;:7::i;:::-;:23;;;12676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50143:17:::1;50128:11;:32;;50120:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;50248:11;50233:12;:26;;;;50038:233:::0;:::o;35352:329::-;35450:4;35471:36;35481:6;35489:9;35500:6;35471:9;:36::i;:::-;35522:121;35531:6;35539:12;:10;:12::i;:::-;35553:89;35591:6;35553:89;;;;;;;;;;;;;;;;;:11;:19;35565:6;35553:19;;;;;;;;;;;;;;;:33;35573:12;:10;:12::i;:::-;35553:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;35522:8;:121::i;:::-;35665:4;35658:11;;35352:329;;;;;:::o;49685:188::-;12695:12;:10;:12::i;:::-;12684:23;;:7;:5;:7::i;:::-;:23;;;12676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49778:1:::1;49767:7;:12;;:29;;;;;49794:2;49783:7;:13;;49767:29;49759:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;49854:7;49843:8;:18;;;;49685:188:::0;:::o;32461:40::-;;;;;;;;;;;;;:::o;37523:269::-;37589:7;37632;;37621;:18;;37613:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;37701:19;37724:10;:8;:10::i;:::-;37701:33;;37756:24;37768:11;37756:7;:11;;:24;;;;:::i;:::-;37749:31;;;37523:269;;;:::o;34373:91::-;34414:5;34443:9;;;;;;;;;;;34436:16;;34373:91;:::o;35693:230::-;35781:4;35802:83;35811:12;:10;:12::i;:::-;35825:7;35834:50;35873:10;35834:11;:25;35846:12;:10;:12::i;:::-;35834:25;;;;;;;;;;;;;;;:34;35860:7;35834:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;35802:8;:83::i;:::-;35907:4;35900:11;;35693:230;;;;:::o;36622:405::-;36678:14;36695:12;:10;:12::i;:::-;36678:29;;36731:11;:19;36743:6;36731:19;;;;;;;;;;;;;;;;;;;;;;;;;36730:20;36722:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;36815:15;36839:19;36850:7;36839:10;:19::i;:::-;36814:44;;;;;;;36891:28;36911:7;36891;:15;36899:6;36891:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;36873:7;:15;36881:6;36873:15;;;;;;;;;;;;;;;:46;;;;36944:20;36956:7;36944;;:11;;:20;;;;:::i;:::-;36934:7;:30;;;;36992:23;37007:7;36992:10;;:14;;:23;;;;:::i;:::-;36979:10;:36;;;;36622:405;;;:::o;32512:46::-;;;;;;;;;;;;;:::o;37039:472::-;37129:7;37172;;37161;:18;;37153:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;37235:17;37230:270;;37274:15;37298:19;37309:7;37298:10;:19::i;:::-;37273:44;;;;;;;37343:7;37336:14;;;;;37230:270;37393:23;37424:19;37435:7;37424:10;:19::i;:::-;37391:52;;;;;;;37469:15;37462:22;;;37039:472;;;;;:::o;32633:38::-;;;:::o;42709:168::-;12695:12;:10;:12::i;:::-;12684:23;;:7;:5;:7::i;:::-;:23;;;12676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42767:23:::1;42793:24;42811:4;42793:9;:24::i;:::-;42767:50;;42832:33;42849:15;42832:16;:33::i;:::-;12755:1;42709:168::o:0;39214:131::-;39278:4;39306:18;:27;39325:7;39306:27;;;;;;;;;;;;;;;;;;;;;;;;;39299:34;;39214:131;;;:::o;49492:181::-;12695:12;:10;:12::i;:::-;12684:23;;:7;:5;:7::i;:::-;:23;;;12676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49582:1:::1;49572:6;:11;;:27;;;;;49597:2;49587:6;:12;;49572:27;49564:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;49655:6;49645:7;:16;;;;49492:181:::0;:::o;32714:30::-;;;;;;;;;;;;;:::o;34591:210::-;34657:7;34685:11;:20;34697:7;34685:20;;;;;;;;;;;;;;;;;;;;;;;;;34681:49;;;34714:7;:16;34722:7;34714:16;;;;;;;;;;;;;;;;34707:23;;;;34681:49;34752:37;34772:7;:16;34780:7;34772:16;;;;;;;;;;;;;;;;34752:19;:37::i;:::-;34745:44;;34591:210;;;;:::o;13115:103::-;12695:12;:10;:12::i;:::-;12684:23;;:7;:5;:7::i;:::-;:23;;;12676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13180:30:::1;13207:1;13180:18;:30::i;:::-;13115:103::o:0;12464:87::-;12510:7;12537:6;;;;;;;;;;;12530:13;;12464:87;:::o;34266:95::-;34305:13;34342:7;34335:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34266:95;:::o;35935:281::-;36028:4;36049:129;36058:12;:10;:12::i;:::-;36072:7;36081:96;36120:15;36081:96;;;;;;;;;;;;;;;;;:11;:25;36093:12;:10;:12::i;:::-;36081:25;;;;;;;;;;;;;;;:34;36107:7;36081:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;36049:8;:129::i;:::-;36200:4;36193:11;;35935:281;;;;:::o;34813:179::-;34891:4;34912:42;34922:12;:10;:12::i;:::-;34936:9;34947:6;34912:9;:42::i;:::-;34976:4;34969:11;;34813:179;;;;:::o;36358:145::-;12695:12;:10;:12::i;:::-;12684:23;;:7;:5;:7::i;:::-;:23;;;12676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36483:8:::1;36453:18;:27;36472:7;36453:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;36358:145:::0;;:::o;49885:141::-;12695:12;:10;:12::i;:::-;12684:23;;:7;:5;:7::i;:::-;:23;;;12676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49998:16:::1;49978:17;;:36;;;;;;;;;;;;;;;;;;49885:141:::0;:::o;36228:118::-;36286:4;36314:11;:20;36326:7;36314:20;;;;;;;;;;;;;;;;;;;;;;;;;36307:27;;36228:118;;;:::o;35004:151::-;35085:7;35116:11;:18;35128:5;35116:18;;;;;;;;;;;;;;;:27;35135:7;35116:27;;;;;;;;;;;;;;;;35109:34;;35004:151;;;;:::o;43069:106::-;12695:12;:10;:12::i;:::-;12684:23;;:7;:5;:7::i;:::-;:23;;;12676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43156:7:::1;43142:11;;:21;;;;;;;;;;;;;;;;;;43069:106:::0;:::o;37804:475::-;12695:12;:10;:12::i;:::-;12684:23;;:7;:5;:7::i;:::-;:23;;;12676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37900:42:::1;37889:53;;:7;:53;;;;37881:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;38005:11;:20;38017:7;38005:20;;;;;;;;;;;;;;;;;;;;;;;;;38004:21;37996:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;38094:1;38075:7;:16;38083:7;38075:16;;;;;;;;;;;;;;;;:20;38072:116;;;38135:37;38155:7;:16;38163:7;38155:16;;;;;;;;;;;;;;;;38135:19;:37::i;:::-;38116:7;:16;38124:7;38116:16;;;;;;;;;;;;;;;:56;;;;38072:116;38225:4;38202:11;:20;38214:7;38202:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;38244:9;38259:7;38244:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37804:475:::0;:::o;13373:201::-;12695:12;:10;:12::i;:::-;12684:23;;:7;:5;:7::i;:::-;:23;;;12676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13482:1:::1;13462:22;;:8;:22;;;;13454:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13538:28;13557:8;13538:18;:28::i;:::-;13373:201:::0;:::o;42889:168::-;12695:12;:10;:12::i;:::-;12684:23;;:7;:5;:7::i;:::-;:23;;;12676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42947:26:::1;42976:21;42947:50;;43012:33;43026:18;43012:13;:33::i;:::-;12755:1;42889:168::o:0;49362:118::-;49408:15;49447:21;49440:28;;49362:118;:::o;38291:522::-;12695:12;:10;:12::i;:::-;12684:23;;:7;:5;:7::i;:::-;:23;;;12676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38376:11:::1;:20;38388:7;38376:20;;;;;;;;;;;;;;;;;;;;;;;;;38368:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;38448:9;38443:359;38467:9;:16;;;;38463:1;:20;38443:359;;;38529:7;38513:23;;:9;38523:1;38513:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;38509:278;;;38576:9;38605:1;38586:9;:16;;;;:20;;;;:::i;:::-;38576:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38561:9;38571:1;38561:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;38649:1;38630:7;:16;38638:7;38630:16;;;;;;;;;;;;;;;:20;;;;38696:5;38673:11;:20;38685:7;38673:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;38724:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38762:5;;38509:278;38485:3;;;;;:::i;:::-;;;;38443:359;;;;38291:522:::0;:::o;11188:98::-;11241:7;11268:10;11261:17;;11188:98;:::o;39357:357::-;39471:1;39454:19;;:5;:19;;;;39446:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39556:1;39537:21;;:7;:21;;;;39529:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39644:6;39614:11;:18;39626:5;39614:18;;;;;;;;;;;;;;;:27;39633:7;39614:27;;;;;;;;;;;;;;;:36;;;;39686:7;39670:32;;39679:5;39670:32;;;39695:6;39670:32;;;;;;:::i;:::-;;;;;;;;39357:357;;;:::o;39726:1964::-;39845:1;39827:20;;:6;:20;;;;39819:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;39933:1;39912:23;;:9;:23;;;;39904:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;40007:1;39998:6;:10;39990:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;40084:7;:5;:7::i;:::-;40074:17;;:6;:17;;;;:41;;;;;40108:7;:5;:7::i;:::-;40095:20;;:9;:20;;;;40074:41;40071:138;;;40152:12;;40142:6;:22;;40134:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;40071:138;40492:28;40523:24;40541:4;40523:9;:24::i;:::-;40492:55;;40591:12;;40567:20;:36;40564:124;;40660:12;;40637:35;;40564:124;40704:24;40755:29;;40731:20;:53;;40704:80;;40804:6;;;;;;;;;;;40803:7;:22;;;;;40814:11;;;;;;;;;;;40803:22;:45;;;;;40829:19;40803:45;:72;;;;;40862:13;40852:23;;:6;:23;;;;40803:72;40799:436;;;40986:38;41003:20;40986:16;:38::i;:::-;41045:26;41074:21;41045:50;;41138:1;41117:18;:22;41114:106;;;41164:36;41178:21;41164:13;:36::i;:::-;41114:106;40799:436;;41316:12;41331:4;41316:19;;41443:18;:26;41462:6;41443:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;41473:18;:29;41492:9;41473:29;;;;;;;;;;;;;;;;;;;;;;;;;41443:59;41440:113;;;41532:5;41522:15;;41440:113;41631:47;41646:6;41653:9;41663:6;41670:7;41631:14;:47::i;:::-;39726:1964;;;;;;:::o;5727:240::-;5847:7;5905:1;5900;:6;;5908:12;5892:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5947:1;5943;:5;5936:12;;5727:240;;;;;:::o;48348:175::-;48389:7;48414:15;48431;48450:19;:17;:19::i;:::-;48413:56;;;;48491:20;48503:7;48491;:11;;:20;;;;:::i;:::-;48484:27;;;;48348:175;:::o;4585:98::-;4643:7;4674:1;4670;:5;;;;:::i;:::-;4663:12;;4585:98;;;;:::o;3448:::-;3506:7;3537:1;3533;:5;;;;:::i;:::-;3526:12;;3448:98;;;;:::o;47106:481::-;47165:7;47174;47183;47192;47201;47210;47235:23;47260:12;47274:13;47291:39;47303:7;47312;;47321:8;;47291:11;:39::i;:::-;47234:96;;;;;;47345:19;47368:10;:8;:10::i;:::-;47345:33;;47394:15;47411:23;47436:12;47452:39;47464:7;47473:4;47479:11;47452;:39::i;:::-;47393:98;;;;;;47514:7;47523:15;47540:4;47546:15;47563:4;47569:5;47506:69;;;;;;;;;;;;;;;;;;;47106:481;;;;;;;:::o;3829:98::-;3887:7;3918:1;3914;:5;;;;:::i;:::-;3907:12;;3829:98;;;;:::o;41702:656::-;33132:4;33123:6;;:13;;;;;;;;;;;;;;;;;;41847:21:::1;41885:1;41871:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41847:40;;41920:4;41902;41907:1;41902:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;41950:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41940:4;41945:1;41940:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;41989:62;42006:4;42021:15;42039:11;41989:8;:62::i;:::-;42098:15;:66;;;42183:11;42213:1;42261:4;42292;42316:15;42098:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33151:1;33176:5:::0;33167:6;;:14;;;;;;;;;;;;;;;;;;41702:656;:::o;13734:191::-;13808:16;13827:6;;;;;;;;;;;13808:25;;13853:8;13844:6;;:17;;;;;;;;;;;;;;;;;;13908:8;13877:40;;13898:8;13877:40;;;;;;;;;;;;13734:191;;:::o;42370:177::-;42432:17;;;;;;;;;;;:26;;:41;42459:13;42470:1;42459:6;:10;;:13;;;;:::i;:::-;42432:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42488:23;;;;;;;;;;;:32;;:47;42521:13;42532:1;42521:6;:10;;:13;;;;:::i;:::-;42488:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42370:177;:::o;43187:883::-;43303:7;43299:44;;43329:14;:12;:14::i;:::-;43299:44;43364:11;:19;43376:6;43364:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;43388:11;:22;43400:9;43388:22;;;;;;;;;;;;;;;;;;;;;;;;;43387:23;43364:46;43360:637;;;43431:48;43453:6;43461:9;43472:6;43431:21;:48::i;:::-;43360:637;;;43506:11;:19;43518:6;43506:19;;;;;;;;;;;;;;;;;;;;;;;;;43505:20;:46;;;;;43529:11;:22;43541:9;43529:22;;;;;;;;;;;;;;;;;;;;;;;;;43505:46;43501:496;;;43572:46;43592:6;43600:9;43611:6;43572:19;:46::i;:::-;43501:496;;;43645:11;:19;43657:6;43645:19;;;;;;;;;;;;;;;;;;;;;;;;;43644:20;:47;;;;;43669:11;:22;43681:9;43669:22;;;;;;;;;;;;;;;;;;;;;;;;;43668:23;43644:47;43640:357;;;43712:44;43730:6;43738:9;43749:6;43712:17;:44::i;:::-;43640:357;;;43782:11;:19;43794:6;43782:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;43805:11;:22;43817:9;43805:22;;;;;;;;;;;;;;;;;;;;;;;;;43782:45;43778:219;;;43848:48;43870:6;43878:9;43889:6;43848:21;:48::i;:::-;43778:219;;;43937:44;43955:6;43963:9;43974:6;43937:17;:44::i;:::-;43778:219;43640:357;43501:496;43360:637;44017:7;44013:45;;44043:15;:13;:15::i;:::-;44013:45;43187:883;;;;:::o;48535:595::-;48585:7;48594;48618:15;48636:7;;48618:25;;48658:15;48676:7;;48658:25;;48703:9;48698:305;48722:9;:16;;;;48718:1;:20;48698:305;;;48792:7;48768;:21;48776:9;48786:1;48776:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48768:21;;;;;;;;;;;;;;;;:31;:66;;;;48827:7;48803;:21;48811:9;48821:1;48811:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48803:21;;;;;;;;;;;;;;;;:31;48768:66;48764:97;;;48844:7;;48853;;48836:25;;;;;;;;;48764:97;48890:34;48902:7;:21;48910:9;48920:1;48910:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48902:21;;;;;;;;;;;;;;;;48890:7;:11;;:34;;;;:::i;:::-;48880:44;;48953:34;48965:7;:21;48973:9;48983:1;48973:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48965:21;;;;;;;;;;;;;;;;48953:7;:11;;:34;;;;:::i;:::-;48943:44;;48740:3;;;;;:::i;:::-;;;;48698:305;;;;49031:20;49043:7;;49031;;:11;;:20;;;;:::i;:::-;49021:7;:30;49017:61;;;49061:7;;49070;;49053:25;;;;;;;;49017:61;49101:7;49110;49093:25;;;;;;48535:595;;;:::o;47599:371::-;47692:7;47701;47710;47734:12;47749:28;47773:3;47749:19;47761:6;47749:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;47734:43;;47792:13;47808:29;47833:3;47808:20;47820:7;47808;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;47792:45;;47852:23;47878:28;47900:5;47878:17;47890:4;47878:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;47852:54;;47929:15;47946:4;47952:5;47921:37;;;;;;;;;47599:371;;;;;;;:::o;47982:354::-;48077:7;48086;48095;48119:15;48137:24;48149:11;48137:7;:11;;:24;;;;:::i;:::-;48119:42;;48176:12;48191:21;48200:11;48191:4;:8;;:21;;;;:::i;:::-;48176:36;;48227:23;48253:17;48265:4;48253:7;:11;;:17;;;;:::i;:::-;48227:43;;48293:7;48302:15;48319:4;48285:39;;;;;;;;;47982:354;;;;;;;:::o;38825:238::-;38886:1;38875:7;;:12;:29;;;;;38903:1;38891:8;;:13;38875:29;38872:41;;;38906:7;;38872:41;38947:7;;38929:15;:25;;;;38988:8;;38969:16;:27;;;;39023:1;39013:7;:11;;;;39050:1;39039:8;:12;;;;38825:238;:::o;45213:580::-;45320:15;45337:23;45362:12;45376:23;45401:12;45415:13;45432:19;45443:7;45432:10;:19::i;:::-;45319:132;;;;;;;;;;;;45484:28;45504:7;45484;:15;45492:6;45484:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45466:7;:15;45474:6;45466:15;;;;;;;;;;;;;;;:46;;;;45545:28;45565:7;45545;:15;45553:6;45545:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45527:7;:15;45535:6;45527:15;;;;;;;;;;;;;;;:46;;;;45609:39;45632:15;45609:7;:18;45617:9;45609:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45588:7;:18;45596:9;45588:18;;;;;;;;;;;;;;;:60;;;;45663:16;45673:5;45663:9;:16::i;:::-;45694:23;45706:4;45712;45694:11;:23::i;:::-;45754:9;45737:44;;45746:6;45737:44;;;45765:15;45737:44;;;;;;:::i;:::-;;;;;;;;45213:580;;;;;;;;;:::o;44609:592::-;44714:15;44731:23;44756:12;44770:23;44795:12;44809:13;44826:19;44837:7;44826:10;:19::i;:::-;44713:132;;;;;;;;;;;;44878:28;44898:7;44878;:15;44886:6;44878:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44860:7;:15;44868:6;44860:15;;;;;;;;;;;;;;;:46;;;;44942:39;44965:15;44942:7;:18;44950:9;44942:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44921:7;:18;44929:9;44921:18;;;;;;;;;;;;;;;:60;;;;45017:39;45040:15;45017:7;:18;45025:9;45017:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44996:7;:18;45004:9;44996:18;;;;;;;;;;;;;;;:60;;;;45071:16;45081:5;45071:9;:16::i;:::-;45102:23;45114:4;45120;45102:11;:23::i;:::-;45162:9;45145:44;;45154:6;45145:44;;;45173:15;45145:44;;;;;;:::i;:::-;;;;;;;;44609:592;;;;;;;;;:::o;44082:515::-;44185:15;44202:23;44227:12;44241:23;44266:12;44280:13;44297:19;44308:7;44297:10;:19::i;:::-;44184:132;;;;;;;;;;;;44349:28;44369:7;44349;:15;44357:6;44349:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44331:7;:15;44339:6;44331:15;;;;;;;;;;;;;;;:46;;;;44413:39;44436:15;44413:7;:18;44421:9;44413:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44392:7;:18;44400:9;44392:18;;;;;;;;;;;;;;;:60;;;;44467:16;44477:5;44467:9;:16::i;:::-;44498:23;44510:4;44516;44498:11;:23::i;:::-;44558:9;44541:44;;44550:6;44541:44;;;44569:15;44541:44;;;;;;:::i;:::-;;;;;;;;44082:515;;;;;;;;;:::o;45805:655::-;45912:15;45929:23;45954:12;45968:23;45993:12;46007:13;46024:19;46035:7;46024:10;:19::i;:::-;45911:132;;;;;;;;;;;;46076:28;46096:7;46076;:15;46084:6;46076:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;46058:7;:15;46066:6;46058:15;;;;;;;;;;;;;;;:46;;;;46137:28;46157:7;46137;:15;46145:6;46137:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;46119:7;:15;46127:6;46119:15;;;;;;;;;;;;;;;:46;;;;46201:39;46224:15;46201:7;:18;46209:9;46201:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;46180:7;:18;46188:9;46180:18;;;;;;;;;;;;;;;:60;;;;46276:39;46299:15;46276:7;:18;46284:9;46276:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;46255:7;:18;46263:9;46255:18;;;;;;;;;;;;;;;:60;;;;46330:16;46340:5;46330:9;:16::i;:::-;46361:23;46373:4;46379;46361:11;:23::i;:::-;46421:9;46404:44;;46413:6;46404:44;;;46432:15;46404:44;;;;;;:::i;:::-;;;;;;;;45805:655;;;;;;;;;:::o;39075:127::-;39133:15;;39123:7;:25;;;;39174:16;;39163:8;:27;;;;39075:127::o;4186:98::-;4244:7;4275:1;4271;:5;;;;:::i;:::-;4264:12;;4186:98;;;;:::o;46472:349::-;46529:19;46552:10;:8;:10::i;:::-;46529:33;;46577:13;46593:22;46603:11;46593:5;:9;;:22;;;;:::i;:::-;46577:38;;46655:33;46682:5;46655:7;:22;46671:4;46655:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46630:7;:22;46646:4;46630:22;;;;;;;;;;;;;;;:58;;;;46706:11;:26;46726:4;46706:26;;;;;;;;;;;;;;;;;;;;;;;;;46703:106;;;46776:33;46803:5;46776:7;:22;46792:4;46776:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46751:7;:22;46767:4;46751:22;;;;;;;;;;;;;;;:58;;;;46703:106;46472:349;;;:::o;46833:159::-;46915:17;46927:4;46915:7;;:11;;:17;;;;:::i;:::-;46905:7;:27;;;;46960:20;46975:4;46960:10;;:14;;:20;;;;:::i;:::-;46947:10;:33;;;;46833:159;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;511:84;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;653:87;;;;:::o;746:262::-;805:6;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::-;1084:6;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::-;1371:6;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::-;1656:6;1664;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::-;2078:6;2086;2094;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::-;2624:6;2632;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::-;3034:6;3042;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::-;3435:6;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::-;3700:6;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::-;3974:6;3982;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::-;4385:10;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::-;5036:3;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::-;6202:3;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:366::-;6626:3;6647:67;6711:2;6706:3;6647:67;:::i;:::-;6640:74;;6723:93;6812:3;6723:93;:::i;:::-;6841:2;6836:3;6832:12;6825:19;;6630:220;;;:::o;6856:366::-;6998:3;7019:67;7083:2;7078:3;7019:67;:::i;:::-;7012:74;;7095:93;7184:3;7095:93;:::i;:::-;7213:2;7208:3;7204:12;7197:19;;7002:220;;;:::o;7228:366::-;7370:3;7391:67;7455:2;7450:3;7391:67;:::i;:::-;7384:74;;7467:93;7556:3;7467:93;:::i;:::-;7585:2;7580:3;7576:12;7569:19;;7374:220;;;:::o;7600:366::-;7742:3;7763:67;7827:2;7822:3;7763:67;:::i;:::-;7756:74;;7839:93;7928:3;7839:93;:::i;:::-;7957:2;7952:3;7948:12;7941:19;;7746:220;;;:::o;7972:366::-;8114:3;8135:67;8199:2;8194:3;8135:67;:::i;:::-;8128:74;;8211:93;8300:3;8211:93;:::i;:::-;8329:2;8324:3;8320:12;8313:19;;8118:220;;;:::o;8344:366::-;8486:3;8507:67;8571:2;8566:3;8507:67;:::i;:::-;8500:74;;8583:93;8672:3;8583:93;:::i;:::-;8701:2;8696:3;8692:12;8685:19;;8490:220;;;:::o;8716:366::-;8858:3;8879:67;8943:2;8938:3;8879:67;:::i;:::-;8872:74;;8955:93;9044:3;8955:93;:::i;:::-;9073:2;9068:3;9064:12;9057:19;;8862:220;;;:::o;9088:366::-;9230:3;9251:67;9315:2;9310:3;9251:67;:::i;:::-;9244:74;;9327:93;9416:3;9327:93;:::i;:::-;9445:2;9440:3;9436:12;9429:19;;9234:220;;;:::o;9460:366::-;9602:3;9623:67;9687:2;9682:3;9623:67;:::i;:::-;9616:74;;9699:93;9788:3;9699:93;:::i;:::-;9817:2;9812:3;9808:12;9801:19;;9606:220;;;:::o;9832:366::-;9974:3;9995:67;10059:2;10054:3;9995:67;:::i;:::-;9988:74;;10071:93;10160:3;10071:93;:::i;:::-;10189:2;10184:3;10180:12;10173:19;;9978:220;;;:::o;10204:366::-;10346:3;10367:67;10431:2;10426:3;10367:67;:::i;:::-;10360:74;;10443:93;10532:3;10443:93;:::i;:::-;10561:2;10556:3;10552:12;10545:19;;10350:220;;;:::o;10576:366::-;10718:3;10739:67;10803:2;10798:3;10739:67;:::i;:::-;10732:74;;10815:93;10904:3;10815:93;:::i;:::-;10933:2;10928:3;10924:12;10917:19;;10722:220;;;:::o;10948:366::-;11090:3;11111:67;11175:2;11170:3;11111:67;:::i;:::-;11104:74;;11187:93;11276:3;11187:93;:::i;:::-;11305:2;11300:3;11296:12;11289:19;;11094:220;;;:::o;11320:366::-;11462:3;11483:67;11547:2;11542:3;11483:67;:::i;:::-;11476:74;;11559:93;11648:3;11559:93;:::i;:::-;11677:2;11672:3;11668:12;11661:19;;11466:220;;;:::o;11692:366::-;11834:3;11855:67;11919:2;11914:3;11855:67;:::i;:::-;11848:74;;11931:93;12020:3;11931:93;:::i;:::-;12049:2;12044:3;12040:12;12033:19;;11838:220;;;:::o;12064:366::-;12206:3;12227:67;12291:2;12286:3;12227:67;:::i;:::-;12220:74;;12303:93;12392:3;12303:93;:::i;:::-;12421:2;12416:3;12412:12;12405:19;;12210:220;;;:::o;12436:118::-;12523:24;12541:5;12523:24;:::i;:::-;12518:3;12511:37;12501:53;;:::o;12560:112::-;12643:22;12659:5;12643:22;:::i;:::-;12638:3;12631:35;12621:51;;:::o;12678:222::-;12771:4;12809:2;12798:9;12794:18;12786:26;;12822:71;12890:1;12879:9;12875:17;12866:6;12822:71;:::i;:::-;12776:124;;;;:::o;12906:254::-;13015:4;13053:2;13042:9;13038:18;13030:26;;13066:87;13150:1;13139:9;13135:17;13126:6;13066:87;:::i;:::-;13020:140;;;;:::o;13166:210::-;13253:4;13291:2;13280:9;13276:18;13268:26;;13304:65;13366:1;13355:9;13351:17;13342:6;13304:65;:::i;:::-;13258:118;;;;:::o;13382:276::-;13502:4;13540:2;13529:9;13525:18;13517:26;;13553:98;13648:1;13637:9;13633:17;13624:6;13553:98;:::i;:::-;13507:151;;;;:::o;13664:313::-;13777:4;13815:2;13804:9;13800:18;13792:26;;13864:9;13858:4;13854:20;13850:1;13839:9;13835:17;13828:47;13892:78;13965:4;13956:6;13892:78;:::i;:::-;13884:86;;13782:195;;;;:::o;13983:419::-;14149:4;14187:2;14176:9;14172:18;14164:26;;14236:9;14230:4;14226:20;14222:1;14211:9;14207:17;14200:47;14264:131;14390:4;14264:131;:::i;:::-;14256:139;;14154:248;;;:::o;14408:419::-;14574:4;14612:2;14601:9;14597:18;14589:26;;14661:9;14655:4;14651:20;14647:1;14636:9;14632:17;14625:47;14689:131;14815:4;14689:131;:::i;:::-;14681:139;;14579:248;;;:::o;14833:419::-;14999:4;15037:2;15026:9;15022:18;15014:26;;15086:9;15080:4;15076:20;15072:1;15061:9;15057:17;15050:47;15114:131;15240:4;15114:131;:::i;:::-;15106:139;;15004:248;;;:::o;15258:419::-;15424:4;15462:2;15451:9;15447:18;15439:26;;15511:9;15505:4;15501:20;15497:1;15486:9;15482:17;15475:47;15539:131;15665:4;15539:131;:::i;:::-;15531:139;;15429:248;;;:::o;15683:419::-;15849:4;15887:2;15876:9;15872:18;15864:26;;15936:9;15930:4;15926:20;15922:1;15911:9;15907:17;15900:47;15964:131;16090:4;15964:131;:::i;:::-;15956:139;;15854:248;;;:::o;16108:419::-;16274:4;16312:2;16301:9;16297:18;16289:26;;16361:9;16355:4;16351:20;16347:1;16336:9;16332:17;16325:47;16389:131;16515:4;16389:131;:::i;:::-;16381:139;;16279:248;;;:::o;16533:419::-;16699:4;16737:2;16726:9;16722:18;16714:26;;16786:9;16780:4;16776:20;16772:1;16761:9;16757:17;16750:47;16814:131;16940:4;16814:131;:::i;:::-;16806:139;;16704:248;;;:::o;16958:419::-;17124:4;17162:2;17151:9;17147:18;17139:26;;17211:9;17205:4;17201:20;17197:1;17186:9;17182:17;17175:47;17239:131;17365:4;17239:131;:::i;:::-;17231:139;;17129:248;;;:::o;17383:419::-;17549:4;17587:2;17576:9;17572:18;17564:26;;17636:9;17630:4;17626:20;17622:1;17611:9;17607:17;17600:47;17664:131;17790:4;17664:131;:::i;:::-;17656:139;;17554:248;;;:::o;17808:419::-;17974:4;18012:2;18001:9;17997:18;17989:26;;18061:9;18055:4;18051:20;18047:1;18036:9;18032:17;18025:47;18089:131;18215:4;18089:131;:::i;:::-;18081:139;;17979:248;;;:::o;18233:419::-;18399:4;18437:2;18426:9;18422:18;18414:26;;18486:9;18480:4;18476:20;18472:1;18461:9;18457:17;18450:47;18514:131;18640:4;18514:131;:::i;:::-;18506:139;;18404:248;;;:::o;18658:419::-;18824:4;18862:2;18851:9;18847:18;18839:26;;18911:9;18905:4;18901:20;18897:1;18886:9;18882:17;18875:47;18939:131;19065:4;18939:131;:::i;:::-;18931:139;;18829:248;;;:::o;19083:419::-;19249:4;19287:2;19276:9;19272:18;19264:26;;19336:9;19330:4;19326:20;19322:1;19311:9;19307:17;19300:47;19364:131;19490:4;19364:131;:::i;:::-;19356:139;;19254:248;;;:::o;19508:419::-;19674:4;19712:2;19701:9;19697:18;19689:26;;19761:9;19755:4;19751:20;19747:1;19736:9;19732:17;19725:47;19789:131;19915:4;19789:131;:::i;:::-;19781:139;;19679:248;;;:::o;19933:419::-;20099:4;20137:2;20126:9;20122:18;20114:26;;20186:9;20180:4;20176:20;20172:1;20161:9;20157:17;20150:47;20214:131;20340:4;20214:131;:::i;:::-;20206:139;;20104:248;;;:::o;20358:419::-;20524:4;20562:2;20551:9;20547:18;20539:26;;20611:9;20605:4;20601:20;20597:1;20586:9;20582:17;20575:47;20639:131;20765:4;20639:131;:::i;:::-;20631:139;;20529:248;;;:::o;20783:222::-;20876:4;20914:2;20903:9;20899:18;20891:26;;20927:71;20995:1;20984:9;20980:17;20971:6;20927:71;:::i;:::-;20881:124;;;;:::o;21011:831::-;21274:4;21312:3;21301:9;21297:19;21289:27;;21326:71;21394:1;21383:9;21379:17;21370:6;21326:71;:::i;:::-;21407:80;21483:2;21472:9;21468:18;21459:6;21407:80;:::i;:::-;21534:9;21528:4;21524:20;21519:2;21508:9;21504:18;21497:48;21562:108;21665:4;21656:6;21562:108;:::i;:::-;21554:116;;21680:72;21748:2;21737:9;21733:18;21724:6;21680:72;:::i;:::-;21762:73;21830:3;21819:9;21815:19;21806:6;21762:73;:::i;:::-;21279:563;;;;;;;;:::o;21848:214::-;21937:4;21975:2;21964:9;21960:18;21952:26;;21988:67;22052:1;22041:9;22037:17;22028:6;21988:67;:::i;:::-;21942:120;;;;:::o;22068:132::-;22135:4;22158:3;22150:11;;22188:4;22183:3;22179:14;22171:22;;22140:60;;;:::o;22206:114::-;22273:6;22307:5;22301:12;22291:22;;22280:40;;;:::o;22326:99::-;22378:6;22412:5;22406:12;22396:22;;22385:40;;;:::o;22431:113::-;22501:4;22533;22528:3;22524:14;22516:22;;22506:38;;;:::o;22550:184::-;22649:11;22683:6;22678:3;22671:19;22723:4;22718:3;22714:14;22699:29;;22661:73;;;;:::o;22740:169::-;22824:11;22858:6;22853:3;22846:19;22898:4;22893:3;22889:14;22874:29;;22836:73;;;;:::o;22915:305::-;22955:3;22974:20;22992:1;22974:20;:::i;:::-;22969:25;;23008:20;23026:1;23008:20;:::i;:::-;23003:25;;23162:1;23094:66;23090:74;23087:1;23084:81;23081:2;;;23168:18;;:::i;:::-;23081:2;23212:1;23209;23205:9;23198:16;;22959:261;;;;:::o;23226:185::-;23266:1;23283:20;23301:1;23283:20;:::i;:::-;23278:25;;23317:20;23335:1;23317:20;:::i;:::-;23312:25;;23356:1;23346:2;;23361:18;;:::i;:::-;23346:2;23403:1;23400;23396:9;23391:14;;23268:143;;;;:::o;23417:348::-;23457:7;23480:20;23498:1;23480:20;:::i;:::-;23475:25;;23514:20;23532:1;23514:20;:::i;:::-;23509:25;;23702:1;23634:66;23630:74;23627:1;23624:81;23619:1;23612:9;23605:17;23601:105;23598:2;;;23709:18;;:::i;:::-;23598:2;23757:1;23754;23750:9;23739:20;;23465:300;;;;:::o;23771:191::-;23811:4;23831:20;23849:1;23831:20;:::i;:::-;23826:25;;23865:20;23883:1;23865:20;:::i;:::-;23860:25;;23904:1;23901;23898:8;23895:2;;;23909:18;;:::i;:::-;23895:2;23954:1;23951;23947:9;23939:17;;23816:146;;;;:::o;23968:96::-;24005:7;24034:24;24052:5;24034:24;:::i;:::-;24023:35;;24013:51;;;:::o;24070:104::-;24115:7;24144:24;24162:5;24144:24;:::i;:::-;24133:35;;24123:51;;;:::o;24180:90::-;24214:7;24257:5;24250:13;24243:21;24232:32;;24222:48;;;:::o;24276:126::-;24313:7;24353:42;24346:5;24342:54;24331:65;;24321:81;;;:::o;24408:77::-;24445:7;24474:5;24463:16;;24453:32;;;:::o;24491:86::-;24526:7;24566:4;24559:5;24555:16;24544:27;;24534:43;;;:::o;24583:180::-;24660:9;24693:64;24751:5;24693:64;:::i;:::-;24680:77;;24670:93;;;:::o;24769:140::-;24846:9;24879:24;24897:5;24879:24;:::i;:::-;24866:37;;24856:53;;;:::o;24915:121::-;24973:9;25006:24;25024:5;25006:24;:::i;:::-;24993:37;;24983:53;;;:::o;25042:307::-;25110:1;25120:113;25134:6;25131:1;25128:13;25120:113;;;25219:1;25214:3;25210:11;25204:18;25200:1;25195:3;25191:11;25184:39;25156:2;25153:1;25149:10;25144:15;;25120:113;;;25251:6;25248:1;25245:13;25242:2;;;25331:1;25322:6;25317:3;25313:16;25306:27;25242:2;25091:258;;;;:::o;25355:320::-;25399:6;25436:1;25430:4;25426:12;25416:22;;25483:1;25477:4;25473:12;25504:18;25494:2;;25560:4;25552:6;25548:17;25538:27;;25494:2;25622;25614:6;25611:14;25591:18;25588:38;25585:2;;;25641:18;;:::i;:::-;25585:2;25406:269;;;;:::o;25681:233::-;25720:3;25743:24;25761:5;25743:24;:::i;:::-;25734:33;;25789:66;25782:5;25779:77;25776:2;;;25859:18;;:::i;:::-;25776:2;25906:1;25899:5;25895:13;25888:20;;25724:190;;;:::o;25920:180::-;25968:77;25965:1;25958:88;26065:4;26062:1;26055:15;26089:4;26086:1;26079:15;26106:180;26154:77;26151:1;26144:88;26251:4;26248:1;26241:15;26275:4;26272:1;26265:15;26292:180;26340:77;26337:1;26330:88;26437:4;26434:1;26427:15;26461:4;26458:1;26451:15;26478:102;26519:6;26570:2;26566:7;26561:2;26554:5;26550:14;26546:28;26536:38;;26526:54;;;:::o;26586:222::-;26726:34;26722:1;26714:6;26710:14;26703:58;26795:5;26790:2;26782:6;26778:15;26771:30;26692:116;:::o;26814:229::-;26954:34;26950:1;26942:6;26938:14;26931:58;27023:12;27018:2;27010:6;27006:15;26999:37;26920:123;:::o;27049:225::-;27189:34;27185:1;27177:6;27173:14;27166:58;27258:8;27253:2;27245:6;27241:15;27234:33;27155:119;:::o;27280:221::-;27420:34;27416:1;27408:6;27404:14;27397:58;27489:4;27484:2;27476:6;27472:15;27465:29;27386:115;:::o;27507:177::-;27647:29;27643:1;27635:6;27631:14;27624:53;27613:71;:::o;27690:177::-;27830:29;27826:1;27818:6;27814:14;27807:53;27796:71;:::o;27873:239::-;28013:34;28009:1;28001:6;27997:14;27990:58;28082:22;28077:2;28069:6;28065:15;28058:47;27979:133;:::o;28118:181::-;28258:33;28254:1;28246:6;28242:14;28235:57;28224:75;:::o;28305:227::-;28445:34;28441:1;28433:6;28429:14;28422:58;28514:10;28509:2;28501:6;28497:15;28490:35;28411:121;:::o;28538:182::-;28678:34;28674:1;28666:6;28662:14;28655:58;28644:76;:::o;28726:228::-;28866:34;28862:1;28854:6;28850:14;28843:58;28935:11;28930:2;28922:6;28918:15;28911:36;28832:122;:::o;28960:224::-;29100:34;29096:1;29088:6;29084:14;29077:58;29169:7;29164:2;29156:6;29152:15;29145:32;29066:118;:::o;29190:223::-;29330:34;29326:1;29318:6;29314:14;29307:58;29399:6;29394:2;29386:6;29382:15;29375:31;29296:117;:::o;29419:176::-;29559:28;29555:1;29547:6;29543:14;29536:52;29525:70;:::o;29601:221::-;29741:34;29737:1;29729:6;29725:14;29718:58;29810:4;29805:2;29797:6;29793:15;29786:29;29707:115;:::o;29828:231::-;29968:34;29964:1;29956:6;29952:14;29945:58;30037:14;30032:2;30024:6;30020:15;30013:39;29934:125;:::o;30065:122::-;30138:24;30156:5;30138:24;:::i;:::-;30131:5;30128:35;30118:2;;30177:1;30174;30167:12;30118:2;30108:79;:::o;30193:138::-;30274:32;30300:5;30274:32;:::i;:::-;30267:5;30264:43;30254:2;;30321:1;30318;30311:12;30254:2;30244:87;:::o;30337:116::-;30407:21;30422:5;30407:21;:::i;:::-;30400:5;30397:32;30387:2;;30443:1;30440;30433:12;30387:2;30377:76;:::o;30459:122::-;30532:24;30550:5;30532:24;:::i;:::-;30525:5;30522:35;30512:2;;30571:1;30568;30561:12;30512:2;30502:79;:::o
Swarm Source
ipfs://a70c15e815386707f1722b17ace990ebd385ac3efe4e5282974dfa761547d200
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.