ERC-20
Overview
Max Total Supply
1,000,000,000,000 $MSC
Holders
52
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1,812,826,778.460593553 $MSCValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
MultiStableCapital
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-27 */ /** *Submitted for verification at Etherscan.io on 2021-11-27 */ // Vari-Stable Capital: $MSC // 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 $MSC holders. //Initial Supply: 1,000,000,000,000 $MSC //50% of $MSC 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: https://twitter.com/MultiStableCap // Website: https://twitter.com/MultiStableCap // Telegram: https://t.me/MultiStableCapital 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: https://twitter.com/VariStableCap // Website: https://varistablecapital.link/ // Medium: https://varistablecapital.medium.com/ // Telegram: https://t.me/varistablecapital 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 MultiStableCapital 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 = 'MultiStableCapital'; string private _symbol = '$MSC'; 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
60c0604052683635c9adc5dea0000060075560075460001962000023919062000946565b60001962000032919062000883565b6008556040518060400160405280601281526020017f4d756c7469537461626c654361706974616c0000000000000000000000000000815250600a908051906020019062000082929190620006cc565b506040518060400160405280600481526020017f244d534300000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000d0929190620006cc565b506009600c60006101000a81548160ff021916908360ff160217905550600a600d55600a600e55600d54600f55600e546010556000601260146101000a81548160ff0219169083151502179055506001601260156101000a81548160ff02191690831515021790555069152d02c7e14af680000060135565048c273950006014553480156200015e57600080fd5b5060405162005988380380620059888339818101604052810190620001849190620007d6565b620001a462000198620005d760201b60201c565b620005df60201b60201c565b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600160006200023d620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002db57600080fd5b505afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003169190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037957600080fd5b505afa1580156200038e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b49190620007aa565b6040518363ffffffff1660e01b8152600401620003d392919062000839565b602060405180830381600087803b158015620003ee57600080fd5b505af115801562000403573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004299190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160046000620004ac620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000565620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620005c6919062000866565b60405180910390a350505062000a3f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620006da9062000910565b90600052602060002090601f016020900481019282620006fe57600085556200074a565b82601f106200071957805160ff19168380011785556200074a565b828001600101855582156200074a579182015b82811115620007495782518255916020019190600101906200072c565b5b5090506200075991906200075d565b5090565b5b80821115620007785760008160009055506001016200075e565b5090565b6000815190506200078d8162000a0b565b92915050565b600081519050620007a48162000a25565b92915050565b600060208284031215620007bd57600080fd5b6000620007cd848285016200077c565b91505092915050565b60008060408385031215620007ea57600080fd5b6000620007fa8582860162000793565b92505060206200080d8582860162000793565b9150509250929050565b6200082281620008be565b82525050565b620008338162000906565b82525050565b600060408201905062000850600083018562000817565b6200085f602083018462000817565b9392505050565b60006020820190506200087d600083018462000828565b92915050565b6000620008908262000906565b91506200089d8362000906565b925082821015620008b357620008b26200097e565b5b828203905092915050565b6000620008cb82620008e6565b9050919050565b6000620008df82620008e6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200092957607f821691505b6020821081141562000940576200093f620009dc565b5b50919050565b6000620009538262000906565b9150620009608362000906565b925082620009735762000972620009ad565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000a1681620008be565b811462000a2257600080fd5b50565b62000a3081620008d2565b811462000a3c57600080fd5b50565b60805160601c60a05160601c614f0162000a8760003960008181610f91015261243f01526000818161095d015281816127aa015281816128c001526128e70152614f016000f3fe6080604052600436106102135760003560e01c80635880b87311610118578063c0072488116100a0578063f2cc0c181161006f578063f2cc0c18146107e4578063f2fde38b1461080d578063f429389014610836578063f815a8421461084d578063f84354f1146108785761021a565b8063c007248814610718578063cba0e99614610741578063dd62ed3e1461077e578063e01af92c146107bb5761021a565b80638da5cb5b116100e75780638da5cb5b1461061f57806395d89b411461064a578063a457c2d714610675578063a9059cbb146106b2578063af9549e0146106ef5761021a565b80635880b873146105775780636ddd1713146105a057806370a08231146105cb578063715018a6146106085761021a565b80632d8381191161019b5780634144d9e41161016a5780634144d9e4146104905780634549b039146104bb57806349bd5a5e146104f857806351bc3c85146105235780635342acb41461053a5761021a565b80632d838119146103c2578063313ce567146103ff578063395093511461042a5780633bd5d173146104675761021a565b806318160ddd116101e257806318160ddd146102dd5780631bbae6e01461030857806323b872dd14610331578063286671621461036e5780632abe39ec146103975761021a565b806306fdde031461021f578063095ea7b31461024a57806313114a9d146102875780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108a1565b604051610241919061481d565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c919061401e565b610933565b60405161027e91906147e7565b60405180910390f35b34801561029357600080fd5b5061029c610951565b6040516102a99190614a3f565b60405180910390f35b3480156102be57600080fd5b506102c761095b565b6040516102d49190614802565b60405180910390f35b3480156102e957600080fd5b506102f261097f565b6040516102ff9190614a3f565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190614083565b610989565b005b34801561033d57600080fd5b5061035860048036038101906103539190613f93565b610a5c565b60405161036591906147e7565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190614083565b610b35565b005b3480156103a357600080fd5b506103ac610c0c565b6040516103b991906147cc565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190614083565b610c32565b6040516103f69190614a3f565b60405180910390f35b34801561040b57600080fd5b50610414610ca0565b6040516104219190614ab4565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c919061401e565b610cb7565b60405161045e91906147e7565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190614083565b610d6a565b005b34801561049c57600080fd5b506104a5610ee5565b6040516104b291906147cc565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906140ac565b610f0b565b6040516104ef9190614a3f565b60405180910390f35b34801561050457600080fd5b5061050d610f8f565b60405161051a91906147b1565b60405180910390f35b34801561052f57600080fd5b50610538610fb3565b005b34801561054657600080fd5b50610561600480360381019061055c9190613edc565b611048565b60405161056e91906147e7565b60405180910390f35b34801561058357600080fd5b5061059e60048036038101906105999190614083565b61109e565b005b3480156105ac57600080fd5b506105b5611175565b6040516105c291906147e7565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613edc565b611188565b6040516105ff9190614a3f565b60405180910390f35b34801561061457600080fd5b5061061d611273565b005b34801561062b57600080fd5b506106346112fb565b60405161064191906147b1565b60405180910390f35b34801561065657600080fd5b5061065f611324565b60405161066c919061481d565b60405180910390f35b34801561068157600080fd5b5061069c6004803603810190610697919061401e565b6113b6565b6040516106a991906147e7565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d4919061401e565b611483565b6040516106e691906147e7565b60405180910390f35b3480156106fb57600080fd5b5061071660048036038101906107119190613fe2565b6114a1565b005b34801561072457600080fd5b5061073f600480360381019061073a9190613f2e565b611578565b005b34801561074d57600080fd5b5061076860048036038101906107639190613edc565b611638565b60405161077591906147e7565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613f57565b61168e565b6040516107b29190614a3f565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd919061405a565b611715565b005b3480156107f057600080fd5b5061080b60048036038101906108069190613edc565b6117ae565b005b34801561081957600080fd5b50610834600480360381019061082f9190613edc565b611acc565b005b34801561084257600080fd5b5061084b611bc4565b005b34801561085957600080fd5b50610862611c51565b60405161086f9190614a3f565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613edc565b611c59565b005b6060600a80546108b090614d09565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614d09565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b5050505050905090565b6000610947610940612027565b848461202f565b6001905092915050565b6000600954905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b610991612027565b73ffffffffffffffffffffffffffffffffffffffff166109af6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc9061495f565b60405180910390fd5b69152d02c7e14af6800000811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a49906148ff565b60405180910390fd5b8060138190555050565b6000610a698484846121fa565b610b2a84610a75612027565b610b2585604051806060016040528060288152602001614e7f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adb612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b600190509392505050565b610b3d612027565b73ffffffffffffffffffffffffffffffffffffffff16610b5b6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba89061495f565b60405180910390fd5b60018110158015610bc3575060198111155b610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf9906148bf565b60405180910390fd5b80600e8190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600854821115610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c709061485f565b60405180910390fd5b6000610c836125d0565b9050610c9881846125fb90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610d60610cc4612027565b84610d5b8560036000610cd5612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b61202f565b6001905092915050565b6000610d74612027565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90614a1f565b60405180910390fd5b6000610e0e83612627565b50505050509050610e6781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ebf8160085461268e90919063ffffffff16565b600881905550610eda8360095461261190919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754831115610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f499061491f565b60405180910390fd5b81610f72576000610f6284612627565b5050505050905080915050610f89565b6000610f7d84612627565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610fbb612027565b73ffffffffffffffffffffffffffffffffffffffff16610fd96112fb565b73ffffffffffffffffffffffffffffffffffffffff161461102f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110269061495f565b60405180910390fd5b600061103a30611188565b9050611045816126a4565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110a6612027565b73ffffffffffffffffffffffffffffffffffffffff166110c46112fb565b73ffffffffffffffffffffffffffffffffffffffff161461111a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111119061495f565b60405180910390fd5b6001811015801561112c575060198111155b61116b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611162906149df565b60405180910390fd5b80600d8190555050565b601260159054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561122357600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061126e565b61126b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c32565b90505b919050565b61127b612027565b73ffffffffffffffffffffffffffffffffffffffff166112996112fb565b73ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e69061495f565b60405180910390fd5b6112f96000612998565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461133390614d09565b80601f016020809104026020016040519081016040528092919081815260200182805461135f90614d09565b80156113ac5780601f10611381576101008083540402835291602001916113ac565b820191906000526020600020905b81548152906001019060200180831161138f57829003601f168201915b5050505050905090565b60006114796113c3612027565b8461147485604051806060016040528060258152602001614ea760259139600360006113ed612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b6001905092915050565b6000611497611490612027565b84846121fa565b6001905092915050565b6114a9612027565b73ffffffffffffffffffffffffffffffffffffffff166114c76112fb565b73ffffffffffffffffffffffffffffffffffffffff161461151d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115149061495f565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611580612027565b73ffffffffffffffffffffffffffffffffffffffff1661159e6112fb565b73ffffffffffffffffffffffffffffffffffffffff16146115f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb9061495f565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61171d612027565b73ffffffffffffffffffffffffffffffffffffffff1661173b6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117889061495f565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6117b6612027565b73ffffffffffffffffffffffffffffffffffffffff166117d46112fb565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118219061495f565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a4906149ff565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611931906148df565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a0e576119ca600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c32565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4612027565b73ffffffffffffffffffffffffffffffffffffffff16611af26112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f9061495f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf9061487f565b60405180910390fd5b611bc181612998565b50565b611bcc612027565b73ffffffffffffffffffffffffffffffffffffffff16611bea6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c379061495f565b60405180910390fd5b6000479050611c4e81612a5c565b50565b600047905090565b611c61612027565b73ffffffffffffffffffffffffffffffffffffffff16611c7f6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc9061495f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d58906148df565b60405180910390fd5b60005b600680549050811015612023578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611dc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156120105760066001600680549050611e1d9190614c05565b81548110611e54577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611eb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611fd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612023565b808061201b90614d3b565b915050611d64565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561209f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612096906149bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121069061489f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121ed9190614a3f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561226a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122619061499f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d19061483f565b60405180910390fd5b6000811161231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123149061497f565b60405180910390fd5b6123256112fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561239357506123636112fb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123de576013548111156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d49061493f565b60405180910390fd5b5b60006123e930611188565b905060135481106123fa5760135490505b60006014548210159050601260149054906101000a900460ff1615801561242d5750601260159054906101000a900460ff165b80156124365750805b801561248e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124b65761249c826126a4565b600047905060008111156124b4576124b347612a5c565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061255d5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561256757600090505b61257386868684612b57565b505050505050565b60008383111582906125c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ba919061481d565b60405180910390fd5b5082840390509392505050565b60008060006125dd612e68565b915091506125f481836125fb90919063ffffffff16565b9250505090565b600081836126099190614b7a565b905092915050565b6000818361261f9190614b24565b905092915050565b60008060008060008060008060006126448a600d54600e546131b3565b92509250925060006126546125d0565b905060008060006126668e8786613249565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000818361269c9190614c05565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612702577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156127305781602001602082028036833780820191505090505b509050308160008151811061276e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561280e57600080fd5b505afa158015612822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128469190613f05565b81600181518110612880577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128e5307f00000000000000000000000000000000000000000000000000000000000000008461202f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612947959493929190614a5a565b600060405180830381600087803b15801561296157600080fd5b505af1158015612975573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612aac6002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612ad7573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612b286002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612b53573d6000803e3d6000fd5b5050565b80612b6557612b646132a7565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c085750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c1d57612c188484846132ea565b612e54565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cc05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cd557612cd084848461354a565b612e53565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d795750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d8e57612d898484846137aa565b612e52565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e305750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e4557612e40848484613975565b612e51565b612e508484846137aa565b5b5b5b5b80612e6257612e61613c6a565b5b50505050565b600080600060085490506000600754905060005b60068054905081101561317657826001600060068481548110612ec8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612fdc5750816002600060068481548110612f74577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ff357600854600754945094505050506131af565b6130a96001600060068481548110613034577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461268e90919063ffffffff16565b925061316160026000600684815481106130ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361268e90919063ffffffff16565b9150808061316e90614d3b565b915050612e7c565b5061318e6007546008546125fb90919063ffffffff16565b8210156131a6576008546007549350935050506131af565b81819350935050505b9091565b6000806000806131df60646131d1888a613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061320960646131fb888b613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061323282613224858c61268e90919063ffffffff16565b61268e90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806132628588613c7e90919063ffffffff16565b905060006132798688613c7e90919063ffffffff16565b90506000613290828461268e90919063ffffffff16565b905082818395509550955050505093509350939050565b6000600d541480156132bb57506000600e54145b156132c5576132e8565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806132fc87612627565b95509550955095509550955061335a87600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133ef86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061348485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134d081613c94565b6134da8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516135379190614a3f565b60405180910390a3505050505050505050565b60008060008060008061355c87612627565b9550955095509550955095506135ba86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136e485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061373081613c94565b61373a8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516137979190614a3f565b60405180910390a3505050505050505050565b6000806000806000806137bc87612627565b95509550955095509550955061381a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138af85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fb81613c94565b6139058483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139629190614a3f565b60405180910390a3505050505050505050565b60008060008060008061398787612627565b9550955095509550955095506139e587600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ba485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bf081613c94565b613bfa8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c579190614a3f565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008183613c8c9190614bab565b905092915050565b6000613c9e6125d0565b90506000613cb58284613c7e90919063ffffffff16565b9050613d0981600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e3457613df083600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613e4e8260085461268e90919063ffffffff16565b600881905550613e698160095461261190919063ffffffff16565b6009819055505050565b600081359050613e8281614e22565b92915050565b600081519050613e9781614e22565b92915050565b600081359050613eac81614e39565b92915050565b600081359050613ec181614e50565b92915050565b600081359050613ed681614e67565b92915050565b600060208284031215613eee57600080fd5b6000613efc84828501613e73565b91505092915050565b600060208284031215613f1757600080fd5b6000613f2584828501613e88565b91505092915050565b600060208284031215613f4057600080fd5b6000613f4e84828501613e9d565b91505092915050565b60008060408385031215613f6a57600080fd5b6000613f7885828601613e73565b9250506020613f8985828601613e73565b9150509250929050565b600080600060608486031215613fa857600080fd5b6000613fb686828701613e73565b9350506020613fc786828701613e73565b9250506040613fd886828701613ec7565b9150509250925092565b60008060408385031215613ff557600080fd5b600061400385828601613e73565b925050602061401485828601613eb2565b9150509250929050565b6000806040838503121561403157600080fd5b600061403f85828601613e73565b925050602061405085828601613ec7565b9150509250929050565b60006020828403121561406c57600080fd5b600061407a84828501613eb2565b91505092915050565b60006020828403121561409557600080fd5b60006140a384828501613ec7565b91505092915050565b600080604083850312156140bf57600080fd5b60006140cd85828601613ec7565b92505060206140de85828601613eb2565b9150509250929050565b60006140f4838361410f565b60208301905092915050565b61410981614c4b565b82525050565b61411881614c39565b82525050565b61412781614c39565b82525050565b600061413882614adf565b6141428185614b02565b935061414d83614acf565b8060005b8381101561417e57815161416588826140e8565b975061417083614af5565b925050600181019050614151565b5085935050505092915050565b61419481614c5d565b82525050565b6141a381614ca0565b82525050565b6141b281614cc4565b82525050565b60006141c382614aea565b6141cd8185614b13565b93506141dd818560208601614cd6565b6141e681614e11565b840191505092915050565b60006141fe602383614b13565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614264602a83614b13565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b60006142ca602683614b13565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614330602283614b13565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614396601b83614b13565b91507f7465616d4665652073686f756c6420626520696e2031202d20323500000000006000830152602082019050919050565b60006143d6601b83614b13565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000614416603483614b13565b91507f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008301527f616e2031303030303030303030303030303065390000000000000000000000006020830152604082019050919050565b600061447c601f83614b13565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b60006144bc602883614b13565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614522602083614b13565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000614562602983614b13565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b60006145c8602583614b13565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061462e602483614b13565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614694601a83614b13565b91507f7461784665652073686f756c6420626520696e2031202d2032350000000000006000830152602082019050919050565b60006146d4602283614b13565b91507f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008301527f722e0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061473a602c83614b13565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b61479c81614c89565b82525050565b6147ab81614c93565b82525050565b60006020820190506147c6600083018461411e565b92915050565b60006020820190506147e16000830184614100565b92915050565b60006020820190506147fc600083018461418b565b92915050565b6000602082019050614817600083018461419a565b92915050565b6000602082019050818103600083015261483781846141b8565b905092915050565b60006020820190508181036000830152614858816141f1565b9050919050565b6000602082019050818103600083015261487881614257565b9050919050565b60006020820190508181036000830152614898816142bd565b9050919050565b600060208201905081810360008301526148b881614323565b9050919050565b600060208201905081810360008301526148d881614389565b9050919050565b600060208201905081810360008301526148f8816143c9565b9050919050565b6000602082019050818103600083015261491881614409565b9050919050565b600060208201905081810360008301526149388161446f565b9050919050565b60006020820190508181036000830152614958816144af565b9050919050565b6000602082019050818103600083015261497881614515565b9050919050565b6000602082019050818103600083015261499881614555565b9050919050565b600060208201905081810360008301526149b8816145bb565b9050919050565b600060208201905081810360008301526149d881614621565b9050919050565b600060208201905081810360008301526149f881614687565b9050919050565b60006020820190508181036000830152614a18816146c7565b9050919050565b60006020820190508181036000830152614a388161472d565b9050919050565b6000602082019050614a546000830184614793565b92915050565b600060a082019050614a6f6000830188614793565b614a7c60208301876141a9565b8181036040830152614a8e818661412d565b9050614a9d606083018561411e565b614aaa6080830184614793565b9695505050505050565b6000602082019050614ac960008301846147a2565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614b2f82614c89565b9150614b3a83614c89565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b6f57614b6e614d84565b5b828201905092915050565b6000614b8582614c89565b9150614b9083614c89565b925082614ba057614b9f614db3565b5b828204905092915050565b6000614bb682614c89565b9150614bc183614c89565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bfa57614bf9614d84565b5b828202905092915050565b6000614c1082614c89565b9150614c1b83614c89565b925082821015614c2e57614c2d614d84565b5b828203905092915050565b6000614c4482614c69565b9050919050565b6000614c5682614c69565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614cab82614cb2565b9050919050565b6000614cbd82614c69565b9050919050565b6000614ccf82614c89565b9050919050565b60005b83811015614cf4578082015181840152602081019050614cd9565b83811115614d03576000848401525b50505050565b60006002820490506001821680614d2157607f821691505b60208210811415614d3557614d34614de2565b5b50919050565b6000614d4682614c89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d7957614d78614d84565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614e2b81614c39565b8114614e3657600080fd5b50565b614e4281614c4b565b8114614e4d57600080fd5b50565b614e5981614c5d565b8114614e6457600080fd5b50565b614e7081614c89565b8114614e7b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207e01e79a2aa45b639552154fb1e4e9b5d97137afbdc447df9c758dcec74cc8aa64736f6c634300080000330000000000000000000000001973ed28c5fd7ba27fa44bb809d1352fc9e5cf1e0000000000000000000000001973ed28c5fd7ba27fa44bb809d1352fc9e5cf1e
Deployed Bytecode
0x6080604052600436106102135760003560e01c80635880b87311610118578063c0072488116100a0578063f2cc0c181161006f578063f2cc0c18146107e4578063f2fde38b1461080d578063f429389014610836578063f815a8421461084d578063f84354f1146108785761021a565b8063c007248814610718578063cba0e99614610741578063dd62ed3e1461077e578063e01af92c146107bb5761021a565b80638da5cb5b116100e75780638da5cb5b1461061f57806395d89b411461064a578063a457c2d714610675578063a9059cbb146106b2578063af9549e0146106ef5761021a565b80635880b873146105775780636ddd1713146105a057806370a08231146105cb578063715018a6146106085761021a565b80632d8381191161019b5780634144d9e41161016a5780634144d9e4146104905780634549b039146104bb57806349bd5a5e146104f857806351bc3c85146105235780635342acb41461053a5761021a565b80632d838119146103c2578063313ce567146103ff578063395093511461042a5780633bd5d173146104675761021a565b806318160ddd116101e257806318160ddd146102dd5780631bbae6e01461030857806323b872dd14610331578063286671621461036e5780632abe39ec146103975761021a565b806306fdde031461021f578063095ea7b31461024a57806313114a9d146102875780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108a1565b604051610241919061481d565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c919061401e565b610933565b60405161027e91906147e7565b60405180910390f35b34801561029357600080fd5b5061029c610951565b6040516102a99190614a3f565b60405180910390f35b3480156102be57600080fd5b506102c761095b565b6040516102d49190614802565b60405180910390f35b3480156102e957600080fd5b506102f261097f565b6040516102ff9190614a3f565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190614083565b610989565b005b34801561033d57600080fd5b5061035860048036038101906103539190613f93565b610a5c565b60405161036591906147e7565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190614083565b610b35565b005b3480156103a357600080fd5b506103ac610c0c565b6040516103b991906147cc565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190614083565b610c32565b6040516103f69190614a3f565b60405180910390f35b34801561040b57600080fd5b50610414610ca0565b6040516104219190614ab4565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c919061401e565b610cb7565b60405161045e91906147e7565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190614083565b610d6a565b005b34801561049c57600080fd5b506104a5610ee5565b6040516104b291906147cc565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906140ac565b610f0b565b6040516104ef9190614a3f565b60405180910390f35b34801561050457600080fd5b5061050d610f8f565b60405161051a91906147b1565b60405180910390f35b34801561052f57600080fd5b50610538610fb3565b005b34801561054657600080fd5b50610561600480360381019061055c9190613edc565b611048565b60405161056e91906147e7565b60405180910390f35b34801561058357600080fd5b5061059e60048036038101906105999190614083565b61109e565b005b3480156105ac57600080fd5b506105b5611175565b6040516105c291906147e7565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613edc565b611188565b6040516105ff9190614a3f565b60405180910390f35b34801561061457600080fd5b5061061d611273565b005b34801561062b57600080fd5b506106346112fb565b60405161064191906147b1565b60405180910390f35b34801561065657600080fd5b5061065f611324565b60405161066c919061481d565b60405180910390f35b34801561068157600080fd5b5061069c6004803603810190610697919061401e565b6113b6565b6040516106a991906147e7565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d4919061401e565b611483565b6040516106e691906147e7565b60405180910390f35b3480156106fb57600080fd5b5061071660048036038101906107119190613fe2565b6114a1565b005b34801561072457600080fd5b5061073f600480360381019061073a9190613f2e565b611578565b005b34801561074d57600080fd5b5061076860048036038101906107639190613edc565b611638565b60405161077591906147e7565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613f57565b61168e565b6040516107b29190614a3f565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd919061405a565b611715565b005b3480156107f057600080fd5b5061080b60048036038101906108069190613edc565b6117ae565b005b34801561081957600080fd5b50610834600480360381019061082f9190613edc565b611acc565b005b34801561084257600080fd5b5061084b611bc4565b005b34801561085957600080fd5b50610862611c51565b60405161086f9190614a3f565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613edc565b611c59565b005b6060600a80546108b090614d09565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614d09565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b5050505050905090565b6000610947610940612027565b848461202f565b6001905092915050565b6000600954905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b610991612027565b73ffffffffffffffffffffffffffffffffffffffff166109af6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc9061495f565b60405180910390fd5b69152d02c7e14af6800000811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a49906148ff565b60405180910390fd5b8060138190555050565b6000610a698484846121fa565b610b2a84610a75612027565b610b2585604051806060016040528060288152602001614e7f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adb612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b600190509392505050565b610b3d612027565b73ffffffffffffffffffffffffffffffffffffffff16610b5b6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba89061495f565b60405180910390fd5b60018110158015610bc3575060198111155b610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf9906148bf565b60405180910390fd5b80600e8190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600854821115610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c709061485f565b60405180910390fd5b6000610c836125d0565b9050610c9881846125fb90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610d60610cc4612027565b84610d5b8560036000610cd5612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b61202f565b6001905092915050565b6000610d74612027565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90614a1f565b60405180910390fd5b6000610e0e83612627565b50505050509050610e6781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ebf8160085461268e90919063ffffffff16565b600881905550610eda8360095461261190919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754831115610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f499061491f565b60405180910390fd5b81610f72576000610f6284612627565b5050505050905080915050610f89565b6000610f7d84612627565b50505050915050809150505b92915050565b7f0000000000000000000000004a9f8961c52123c6b845d9b94d2339d27ba7dc1b81565b610fbb612027565b73ffffffffffffffffffffffffffffffffffffffff16610fd96112fb565b73ffffffffffffffffffffffffffffffffffffffff161461102f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110269061495f565b60405180910390fd5b600061103a30611188565b9050611045816126a4565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110a6612027565b73ffffffffffffffffffffffffffffffffffffffff166110c46112fb565b73ffffffffffffffffffffffffffffffffffffffff161461111a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111119061495f565b60405180910390fd5b6001811015801561112c575060198111155b61116b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611162906149df565b60405180910390fd5b80600d8190555050565b601260159054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561122357600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061126e565b61126b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c32565b90505b919050565b61127b612027565b73ffffffffffffffffffffffffffffffffffffffff166112996112fb565b73ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e69061495f565b60405180910390fd5b6112f96000612998565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461133390614d09565b80601f016020809104026020016040519081016040528092919081815260200182805461135f90614d09565b80156113ac5780601f10611381576101008083540402835291602001916113ac565b820191906000526020600020905b81548152906001019060200180831161138f57829003601f168201915b5050505050905090565b60006114796113c3612027565b8461147485604051806060016040528060258152602001614ea760259139600360006113ed612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b6001905092915050565b6000611497611490612027565b84846121fa565b6001905092915050565b6114a9612027565b73ffffffffffffffffffffffffffffffffffffffff166114c76112fb565b73ffffffffffffffffffffffffffffffffffffffff161461151d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115149061495f565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611580612027565b73ffffffffffffffffffffffffffffffffffffffff1661159e6112fb565b73ffffffffffffffffffffffffffffffffffffffff16146115f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb9061495f565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61171d612027565b73ffffffffffffffffffffffffffffffffffffffff1661173b6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117889061495f565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6117b6612027565b73ffffffffffffffffffffffffffffffffffffffff166117d46112fb565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118219061495f565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a4906149ff565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611931906148df565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a0e576119ca600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c32565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4612027565b73ffffffffffffffffffffffffffffffffffffffff16611af26112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f9061495f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf9061487f565b60405180910390fd5b611bc181612998565b50565b611bcc612027565b73ffffffffffffffffffffffffffffffffffffffff16611bea6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c379061495f565b60405180910390fd5b6000479050611c4e81612a5c565b50565b600047905090565b611c61612027565b73ffffffffffffffffffffffffffffffffffffffff16611c7f6112fb565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc9061495f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d58906148df565b60405180910390fd5b60005b600680549050811015612023578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611dc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156120105760066001600680549050611e1d9190614c05565b81548110611e54577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611eb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611fd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612023565b808061201b90614d3b565b915050611d64565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561209f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612096906149bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121069061489f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121ed9190614a3f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561226a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122619061499f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d19061483f565b60405180910390fd5b6000811161231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123149061497f565b60405180910390fd5b6123256112fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561239357506123636112fb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123de576013548111156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d49061493f565b60405180910390fd5b5b60006123e930611188565b905060135481106123fa5760135490505b60006014548210159050601260149054906101000a900460ff1615801561242d5750601260159054906101000a900460ff165b80156124365750805b801561248e57507f0000000000000000000000004a9f8961c52123c6b845d9b94d2339d27ba7dc1b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124b65761249c826126a4565b600047905060008111156124b4576124b347612a5c565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061255d5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561256757600090505b61257386868684612b57565b505050505050565b60008383111582906125c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ba919061481d565b60405180910390fd5b5082840390509392505050565b60008060006125dd612e68565b915091506125f481836125fb90919063ffffffff16565b9250505090565b600081836126099190614b7a565b905092915050565b6000818361261f9190614b24565b905092915050565b60008060008060008060008060006126448a600d54600e546131b3565b92509250925060006126546125d0565b905060008060006126668e8786613249565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000818361269c9190614c05565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612702577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156127305781602001602082028036833780820191505090505b509050308160008151811061276e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561280e57600080fd5b505afa158015612822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128469190613f05565b81600181518110612880577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128e5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461202f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612947959493929190614a5a565b600060405180830381600087803b15801561296157600080fd5b505af1158015612975573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612aac6002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612ad7573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612b286002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612b53573d6000803e3d6000fd5b5050565b80612b6557612b646132a7565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c085750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c1d57612c188484846132ea565b612e54565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cc05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cd557612cd084848461354a565b612e53565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d795750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d8e57612d898484846137aa565b612e52565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e305750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e4557612e40848484613975565b612e51565b612e508484846137aa565b5b5b5b5b80612e6257612e61613c6a565b5b50505050565b600080600060085490506000600754905060005b60068054905081101561317657826001600060068481548110612ec8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612fdc5750816002600060068481548110612f74577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ff357600854600754945094505050506131af565b6130a96001600060068481548110613034577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461268e90919063ffffffff16565b925061316160026000600684815481106130ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361268e90919063ffffffff16565b9150808061316e90614d3b565b915050612e7c565b5061318e6007546008546125fb90919063ffffffff16565b8210156131a6576008546007549350935050506131af565b81819350935050505b9091565b6000806000806131df60646131d1888a613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061320960646131fb888b613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061323282613224858c61268e90919063ffffffff16565b61268e90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806132628588613c7e90919063ffffffff16565b905060006132798688613c7e90919063ffffffff16565b90506000613290828461268e90919063ffffffff16565b905082818395509550955050505093509350939050565b6000600d541480156132bb57506000600e54145b156132c5576132e8565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806132fc87612627565b95509550955095509550955061335a87600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133ef86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061348485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134d081613c94565b6134da8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516135379190614a3f565b60405180910390a3505050505050505050565b60008060008060008061355c87612627565b9550955095509550955095506135ba86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136e485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061373081613c94565b61373a8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516137979190614a3f565b60405180910390a3505050505050505050565b6000806000806000806137bc87612627565b95509550955095509550955061381a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138af85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fb81613c94565b6139058483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139629190614a3f565b60405180910390a3505050505050505050565b60008060008060008061398787612627565b9550955095509550955095506139e587600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ba485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bf081613c94565b613bfa8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c579190614a3f565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008183613c8c9190614bab565b905092915050565b6000613c9e6125d0565b90506000613cb58284613c7e90919063ffffffff16565b9050613d0981600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e3457613df083600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613e4e8260085461268e90919063ffffffff16565b600881905550613e698160095461261190919063ffffffff16565b6009819055505050565b600081359050613e8281614e22565b92915050565b600081519050613e9781614e22565b92915050565b600081359050613eac81614e39565b92915050565b600081359050613ec181614e50565b92915050565b600081359050613ed681614e67565b92915050565b600060208284031215613eee57600080fd5b6000613efc84828501613e73565b91505092915050565b600060208284031215613f1757600080fd5b6000613f2584828501613e88565b91505092915050565b600060208284031215613f4057600080fd5b6000613f4e84828501613e9d565b91505092915050565b60008060408385031215613f6a57600080fd5b6000613f7885828601613e73565b9250506020613f8985828601613e73565b9150509250929050565b600080600060608486031215613fa857600080fd5b6000613fb686828701613e73565b9350506020613fc786828701613e73565b9250506040613fd886828701613ec7565b9150509250925092565b60008060408385031215613ff557600080fd5b600061400385828601613e73565b925050602061401485828601613eb2565b9150509250929050565b6000806040838503121561403157600080fd5b600061403f85828601613e73565b925050602061405085828601613ec7565b9150509250929050565b60006020828403121561406c57600080fd5b600061407a84828501613eb2565b91505092915050565b60006020828403121561409557600080fd5b60006140a384828501613ec7565b91505092915050565b600080604083850312156140bf57600080fd5b60006140cd85828601613ec7565b92505060206140de85828601613eb2565b9150509250929050565b60006140f4838361410f565b60208301905092915050565b61410981614c4b565b82525050565b61411881614c39565b82525050565b61412781614c39565b82525050565b600061413882614adf565b6141428185614b02565b935061414d83614acf565b8060005b8381101561417e57815161416588826140e8565b975061417083614af5565b925050600181019050614151565b5085935050505092915050565b61419481614c5d565b82525050565b6141a381614ca0565b82525050565b6141b281614cc4565b82525050565b60006141c382614aea565b6141cd8185614b13565b93506141dd818560208601614cd6565b6141e681614e11565b840191505092915050565b60006141fe602383614b13565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614264602a83614b13565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b60006142ca602683614b13565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614330602283614b13565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614396601b83614b13565b91507f7465616d4665652073686f756c6420626520696e2031202d20323500000000006000830152602082019050919050565b60006143d6601b83614b13565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000614416603483614b13565b91507f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008301527f616e2031303030303030303030303030303065390000000000000000000000006020830152604082019050919050565b600061447c601f83614b13565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b60006144bc602883614b13565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614522602083614b13565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000614562602983614b13565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b60006145c8602583614b13565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061462e602483614b13565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614694601a83614b13565b91507f7461784665652073686f756c6420626520696e2031202d2032350000000000006000830152602082019050919050565b60006146d4602283614b13565b91507f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008301527f722e0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061473a602c83614b13565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b61479c81614c89565b82525050565b6147ab81614c93565b82525050565b60006020820190506147c6600083018461411e565b92915050565b60006020820190506147e16000830184614100565b92915050565b60006020820190506147fc600083018461418b565b92915050565b6000602082019050614817600083018461419a565b92915050565b6000602082019050818103600083015261483781846141b8565b905092915050565b60006020820190508181036000830152614858816141f1565b9050919050565b6000602082019050818103600083015261487881614257565b9050919050565b60006020820190508181036000830152614898816142bd565b9050919050565b600060208201905081810360008301526148b881614323565b9050919050565b600060208201905081810360008301526148d881614389565b9050919050565b600060208201905081810360008301526148f8816143c9565b9050919050565b6000602082019050818103600083015261491881614409565b9050919050565b600060208201905081810360008301526149388161446f565b9050919050565b60006020820190508181036000830152614958816144af565b9050919050565b6000602082019050818103600083015261497881614515565b9050919050565b6000602082019050818103600083015261499881614555565b9050919050565b600060208201905081810360008301526149b8816145bb565b9050919050565b600060208201905081810360008301526149d881614621565b9050919050565b600060208201905081810360008301526149f881614687565b9050919050565b60006020820190508181036000830152614a18816146c7565b9050919050565b60006020820190508181036000830152614a388161472d565b9050919050565b6000602082019050614a546000830184614793565b92915050565b600060a082019050614a6f6000830188614793565b614a7c60208301876141a9565b8181036040830152614a8e818661412d565b9050614a9d606083018561411e565b614aaa6080830184614793565b9695505050505050565b6000602082019050614ac960008301846147a2565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614b2f82614c89565b9150614b3a83614c89565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b6f57614b6e614d84565b5b828201905092915050565b6000614b8582614c89565b9150614b9083614c89565b925082614ba057614b9f614db3565b5b828204905092915050565b6000614bb682614c89565b9150614bc183614c89565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bfa57614bf9614d84565b5b828202905092915050565b6000614c1082614c89565b9150614c1b83614c89565b925082821015614c2e57614c2d614d84565b5b828203905092915050565b6000614c4482614c69565b9050919050565b6000614c5682614c69565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614cab82614cb2565b9050919050565b6000614cbd82614c69565b9050919050565b6000614ccf82614c89565b9050919050565b60005b83811015614cf4578082015181840152602081019050614cd9565b83811115614d03576000848401525b50505050565b60006002820490506001821680614d2157607f821691505b60208210811415614d3557614d34614de2565b5b50919050565b6000614d4682614c89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d7957614d78614d84565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614e2b81614c39565b8114614e3657600080fd5b50565b614e4281614c4b565b8114614e4d57600080fd5b50565b614e5981614c5d565b8114614e6457600080fd5b50565b614e7081614c89565b8114614e7b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207e01e79a2aa45b639552154fb1e4e9b5d97137afbdc447df9c758dcec74cc8aa64736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001973ed28c5fd7ba27fa44bb809d1352fc9e5cf1e0000000000000000000000001973ed28c5fd7ba27fa44bb809d1352fc9e5cf1e
-----Decoded View---------------
Arg [0] : VSCWalletAddress (address): 0x1973ED28c5fD7BA27Fa44bb809D1352Fc9E5CF1E
Arg [1] : marketingWalletAddress (address): 0x1973ED28c5fD7BA27Fa44bb809D1352Fc9E5CF1E
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001973ed28c5fd7ba27fa44bb809d1352fc9e5cf1e
Arg [1] : 0000000000000000000000001973ed28c5fd7ba27fa44bb809d1352fc9e5cf1e
Deployed Bytecode Sourcemap
31572:18845:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34302:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35306:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36654:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32710:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34615:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50177:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35491:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49824:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32600:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37662:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34512:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35832:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36761:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32651:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37178:472;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32772:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42848:168;;;;;;;;;;;;;:::i;:::-;;39353:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49631:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32853:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34730:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13114:103;;;;;;;;;;;;;:::i;:::-;;12463:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34405:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36074:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34952:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36497:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50024:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36367:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35143:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43208:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37943:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13372:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43028:168;;;;;;;;;;;;;:::i;:::-;;49501:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38430:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34302:91;34339:13;34376:5;34369:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34302:91;:::o;35306:173::-;35381:4;35402:39;35411:12;:10;:12::i;:::-;35425:7;35434:6;35402:8;:39::i;:::-;35463:4;35456:11;;35306:173;;;;:::o;36654:95::-;36696:7;36727:10;;36720:17;;36654:95;:::o;32710:51::-;;;:::o;34615:103::-;34668:7;34699;;34692:14;;34615:103;:::o;50177:233::-;12694:12;:10;:12::i;:::-;12683:23;;:7;:5;:7::i;:::-;:23;;;12675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50282:17:::1;50267:11;:32;;50259:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;50387:11;50372:12;:26;;;;50177:233:::0;:::o;35491:329::-;35589:4;35610:36;35620:6;35628:9;35639:6;35610:9;:36::i;:::-;35661:121;35670:6;35678:12;:10;:12::i;:::-;35692:89;35730:6;35692:89;;;;;;;;;;;;;;;;;:11;:19;35704:6;35692:19;;;;;;;;;;;;;;;:33;35712:12;:10;:12::i;:::-;35692:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;35661:8;:121::i;:::-;35804:4;35797:11;;35491:329;;;;;:::o;49824:188::-;12694:12;:10;:12::i;:::-;12683:23;;:7;:5;:7::i;:::-;:23;;;12675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49917:1:::1;49906:7;:12;;:29;;;;;49933:2;49922:7;:13;;49906:29;49898:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;49993:7;49982:8;:18;;;;49824:188:::0;:::o;32600:40::-;;;;;;;;;;;;;:::o;37662:269::-;37728:7;37771;;37760;:18;;37752:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;37840:19;37863:10;:8;:10::i;:::-;37840:33;;37895:24;37907:11;37895:7;:11;;:24;;;;:::i;:::-;37888:31;;;37662:269;;;:::o;34512:91::-;34553:5;34582:9;;;;;;;;;;;34575:16;;34512:91;:::o;35832:230::-;35920:4;35941:83;35950:12;:10;:12::i;:::-;35964:7;35973:50;36012:10;35973:11;:25;35985:12;:10;:12::i;:::-;35973:25;;;;;;;;;;;;;;;:34;35999:7;35973:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;35941:8;:83::i;:::-;36046:4;36039:11;;35832:230;;;;:::o;36761:405::-;36817:14;36834:12;:10;:12::i;:::-;36817:29;;36870:11;:19;36882:6;36870:19;;;;;;;;;;;;;;;;;;;;;;;;;36869:20;36861:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;36954:15;36978:19;36989:7;36978:10;:19::i;:::-;36953:44;;;;;;;37030:28;37050:7;37030;:15;37038:6;37030:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;37012:7;:15;37020:6;37012:15;;;;;;;;;;;;;;;:46;;;;37083:20;37095:7;37083;;:11;;:20;;;;:::i;:::-;37073:7;:30;;;;37131:23;37146:7;37131:10;;:14;;:23;;;;:::i;:::-;37118:10;:36;;;;36761:405;;;:::o;32651:46::-;;;;;;;;;;;;;:::o;37178:472::-;37268:7;37311;;37300;:18;;37292:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;37374:17;37369:270;;37413:15;37437:19;37448:7;37437:10;:19::i;:::-;37412:44;;;;;;;37482:7;37475:14;;;;;37369:270;37532:23;37563:19;37574:7;37563:10;:19::i;:::-;37530:52;;;;;;;37608:15;37601:22;;;37178:472;;;;;:::o;32772:38::-;;;:::o;42848:168::-;12694:12;:10;:12::i;:::-;12683:23;;:7;:5;:7::i;:::-;:23;;;12675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42906:23:::1;42932:24;42950:4;42932:9;:24::i;:::-;42906:50;;42971:33;42988:15;42971:16;:33::i;:::-;12754:1;42848:168::o:0;39353:131::-;39417:4;39445:18;:27;39464:7;39445:27;;;;;;;;;;;;;;;;;;;;;;;;;39438:34;;39353:131;;;:::o;49631:181::-;12694:12;:10;:12::i;:::-;12683:23;;:7;:5;:7::i;:::-;:23;;;12675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49721:1:::1;49711:6;:11;;:27;;;;;49736:2;49726:6;:12;;49711:27;49703:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;49794:6;49784:7;:16;;;;49631:181:::0;:::o;32853:30::-;;;;;;;;;;;;;:::o;34730:210::-;34796:7;34824:11;:20;34836:7;34824:20;;;;;;;;;;;;;;;;;;;;;;;;;34820:49;;;34853:7;:16;34861:7;34853:16;;;;;;;;;;;;;;;;34846:23;;;;34820:49;34891:37;34911:7;:16;34919:7;34911:16;;;;;;;;;;;;;;;;34891:19;:37::i;:::-;34884:44;;34730:210;;;;:::o;13114:103::-;12694:12;:10;:12::i;:::-;12683:23;;:7;:5;:7::i;:::-;:23;;;12675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13179:30:::1;13206:1;13179:18;:30::i;:::-;13114:103::o:0;12463:87::-;12509:7;12536:6;;;;;;;;;;;12529:13;;12463:87;:::o;34405:95::-;34444:13;34481:7;34474:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34405:95;:::o;36074:281::-;36167:4;36188:129;36197:12;:10;:12::i;:::-;36211:7;36220:96;36259:15;36220:96;;;;;;;;;;;;;;;;;:11;:25;36232:12;:10;:12::i;:::-;36220:25;;;;;;;;;;;;;;;:34;36246:7;36220:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;36188:8;:129::i;:::-;36339:4;36332:11;;36074:281;;;;:::o;34952:179::-;35030:4;35051:42;35061:12;:10;:12::i;:::-;35075:9;35086:6;35051:9;:42::i;:::-;35115:4;35108:11;;34952:179;;;;:::o;36497:145::-;12694:12;:10;:12::i;:::-;12683:23;;:7;:5;:7::i;:::-;:23;;;12675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36622:8:::1;36592:18;:27;36611:7;36592:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;36497:145:::0;;:::o;50024:141::-;12694:12;:10;:12::i;:::-;12683:23;;:7;:5;:7::i;:::-;:23;;;12675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50137:16:::1;50117:17;;:36;;;;;;;;;;;;;;;;;;50024:141:::0;:::o;36367:118::-;36425:4;36453:11;:20;36465:7;36453:20;;;;;;;;;;;;;;;;;;;;;;;;;36446:27;;36367:118;;;:::o;35143:151::-;35224:7;35255:11;:18;35267:5;35255:18;;;;;;;;;;;;;;;:27;35274:7;35255:27;;;;;;;;;;;;;;;;35248:34;;35143:151;;;;:::o;43208:106::-;12694:12;:10;:12::i;:::-;12683:23;;:7;:5;:7::i;:::-;:23;;;12675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43295:7:::1;43281:11;;:21;;;;;;;;;;;;;;;;;;43208:106:::0;:::o;37943:475::-;12694:12;:10;:12::i;:::-;12683:23;;:7;:5;:7::i;:::-;:23;;;12675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38039:42:::1;38028:53;;:7;:53;;;;38020:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;38144:11;:20;38156:7;38144:20;;;;;;;;;;;;;;;;;;;;;;;;;38143:21;38135:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;38233:1;38214:7;:16;38222:7;38214:16;;;;;;;;;;;;;;;;:20;38211:116;;;38274:37;38294:7;:16;38302:7;38294:16;;;;;;;;;;;;;;;;38274:19;:37::i;:::-;38255:7;:16;38263:7;38255:16;;;;;;;;;;;;;;;:56;;;;38211:116;38364:4;38341:11;:20;38353:7;38341:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;38383:9;38398:7;38383:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37943:475:::0;:::o;13372:201::-;12694:12;:10;:12::i;:::-;12683:23;;:7;:5;:7::i;:::-;:23;;;12675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13481:1:::1;13461:22;;:8;:22;;;;13453:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13537:28;13556:8;13537:18;:28::i;:::-;13372:201:::0;:::o;43028:168::-;12694:12;:10;:12::i;:::-;12683:23;;:7;:5;:7::i;:::-;:23;;;12675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43086:26:::1;43115:21;43086:50;;43151:33;43165:18;43151:13;:33::i;:::-;12754:1;43028:168::o:0;49501:118::-;49547:15;49586:21;49579:28;;49501:118;:::o;38430:522::-;12694:12;:10;:12::i;:::-;12683:23;;:7;:5;:7::i;:::-;:23;;;12675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38515:11:::1;:20;38527:7;38515:20;;;;;;;;;;;;;;;;;;;;;;;;;38507:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;38587:9;38582:359;38606:9;:16;;;;38602:1;:20;38582:359;;;38668:7;38652:23;;:9;38662:1;38652:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;38648:278;;;38715:9;38744:1;38725:9;:16;;;;:20;;;;:::i;:::-;38715:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38700:9;38710:1;38700:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;38788:1;38769:7;:16;38777:7;38769:16;;;;;;;;;;;;;;;:20;;;;38835:5;38812:11;:20;38824:7;38812:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;38863:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38901:5;;38648:278;38624:3;;;;;:::i;:::-;;;;38582:359;;;;38430:522:::0;:::o;11187:98::-;11240:7;11267:10;11260:17;;11187:98;:::o;39496:357::-;39610:1;39593:19;;:5;:19;;;;39585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39695:1;39676:21;;:7;:21;;;;39668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39783:6;39753:11;:18;39765:5;39753:18;;;;;;;;;;;;;;;:27;39772:7;39753:27;;;;;;;;;;;;;;;:36;;;;39825:7;39809:32;;39818:5;39809:32;;;39834:6;39809:32;;;;;;:::i;:::-;;;;;;;;39496:357;;;:::o;39865:1964::-;39984:1;39966:20;;:6;:20;;;;39958:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;40072:1;40051:23;;:9;:23;;;;40043:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;40146:1;40137:6;:10;40129:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;40223:7;:5;:7::i;:::-;40213:17;;:6;:17;;;;:41;;;;;40247:7;:5;:7::i;:::-;40234:20;;:9;:20;;;;40213:41;40210:138;;;40291:12;;40281:6;:22;;40273:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;40210:138;40631:28;40662:24;40680:4;40662:9;:24::i;:::-;40631:55;;40730:12;;40706:20;:36;40703:124;;40799:12;;40776:35;;40703:124;40843:24;40894:29;;40870:20;:53;;40843:80;;40943:6;;;;;;;;;;;40942:7;:22;;;;;40953:11;;;;;;;;;;;40942:22;:45;;;;;40968:19;40942:45;:72;;;;;41001:13;40991:23;;:6;:23;;;;40942:72;40938:436;;;41125:38;41142:20;41125:16;:38::i;:::-;41184:26;41213:21;41184:50;;41277:1;41256:18;:22;41253:106;;;41303:36;41317:21;41303:13;:36::i;:::-;41253:106;40938:436;;41455:12;41470:4;41455:19;;41582:18;:26;41601:6;41582:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;41612:18;:29;41631:9;41612:29;;;;;;;;;;;;;;;;;;;;;;;;;41582:59;41579:113;;;41671:5;41661:15;;41579:113;41770:47;41785:6;41792:9;41802:6;41809:7;41770:14;:47::i;:::-;39865:1964;;;;;;:::o;5726:240::-;5846:7;5904:1;5899;:6;;5907:12;5891:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5946:1;5942;:5;5935:12;;5726:240;;;;;:::o;48487:175::-;48528:7;48553:15;48570;48589:19;:17;:19::i;:::-;48552:56;;;;48630:20;48642:7;48630;:11;;:20;;;;:::i;:::-;48623:27;;;;48487:175;:::o;4584:98::-;4642:7;4673:1;4669;:5;;;;:::i;:::-;4662:12;;4584:98;;;;:::o;3447:::-;3505:7;3536:1;3532;:5;;;;:::i;:::-;3525:12;;3447:98;;;;:::o;47245:481::-;47304:7;47313;47322;47331;47340;47349;47374:23;47399:12;47413:13;47430:39;47442:7;47451;;47460:8;;47430:11;:39::i;:::-;47373:96;;;;;;47484:19;47507:10;:8;:10::i;:::-;47484:33;;47533:15;47550:23;47575:12;47591:39;47603:7;47612:4;47618:11;47591;:39::i;:::-;47532:98;;;;;;47653:7;47662:15;47679:4;47685:15;47702:4;47708:5;47645:69;;;;;;;;;;;;;;;;;;;47245:481;;;;;;;:::o;3828:98::-;3886:7;3917:1;3913;:5;;;;:::i;:::-;3906:12;;3828:98;;;;:::o;41841:656::-;33271:4;33262:6;;:13;;;;;;;;;;;;;;;;;;41986:21:::1;42024:1;42010:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41986:40;;42059:4;42041;42046:1;42041:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;42089:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42079:4;42084:1;42079:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;42128:62;42145:4;42160:15;42178:11;42128:8;:62::i;:::-;42237:15;:66;;;42322:11;42352:1;42400:4;42431;42455:15;42237:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33290:1;33315:5:::0;33306:6;;:14;;;;;;;;;;;;;;;;;;41841:656;:::o;13733:191::-;13807:16;13826:6;;;;;;;;;;;13807:25;;13852:8;13843:6;;:17;;;;;;;;;;;;;;;;;;13907:8;13876:40;;13897:8;13876:40;;;;;;;;;;;;13733:191;;:::o;42509:177::-;42571:17;;;;;;;;;;;:26;;:41;42598:13;42609:1;42598:6;:10;;:13;;;;:::i;:::-;42571:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42627:23;;;;;;;;;;;:32;;:47;42660:13;42671:1;42660:6;:10;;:13;;;;:::i;:::-;42627:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42509:177;:::o;43326:883::-;43442:7;43438:44;;43468:14;:12;:14::i;:::-;43438:44;43503:11;:19;43515:6;43503:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;43527:11;:22;43539:9;43527:22;;;;;;;;;;;;;;;;;;;;;;;;;43526:23;43503:46;43499:637;;;43570:48;43592:6;43600:9;43611:6;43570:21;:48::i;:::-;43499:637;;;43645:11;:19;43657:6;43645:19;;;;;;;;;;;;;;;;;;;;;;;;;43644:20;:46;;;;;43668:11;:22;43680:9;43668:22;;;;;;;;;;;;;;;;;;;;;;;;;43644:46;43640:496;;;43711:46;43731:6;43739:9;43750:6;43711:19;:46::i;:::-;43640:496;;;43784:11;:19;43796:6;43784:19;;;;;;;;;;;;;;;;;;;;;;;;;43783:20;:47;;;;;43808:11;:22;43820:9;43808:22;;;;;;;;;;;;;;;;;;;;;;;;;43807:23;43783:47;43779:357;;;43851:44;43869:6;43877:9;43888:6;43851:17;:44::i;:::-;43779:357;;;43921:11;:19;43933:6;43921:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;43944:11;:22;43956:9;43944:22;;;;;;;;;;;;;;;;;;;;;;;;;43921:45;43917:219;;;43987:48;44009:6;44017:9;44028:6;43987:21;:48::i;:::-;43917:219;;;44076:44;44094:6;44102:9;44113:6;44076:17;:44::i;:::-;43917:219;43779:357;43640:496;43499:637;44156:7;44152:45;;44182:15;:13;:15::i;:::-;44152:45;43326:883;;;;:::o;48674:595::-;48724:7;48733;48757:15;48775:7;;48757:25;;48797:15;48815:7;;48797:25;;48842:9;48837:305;48861:9;:16;;;;48857:1;:20;48837:305;;;48931:7;48907;:21;48915:9;48925:1;48915:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48907:21;;;;;;;;;;;;;;;;:31;:66;;;;48966:7;48942;:21;48950:9;48960:1;48950:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48942:21;;;;;;;;;;;;;;;;:31;48907:66;48903:97;;;48983:7;;48992;;48975:25;;;;;;;;;48903:97;49029:34;49041:7;:21;49049:9;49059:1;49049:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49041:21;;;;;;;;;;;;;;;;49029:7;:11;;:34;;;;:::i;:::-;49019:44;;49092:34;49104:7;:21;49112:9;49122:1;49112:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49104:21;;;;;;;;;;;;;;;;49092:7;:11;;:34;;;;:::i;:::-;49082:44;;48879:3;;;;;:::i;:::-;;;;48837:305;;;;49170:20;49182:7;;49170;;:11;;:20;;;;:::i;:::-;49160:7;:30;49156:61;;;49200:7;;49209;;49192:25;;;;;;;;49156:61;49240:7;49249;49232:25;;;;;;48674:595;;;:::o;47738:371::-;47831:7;47840;47849;47873:12;47888:28;47912:3;47888:19;47900:6;47888:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;47873:43;;47931:13;47947:29;47972:3;47947:20;47959:7;47947;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;47931:45;;47991:23;48017:28;48039:5;48017:17;48029:4;48017:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;47991:54;;48068:15;48085:4;48091:5;48060:37;;;;;;;;;47738:371;;;;;;;:::o;48121:354::-;48216:7;48225;48234;48258:15;48276:24;48288:11;48276:7;:11;;:24;;;;:::i;:::-;48258:42;;48315:12;48330:21;48339:11;48330:4;:8;;:21;;;;:::i;:::-;48315:36;;48366:23;48392:17;48404:4;48392:7;:11;;:17;;;;:::i;:::-;48366:43;;48432:7;48441:15;48458:4;48424:39;;;;;;;;;48121:354;;;;;;;:::o;38964:238::-;39025:1;39014:7;;:12;:29;;;;;39042:1;39030:8;;:13;39014:29;39011:41;;;39045:7;;39011:41;39086:7;;39068:15;:25;;;;39127:8;;39108:16;:27;;;;39162:1;39152:7;:11;;;;39189:1;39178:8;:12;;;;38964:238;:::o;45352:580::-;45459:15;45476:23;45501:12;45515:23;45540:12;45554:13;45571:19;45582:7;45571:10;:19::i;:::-;45458:132;;;;;;;;;;;;45623:28;45643:7;45623;:15;45631:6;45623:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45605:7;:15;45613:6;45605:15;;;;;;;;;;;;;;;:46;;;;45684:28;45704:7;45684;:15;45692:6;45684:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45666:7;:15;45674:6;45666:15;;;;;;;;;;;;;;;:46;;;;45748:39;45771:15;45748:7;:18;45756:9;45748:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45727:7;:18;45735:9;45727:18;;;;;;;;;;;;;;;:60;;;;45802:16;45812:5;45802:9;:16::i;:::-;45833:23;45845:4;45851;45833:11;:23::i;:::-;45893:9;45876:44;;45885:6;45876:44;;;45904:15;45876:44;;;;;;:::i;:::-;;;;;;;;45352:580;;;;;;;;;:::o;44748:592::-;44853:15;44870:23;44895:12;44909:23;44934:12;44948:13;44965:19;44976:7;44965:10;:19::i;:::-;44852:132;;;;;;;;;;;;45017:28;45037:7;45017;:15;45025:6;45017:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44999:7;:15;45007:6;44999:15;;;;;;;;;;;;;;;:46;;;;45081:39;45104:15;45081:7;:18;45089:9;45081:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45060:7;:18;45068:9;45060:18;;;;;;;;;;;;;;;:60;;;;45156:39;45179:15;45156:7;:18;45164:9;45156:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45135:7;:18;45143:9;45135:18;;;;;;;;;;;;;;;:60;;;;45210:16;45220:5;45210:9;:16::i;:::-;45241:23;45253:4;45259;45241:11;:23::i;:::-;45301:9;45284:44;;45293:6;45284:44;;;45312:15;45284:44;;;;;;:::i;:::-;;;;;;;;44748:592;;;;;;;;;:::o;44221:515::-;44324:15;44341:23;44366:12;44380:23;44405:12;44419:13;44436:19;44447:7;44436:10;:19::i;:::-;44323:132;;;;;;;;;;;;44488:28;44508:7;44488;:15;44496:6;44488:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44470:7;:15;44478:6;44470:15;;;;;;;;;;;;;;;:46;;;;44552:39;44575:15;44552:7;:18;44560:9;44552:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44531:7;:18;44539:9;44531:18;;;;;;;;;;;;;;;:60;;;;44606:16;44616:5;44606:9;:16::i;:::-;44637:23;44649:4;44655;44637:11;:23::i;:::-;44697:9;44680:44;;44689:6;44680:44;;;44708:15;44680:44;;;;;;:::i;:::-;;;;;;;;44221:515;;;;;;;;;:::o;45944:655::-;46051:15;46068:23;46093:12;46107:23;46132:12;46146:13;46163:19;46174:7;46163:10;:19::i;:::-;46050:132;;;;;;;;;;;;46215:28;46235:7;46215;:15;46223:6;46215:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;46197:7;:15;46205:6;46197:15;;;;;;;;;;;;;;;:46;;;;46276:28;46296:7;46276;:15;46284:6;46276:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;46258:7;:15;46266:6;46258:15;;;;;;;;;;;;;;;:46;;;;46340:39;46363:15;46340:7;:18;46348:9;46340:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;46319:7;:18;46327:9;46319:18;;;;;;;;;;;;;;;:60;;;;46415:39;46438:15;46415:7;:18;46423:9;46415:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;46394:7;:18;46402:9;46394:18;;;;;;;;;;;;;;;:60;;;;46469:16;46479:5;46469:9;:16::i;:::-;46500:23;46512:4;46518;46500:11;:23::i;:::-;46560:9;46543:44;;46552:6;46543:44;;;46571:15;46543:44;;;;;;:::i;:::-;;;;;;;;45944:655;;;;;;;;;:::o;39214:127::-;39272:15;;39262:7;:25;;;;39313:16;;39302:8;:27;;;;39214:127::o;4185:98::-;4243:7;4274:1;4270;:5;;;;:::i;:::-;4263:12;;4185:98;;;;:::o;46611:349::-;46668:19;46691:10;:8;:10::i;:::-;46668:33;;46716:13;46732:22;46742:11;46732:5;:9;;:22;;;;:::i;:::-;46716:38;;46794:33;46821:5;46794:7;:22;46810:4;46794:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46769:7;:22;46785:4;46769:22;;;;;;;;;;;;;;;:58;;;;46845:11;:26;46865:4;46845:26;;;;;;;;;;;;;;;;;;;;;;;;;46842:106;;;46915:33;46942:5;46915:7;:22;46931:4;46915:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46890:7;:22;46906:4;46890:22;;;;;;;;;;;;;;;:58;;;;46842:106;46611:349;;;:::o;46972:159::-;47054:17;47066:4;47054:7;;:11;;:17;;;;:::i;:::-;47044:7;:27;;;;47099:20;47114:4;47099:10;;:14;;:20;;;;:::i;:::-;47086:10;:33;;;;46972:159;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:133::-;;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;511:84;;;;:::o;601:139::-;;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;653:87;;;;:::o;746:262::-;;854:2;842:9;833:7;829:23;825:32;822:2;;;870:1;867;860:12;822:2;913:1;938:53;983:7;974:6;963:9;959:22;938:53;:::i;:::-;928:63;;884:117;812:196;;;;:::o;1014:284::-;;1133:2;1121:9;1112:7;1108:23;1104:32;1101:2;;;1149:1;1146;1139:12;1101:2;1192:1;1217:64;1273:7;1264:6;1253:9;1249:22;1217:64;:::i;:::-;1207:74;;1163:128;1091:207;;;;:::o;1304:278::-;;1420:2;1408:9;1399:7;1395:23;1391:32;1388:2;;;1436:1;1433;1426:12;1388:2;1479:1;1504:61;1557:7;1548:6;1537:9;1533:22;1504:61;:::i;:::-;1494:71;;1450:125;1378:204;;;;:::o;1588:407::-;;;1713:2;1701:9;1692:7;1688:23;1684:32;1681:2;;;1729:1;1726;1719:12;1681:2;1772:1;1797:53;1842:7;1833:6;1822:9;1818:22;1797:53;:::i;:::-;1787:63;;1743:117;1899:2;1925:53;1970:7;1961:6;1950:9;1946:22;1925:53;:::i;:::-;1915:63;;1870:118;1671:324;;;;;:::o;2001:552::-;;;;2143:2;2131:9;2122:7;2118:23;2114:32;2111:2;;;2159:1;2156;2149:12;2111:2;2202:1;2227:53;2272:7;2263:6;2252:9;2248:22;2227:53;:::i;:::-;2217:63;;2173:117;2329:2;2355:53;2400:7;2391:6;2380:9;2376:22;2355:53;:::i;:::-;2345:63;;2300:118;2457:2;2483:53;2528:7;2519:6;2508:9;2504:22;2483:53;:::i;:::-;2473:63;;2428:118;2101:452;;;;;:::o;2559:401::-;;;2681:2;2669:9;2660:7;2656:23;2652:32;2649:2;;;2697:1;2694;2687:12;2649:2;2740:1;2765:53;2810:7;2801:6;2790:9;2786:22;2765:53;:::i;:::-;2755:63;;2711:117;2867:2;2893:50;2935:7;2926:6;2915:9;2911:22;2893:50;:::i;:::-;2883:60;;2838:115;2639:321;;;;;:::o;2966:407::-;;;3091:2;3079:9;3070:7;3066:23;3062:32;3059:2;;;3107:1;3104;3097:12;3059:2;3150:1;3175:53;3220:7;3211:6;3200:9;3196:22;3175:53;:::i;:::-;3165:63;;3121:117;3277:2;3303:53;3348:7;3339:6;3328:9;3324:22;3303:53;:::i;:::-;3293:63;;3248:118;3049:324;;;;;:::o;3379:256::-;;3484:2;3472:9;3463:7;3459:23;3455:32;3452:2;;;3500:1;3497;3490:12;3452:2;3543:1;3568:50;3610:7;3601:6;3590:9;3586:22;3568:50;:::i;:::-;3558:60;;3514:114;3442:193;;;;:::o;3641:262::-;;3749:2;3737:9;3728:7;3724:23;3720:32;3717:2;;;3765:1;3762;3755:12;3717:2;3808:1;3833:53;3878:7;3869:6;3858:9;3854:22;3833:53;:::i;:::-;3823:63;;3779:117;3707:196;;;;:::o;3909:401::-;;;4031:2;4019:9;4010:7;4006:23;4002:32;3999:2;;;4047:1;4044;4037:12;3999:2;4090:1;4115:53;4160:7;4151:6;4140:9;4136:22;4115:53;:::i;:::-;4105:63;;4061:117;4217:2;4243:50;4285:7;4276:6;4265:9;4261:22;4243:50;:::i;:::-;4233:60;;4188:115;3989:321;;;;;:::o;4316:179::-;;4406:46;4448:3;4440:6;4406:46;:::i;:::-;4484:4;4479:3;4475:14;4461:28;;4396:99;;;;:::o;4501:142::-;4604:32;4630:5;4604:32;:::i;:::-;4599:3;4592:45;4582:61;;:::o;4649:108::-;4726:24;4744:5;4726:24;:::i;:::-;4721:3;4714:37;4704:53;;:::o;4763:118::-;4850:24;4868:5;4850:24;:::i;:::-;4845:3;4838:37;4828:53;;:::o;4917:732::-;;5065:54;5113:5;5065:54;:::i;:::-;5135:86;5214:6;5209:3;5135:86;:::i;:::-;5128:93;;5245:56;5295:5;5245:56;:::i;:::-;5324:7;5355:1;5340:284;5365:6;5362:1;5359:13;5340:284;;;5441:6;5435:13;5468:63;5527:3;5512:13;5468:63;:::i;:::-;5461:70;;5554:60;5607:6;5554:60;:::i;:::-;5544:70;;5400:224;5387:1;5384;5380:9;5375:14;;5340:284;;;5344:14;5640:3;5633:10;;5041:608;;;;;;;:::o;5655:109::-;5736:21;5751:5;5736:21;:::i;:::-;5731:3;5724:34;5714:50;;:::o;5770:185::-;5884:64;5942:5;5884:64;:::i;:::-;5879:3;5872:77;5862:93;;:::o;5961:147::-;6056:45;6095:5;6056:45;:::i;:::-;6051:3;6044:58;6034:74;;:::o;6114:364::-;;6230:39;6263:5;6230:39;:::i;:::-;6285:71;6349:6;6344:3;6285:71;:::i;:::-;6278:78;;6365:52;6410:6;6405:3;6398:4;6391:5;6387:16;6365:52;:::i;:::-;6442:29;6464:6;6442:29;:::i;:::-;6437:3;6433:39;6426:46;;6206:272;;;;;:::o;6484:367::-;;6647:67;6711:2;6706:3;6647:67;:::i;:::-;6640:74;;6744:34;6740:1;6735:3;6731:11;6724:55;6810:5;6805:2;6800:3;6796:12;6789:27;6842:2;6837:3;6833:12;6826:19;;6630:221;;;:::o;6857:374::-;;7020:67;7084:2;7079:3;7020:67;:::i;:::-;7013:74;;7117:34;7113:1;7108:3;7104:11;7097:55;7183:12;7178:2;7173:3;7169:12;7162:34;7222:2;7217:3;7213:12;7206:19;;7003:228;;;:::o;7237:370::-;;7400:67;7464:2;7459:3;7400:67;:::i;:::-;7393:74;;7497:34;7493:1;7488:3;7484:11;7477:55;7563:8;7558:2;7553:3;7549:12;7542:30;7598:2;7593:3;7589:12;7582:19;;7383:224;;;:::o;7613:366::-;;7776:67;7840:2;7835:3;7776:67;:::i;:::-;7769:74;;7873:34;7869:1;7864:3;7860:11;7853:55;7939:4;7934:2;7929:3;7925:12;7918:26;7970:2;7965:3;7961:12;7954:19;;7759:220;;;:::o;7985:325::-;;8148:67;8212:2;8207:3;8148:67;:::i;:::-;8141:74;;8245:29;8241:1;8236:3;8232:11;8225:50;8301:2;8296:3;8292:12;8285:19;;8131:179;;;:::o;8316:325::-;;8479:67;8543:2;8538:3;8479:67;:::i;:::-;8472:74;;8576:29;8572:1;8567:3;8563:11;8556:50;8632:2;8627:3;8623:12;8616:19;;8462:179;;;:::o;8647:384::-;;8810:67;8874:2;8869:3;8810:67;:::i;:::-;8803:74;;8907:34;8903:1;8898:3;8894:11;8887:55;8973:22;8968:2;8963:3;8959:12;8952:44;9022:2;9017:3;9013:12;9006:19;;8793:238;;;:::o;9037:329::-;;9200:67;9264:2;9259:3;9200:67;:::i;:::-;9193:74;;9297:33;9293:1;9288:3;9284:11;9277:54;9357:2;9352:3;9348:12;9341:19;;9183:183;;;:::o;9372:372::-;;9535:67;9599:2;9594:3;9535:67;:::i;:::-;9528:74;;9632:34;9628:1;9623:3;9619:11;9612:55;9698:10;9693:2;9688:3;9684:12;9677:32;9735:2;9730:3;9726:12;9719:19;;9518:226;;;:::o;9750:330::-;;9913:67;9977:2;9972:3;9913:67;:::i;:::-;9906:74;;10010:34;10006:1;10001:3;9997:11;9990:55;10071:2;10066:3;10062:12;10055:19;;9896:184;;;:::o;10086:373::-;;10249:67;10313:2;10308:3;10249:67;:::i;:::-;10242:74;;10346:34;10342:1;10337:3;10333:11;10326:55;10412:11;10407:2;10402:3;10398:12;10391:33;10450:2;10445:3;10441:12;10434:19;;10232:227;;;:::o;10465:369::-;;10628:67;10692:2;10687:3;10628:67;:::i;:::-;10621:74;;10725:34;10721:1;10716:3;10712:11;10705:55;10791:7;10786:2;10781:3;10777:12;10770:29;10825:2;10820:3;10816:12;10809:19;;10611:223;;;:::o;10840:368::-;;11003:67;11067:2;11062:3;11003:67;:::i;:::-;10996:74;;11100:34;11096:1;11091:3;11087:11;11080:55;11166:6;11161:2;11156:3;11152:12;11145:28;11199:2;11194:3;11190:12;11183:19;;10986:222;;;:::o;11214:324::-;;11377:67;11441:2;11436:3;11377:67;:::i;:::-;11370:74;;11474:28;11470:1;11465:3;11461:11;11454:49;11529:2;11524:3;11520:12;11513:19;;11360:178;;;:::o;11544:366::-;;11707:67;11771:2;11766:3;11707:67;:::i;:::-;11700:74;;11804:34;11800:1;11795:3;11791:11;11784:55;11870:4;11865:2;11860:3;11856:12;11849:26;11901:2;11896:3;11892:12;11885:19;;11690:220;;;:::o;11916:376::-;;12079:67;12143:2;12138:3;12079:67;:::i;:::-;12072:74;;12176:34;12172:1;12167:3;12163:11;12156:55;12242:14;12237:2;12232:3;12228:12;12221:36;12283:2;12278:3;12274:12;12267:19;;12062:230;;;:::o;12298:118::-;12385:24;12403:5;12385:24;:::i;:::-;12380:3;12373:37;12363:53;;:::o;12422:112::-;12505:22;12521:5;12505:22;:::i;:::-;12500:3;12493:35;12483:51;;:::o;12540:222::-;;12671:2;12660:9;12656:18;12648:26;;12684:71;12752:1;12741:9;12737:17;12728:6;12684:71;:::i;:::-;12638:124;;;;:::o;12768:254::-;;12915:2;12904:9;12900:18;12892:26;;12928:87;13012:1;13001:9;12997:17;12988:6;12928:87;:::i;:::-;12882:140;;;;:::o;13028:210::-;;13153:2;13142:9;13138:18;13130:26;;13166:65;13228:1;13217:9;13213:17;13204:6;13166:65;:::i;:::-;13120:118;;;;:::o;13244:276::-;;13402:2;13391:9;13387:18;13379:26;;13415:98;13510:1;13499:9;13495:17;13486:6;13415:98;:::i;:::-;13369:151;;;;:::o;13526:313::-;;13677:2;13666:9;13662:18;13654:26;;13726:9;13720:4;13716:20;13712:1;13701:9;13697:17;13690:47;13754:78;13827:4;13818:6;13754:78;:::i;:::-;13746:86;;13644:195;;;;:::o;13845:419::-;;14049:2;14038:9;14034:18;14026:26;;14098:9;14092:4;14088:20;14084:1;14073:9;14069:17;14062:47;14126:131;14252:4;14126:131;:::i;:::-;14118:139;;14016:248;;;:::o;14270:419::-;;14474:2;14463:9;14459:18;14451:26;;14523:9;14517:4;14513:20;14509:1;14498:9;14494:17;14487:47;14551:131;14677:4;14551:131;:::i;:::-;14543:139;;14441:248;;;:::o;14695:419::-;;14899:2;14888:9;14884:18;14876:26;;14948:9;14942:4;14938:20;14934:1;14923:9;14919:17;14912:47;14976:131;15102:4;14976:131;:::i;:::-;14968:139;;14866:248;;;:::o;15120:419::-;;15324:2;15313:9;15309:18;15301:26;;15373:9;15367:4;15363:20;15359:1;15348:9;15344:17;15337:47;15401:131;15527:4;15401:131;:::i;:::-;15393:139;;15291:248;;;:::o;15545:419::-;;15749:2;15738:9;15734:18;15726:26;;15798:9;15792:4;15788:20;15784:1;15773:9;15769:17;15762:47;15826:131;15952:4;15826:131;:::i;:::-;15818:139;;15716:248;;;:::o;15970:419::-;;16174:2;16163:9;16159:18;16151:26;;16223:9;16217:4;16213:20;16209:1;16198:9;16194:17;16187:47;16251:131;16377:4;16251:131;:::i;:::-;16243:139;;16141:248;;;:::o;16395:419::-;;16599:2;16588:9;16584:18;16576:26;;16648:9;16642:4;16638:20;16634:1;16623:9;16619:17;16612:47;16676:131;16802:4;16676:131;:::i;:::-;16668:139;;16566:248;;;:::o;16820:419::-;;17024:2;17013:9;17009:18;17001:26;;17073:9;17067:4;17063:20;17059:1;17048:9;17044:17;17037:47;17101:131;17227:4;17101:131;:::i;:::-;17093:139;;16991:248;;;:::o;17245:419::-;;17449:2;17438:9;17434:18;17426:26;;17498:9;17492:4;17488:20;17484:1;17473:9;17469:17;17462:47;17526:131;17652:4;17526:131;:::i;:::-;17518:139;;17416:248;;;:::o;17670:419::-;;17874:2;17863:9;17859:18;17851:26;;17923:9;17917:4;17913:20;17909:1;17898:9;17894:17;17887:47;17951:131;18077:4;17951:131;:::i;:::-;17943:139;;17841:248;;;:::o;18095:419::-;;18299:2;18288:9;18284:18;18276:26;;18348:9;18342:4;18338:20;18334:1;18323:9;18319:17;18312:47;18376:131;18502:4;18376:131;:::i;:::-;18368:139;;18266:248;;;:::o;18520:419::-;;18724:2;18713:9;18709:18;18701:26;;18773:9;18767:4;18763:20;18759:1;18748:9;18744:17;18737:47;18801:131;18927:4;18801:131;:::i;:::-;18793:139;;18691:248;;;:::o;18945:419::-;;19149:2;19138:9;19134:18;19126:26;;19198:9;19192:4;19188:20;19184:1;19173:9;19169:17;19162:47;19226:131;19352:4;19226:131;:::i;:::-;19218:139;;19116:248;;;:::o;19370:419::-;;19574:2;19563:9;19559:18;19551:26;;19623:9;19617:4;19613:20;19609:1;19598:9;19594:17;19587:47;19651:131;19777:4;19651:131;:::i;:::-;19643:139;;19541:248;;;:::o;19795:419::-;;19999:2;19988:9;19984:18;19976:26;;20048:9;20042:4;20038:20;20034:1;20023:9;20019:17;20012:47;20076:131;20202:4;20076:131;:::i;:::-;20068:139;;19966:248;;;:::o;20220:419::-;;20424:2;20413:9;20409:18;20401:26;;20473:9;20467:4;20463:20;20459:1;20448:9;20444:17;20437:47;20501:131;20627:4;20501:131;:::i;:::-;20493:139;;20391:248;;;:::o;20645:222::-;;20776:2;20765:9;20761:18;20753:26;;20789:71;20857:1;20846:9;20842:17;20833:6;20789:71;:::i;:::-;20743:124;;;;:::o;20873:831::-;;21174:3;21163:9;21159:19;21151:27;;21188:71;21256:1;21245:9;21241:17;21232:6;21188:71;:::i;:::-;21269:80;21345:2;21334:9;21330:18;21321:6;21269:80;:::i;:::-;21396:9;21390:4;21386:20;21381:2;21370:9;21366:18;21359:48;21424:108;21527:4;21518:6;21424:108;:::i;:::-;21416:116;;21542:72;21610:2;21599:9;21595:18;21586:6;21542:72;:::i;:::-;21624:73;21692:3;21681:9;21677:19;21668:6;21624:73;:::i;:::-;21141:563;;;;;;;;:::o;21710:214::-;;21837:2;21826:9;21822:18;21814:26;;21850:67;21914:1;21903:9;21899:17;21890:6;21850:67;:::i;:::-;21804:120;;;;:::o;21930:132::-;;22020:3;22012:11;;22050:4;22045:3;22041:14;22033:22;;22002:60;;;:::o;22068:114::-;;22169:5;22163:12;22153:22;;22142:40;;;:::o;22188:99::-;;22274:5;22268:12;22258:22;;22247:40;;;:::o;22293:113::-;;22395:4;22390:3;22386:14;22378:22;;22368:38;;;:::o;22412:184::-;;22545:6;22540:3;22533:19;22585:4;22580:3;22576:14;22561:29;;22523:73;;;;:::o;22602:169::-;;22720:6;22715:3;22708:19;22760:4;22755:3;22751:14;22736:29;;22698:73;;;;:::o;22777:305::-;;22836:20;22854:1;22836:20;:::i;:::-;22831:25;;22870:20;22888:1;22870:20;:::i;:::-;22865:25;;23024:1;22956:66;22952:74;22949:1;22946:81;22943:2;;;23030:18;;:::i;:::-;22943:2;23074:1;23071;23067:9;23060:16;;22821:261;;;;:::o;23088:185::-;;23145:20;23163:1;23145:20;:::i;:::-;23140:25;;23179:20;23197:1;23179:20;:::i;:::-;23174:25;;23218:1;23208:2;;23223:18;;:::i;:::-;23208:2;23265:1;23262;23258:9;23253:14;;23130:143;;;;:::o;23279:348::-;;23342:20;23360:1;23342:20;:::i;:::-;23337:25;;23376:20;23394:1;23376:20;:::i;:::-;23371:25;;23564:1;23496:66;23492:74;23489:1;23486:81;23481:1;23474:9;23467:17;23463:105;23460:2;;;23571:18;;:::i;:::-;23460:2;23619:1;23616;23612:9;23601:20;;23327:300;;;;:::o;23633:191::-;;23693:20;23711:1;23693:20;:::i;:::-;23688:25;;23727:20;23745:1;23727:20;:::i;:::-;23722:25;;23766:1;23763;23760:8;23757:2;;;23771:18;;:::i;:::-;23757:2;23816:1;23813;23809:9;23801:17;;23678:146;;;;:::o;23830:96::-;;23896:24;23914:5;23896:24;:::i;:::-;23885:35;;23875:51;;;:::o;23932:104::-;;24006:24;24024:5;24006:24;:::i;:::-;23995:35;;23985:51;;;:::o;24042:90::-;;24119:5;24112:13;24105:21;24094:32;;24084:48;;;:::o;24138:126::-;;24215:42;24208:5;24204:54;24193:65;;24183:81;;;:::o;24270:77::-;;24336:5;24325:16;;24315:32;;;:::o;24353:86::-;;24428:4;24421:5;24417:16;24406:27;;24396:43;;;:::o;24445:180::-;;24555:64;24613:5;24555:64;:::i;:::-;24542:77;;24532:93;;;:::o;24631:140::-;;24741:24;24759:5;24741:24;:::i;:::-;24728:37;;24718:53;;;:::o;24777:121::-;;24868:24;24886:5;24868:24;:::i;:::-;24855:37;;24845:53;;;:::o;24904:307::-;24972:1;24982:113;24996:6;24993:1;24990:13;24982:113;;;25081:1;25076:3;25072:11;25066:18;25062:1;25057:3;25053:11;25046:39;25018:2;25015:1;25011:10;25006:15;;24982:113;;;25113:6;25110:1;25107:13;25104:2;;;25193:1;25184:6;25179:3;25175:16;25168:27;25104:2;24953:258;;;;:::o;25217:320::-;;25298:1;25292:4;25288:12;25278:22;;25345:1;25339:4;25335:12;25366:18;25356:2;;25422:4;25414:6;25410:17;25400:27;;25356:2;25484;25476:6;25473:14;25453:18;25450:38;25447:2;;;25503:18;;:::i;:::-;25447:2;25268:269;;;;:::o;25543:233::-;;25605:24;25623:5;25605:24;:::i;:::-;25596:33;;25651:66;25644:5;25641:77;25638:2;;;25721:18;;:::i;:::-;25638:2;25768:1;25761:5;25757:13;25750:20;;25586:190;;;:::o;25782:180::-;25830:77;25827:1;25820:88;25927:4;25924:1;25917:15;25951:4;25948:1;25941:15;25968:180;26016:77;26013:1;26006:88;26113:4;26110:1;26103:15;26137:4;26134:1;26127:15;26154:180;26202:77;26199:1;26192:88;26299:4;26296:1;26289:15;26323:4;26320:1;26313:15;26340:102;;26432:2;26428:7;26423:2;26416:5;26412:14;26408:28;26398:38;;26388:54;;;:::o;26448:122::-;26521:24;26539:5;26521:24;:::i;:::-;26514:5;26511:35;26501:2;;26560:1;26557;26550:12;26501:2;26491:79;:::o;26576:138::-;26657:32;26683:5;26657:32;:::i;:::-;26650:5;26647:43;26637:2;;26704:1;26701;26694:12;26637:2;26627:87;:::o;26720:116::-;26790:21;26805:5;26790:21;:::i;:::-;26783:5;26780:32;26770:2;;26826:1;26823;26816:12;26770:2;26760:76;:::o;26842:122::-;26915:24;26933:5;26915:24;:::i;:::-;26908:5;26905:35;26895:2;;26954:1;26951;26944:12;26895:2;26885:79;:::o
Swarm Source
ipfs://7e01e79a2aa45b639552154fb1e4e9b5d97137afbdc447df9c758dcec74cc8aa
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.