Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 19 from a total of 19 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 14608857 | 1086 days ago | IN | 0 ETH | 0.00237432 | ||||
Transfer | 14527693 | 1099 days ago | IN | 0 ETH | 0.00821573 | ||||
Transfer | 14527683 | 1099 days ago | IN | 0 ETH | 0.01127305 | ||||
Approve | 14367172 | 1124 days ago | IN | 0 ETH | 0.00141112 | ||||
Set Swap And Liq... | 14367157 | 1124 days ago | IN | 0 ETH | 0.00056332 | ||||
Transfer | 14302621 | 1134 days ago | IN | 0 ETH | 0.01337055 | ||||
Transfer | 14302612 | 1134 days ago | IN | 0 ETH | 0.01131218 | ||||
Transfer | 14302569 | 1134 days ago | IN | 0 ETH | 0.01117475 | ||||
Transfer | 14302569 | 1134 days ago | IN | 0 ETH | 0.01117475 | ||||
Transfer | 14302516 | 1134 days ago | IN | 0 ETH | 0.0093933 | ||||
Transfer | 14302510 | 1134 days ago | IN | 0 ETH | 0.00974224 | ||||
Approve | 14302493 | 1134 days ago | IN | 0 ETH | 0.00198833 | ||||
Approve | 14286123 | 1136 days ago | IN | 0 ETH | 0.00179709 | ||||
Approve | 14277644 | 1137 days ago | IN | 0 ETH | 0.00325924 | ||||
Transfer | 14270942 | 1139 days ago | IN | 0 ETH | 0.01123765 | ||||
Transfer Ownersh... | 14262238 | 1140 days ago | IN | 0 ETH | 0.00119004 | ||||
Transfer | 14262236 | 1140 days ago | IN | 0 ETH | 0.00437148 | ||||
Exclude From Fee | 14262221 | 1140 days ago | IN | 0 ETH | 0.00154351 | ||||
Exclude From Max... | 14262215 | 1140 days ago | IN | 0 ETH | 0.00156711 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CANDIES
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-23 */ pragma solidity 0.8.10; // SPDX-License-Identifier: Unlicensed 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); } // 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 no longer needed starting with Solidity 0.8. 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. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * 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; } } } /* * @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) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // 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; // solhint-disable-next-line no-inline-assembly 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"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (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"); // solhint-disable-next-line avoid-low-level-calls (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"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private 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 // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(block.timestamp > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } 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; } contract CANDIES is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address public _charityWallet = 0x948443F6dF61aEc77064AaC59952EA7837C156Df; address public _developmentWallet = 0x322e53DEe6cb35AEa181234D42698BdCAd1a69d5; address public _burnAddress = 0x000000000000000000000000000000000000dEaD; address public _stakingAddress = 0x23801Eb30E249692F38Bc074523FCeafB98a5c3D; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public _isExcludedFromFee; mapping (address => bool) public _isExcludedFromMaxWalletToken; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "Candyverse Coin"; string private _symbol = "CANDIES"; uint8 private _decimals = 9; uint256 public liquidityFee = 300; uint256 public _developmentFee = 100; uint256 public _charityFee = 100; uint256 public _reflectionFee = 600; uint256 private _previousReflectionFee = _reflectionFee; uint256 public _burnFee = 200; uint256 private _previousBurnFee = _burnFee; uint256 public _stakingFee = 200; uint256 private _previousStakingFee = _stakingFee; uint256 private _liquidityFee = liquidityFee.add(_developmentFee).add(_charityFee); uint256 private _previousLiquidityFee = _liquidityFee; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxSaleTxAmount = 1250000000000 * (10**9); uint256 public _maxWalletAmount = 1000000000000000 * (10**9); uint256 private numTokensSellToAddToLiquidity = 1000000000 * (10**9); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_stakingAddress] = true; _isExcludedFromMaxWalletToken[uniswapV2Pair] = true; _isExcludedFromMaxWalletToken[address(this)] = true; _isExcludedFromMaxWalletToken[owner()] = true; _isExcludedFromMaxWalletToken[_stakingAddress] = 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 isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } 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 excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already included"); 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 excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setReflectionFeePercent(uint256 newFee) external onlyOwner() { require(_stakingFee.add(_burnFee).add(liquidityFee).add(_developmentFee).add(_charityFee).add(newFee) < 10000, "Percentage must be less than total transfer amount"); _reflectionFee = newFee; } function setStakingFeePercent(uint256 newFee) external onlyOwner() { require(_reflectionFee.add(_burnFee).add(liquidityFee).add(_developmentFee).add(_charityFee).add(newFee) < 10000, "Percentage must be less than total transfer amount"); _stakingFee = newFee; } function setBurnFeePercent(uint256 newFee) external onlyOwner() { require(_reflectionFee.add(_stakingFee).add(liquidityFee).add(_developmentFee).add(_charityFee).add(newFee) < 10000, "Percentage must be less than total transfer amount"); _burnFee = newFee; } function setLiquidityFeePercent(uint256 newFee) external onlyOwner() { require(_reflectionFee.add(_stakingFee).add(_burnFee).add(_developmentFee).add(_charityFee).add(newFee) < 10000, "Percentage must be less than total transfer amount"); liquidityFee = newFee; } function setDevelopmentFeePercent(uint256 newFee) external onlyOwner() { require(_reflectionFee.add(_stakingFee).add(_burnFee).add(liquidityFee).add(_charityFee).add(newFee) < 10000, "Percentage must be less than total transfer amount"); _developmentFee = newFee; } function setCharityFeePercent(uint256 newFee) external onlyOwner() { require(_reflectionFee.add(_stakingFee).add(_burnFee).add(liquidityFee).add(_developmentFee).add(newFee) < 10000, "Percentage must be less than total transfer amount"); _charityFee = newFee; } function setCharityWallet(address payable newWallet) external onlyOwner() { require(newWallet != address(0), "new wallet is the zero address"); _charityWallet = newWallet; } function setDevelopmentWallet(address payable newWallet) external onlyOwner() { require(newWallet != address(0), "new wallet is the zero address"); _developmentWallet = newWallet; } function setStakingWallet(address payable newAddress) external onlyOwner() { require(newAddress != address(0), "new wallet is the zero address"); _stakingAddress = newAddress; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSaleTxAmount(uint256 amount) external onlyOwner() { _maxSaleTxAmount = amount * 10**9; } function setMaxWalletAmount(uint256 amount) public onlyOwner { _maxWalletAmount = amount * 10**9; } function excludeFromMaxWalletToken(address account, bool excluded) public onlyOwner { require(_isExcludedFromMaxWalletToken[account] != excluded, "Account is already the value of 'excluded'"); _isExcludedFromMaxWalletToken[account] = excluded; } receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tBurn) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tBurn, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tBurn); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) { uint256 tFee = calculateReflectionFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tBurn = calculateBurnFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tBurn); return (tTransferAmount, tFee, tLiquidity, tBurn); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tBurn, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rBurn = tBurn.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rBurn); 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 _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function _takeBurn(uint256 tBurn) private { uint256 currentRate = _getRate(); uint256 rBurn = tBurn.mul(currentRate); _rOwned[_burnAddress] = _rOwned[_burnAddress].add(rBurn); if(_isExcluded[_burnAddress]) _tOwned[_burnAddress] = _tOwned[_burnAddress].add(tBurn); } function _takeStaking(uint256 tStaking) private { uint256 currentRate = _getRate(); uint256 rStaking = tStaking.mul(currentRate); _rOwned[_stakingAddress] = _rOwned[_stakingAddress].add(rStaking); if(_isExcluded[_stakingAddress]) _tOwned[_stakingAddress] = _tOwned[_stakingAddress].add(rStaking); } function calculateReflectionFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_reflectionFee).div(10**4); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div(10**4); } function calculateBurnFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_burnFee).div(10**4); } function calculateStakingFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_stakingFee).div(10**4); } function removeAllFee() private { _previousReflectionFee = _reflectionFee; _previousLiquidityFee = _liquidityFee; _previousBurnFee = _burnFee; _previousStakingFee = _stakingFee; _reflectionFee = 0; _liquidityFee = 0; _burnFee = 0; _stakingFee = 0; } function restoreAllFee() private { _reflectionFee = _previousReflectionFee; _liquidityFee = _previousLiquidityFee; _burnFee = _previousBurnFee; _stakingFee = _previousStakingFee; } 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 from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(to == uniswapV2Pair && from != owner() && to != owner()) { require(amount <= _maxSaleTxAmount, "Transfer amount exceeds the _maxSaleTxAmount."); } if(!_isExcludedFromMaxWalletToken[to] && to != uniswapV2Pair) { uint256 balanceRecepient = balanceOf(to); require(balanceRecepient + amount <= _maxWalletAmount, "Exceeds maximum wallet token amount"); } uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxSaleTxAmount) { contractTokenBalance = _maxSaleTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if (overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled) { contractTokenBalance = numTokensSellToAddToLiquidity; swapAndLiquify(contractTokenBalance); } bool takeFee = true; if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 fromLiquidityFee = contractTokenBalance.div(_liquidityFee).mul(liquidityFee); uint256 OtherTokens = contractTokenBalance.sub(fromLiquidityFee); uint256 half = fromLiquidityFee.div(2); uint256 otherHalf = fromLiquidityFee.sub(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half.add(OtherTokens)); uint256 newBalance = address(this).balance.sub(initialBalance); uint256 liquidityPart = newBalance.div(_liquidityFee).mul(liquidityFee); liquidityPart = liquidityPart.div(2); uint256 charityPart = newBalance.div(_liquidityFee).mul(_charityFee); uint256 developmentPart = newBalance.sub(liquidityPart).sub(charityPart); payable(_charityWallet).transfer(charityPart); payable(_developmentWallet).transfer(developmentPart); addLiquidity(otherHalf, liquidityPart); emit SwapAndLiquify(half.add(OtherTokens), liquidityPart, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); uint256 tStaking = calculateStakingFee(amount); if(tStaking > 0){ _takeStaking(tStaking); } if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount.sub(tStaking)); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount.sub(tStaking)); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount.sub(tStaking)); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount.sub(tStaking)); } else { _transferStandard(sender, recipient, amount.sub(tStaking)); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tBurn) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeBurn(tBurn); _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 tLiquidity, uint256 tBurn) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeBurn(tBurn); _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 tLiquidity, uint256 tBurn) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeBurn(tBurn); _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 tLiquidity, uint256 tBurn) = _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); _takeLiquidity(tLiquidity); _takeBurn(tBurn); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function withdrawToken(address _recipient, uint256 _amount) public onlyOwner returns(bool) { IERC20(address(this)).transfer(_recipient, _amount); return true; } function transferETH(address payable _recipient) public onlyOwner { _recipient.transfer(address(this).balance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxWalletToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSaleTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWalletToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","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":"uint256","name":"newFee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setCharityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setDevelopmentFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setReflectionFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSaleTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setStakingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newAddress","type":"address"}],"name":"setStakingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","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 payable","name":"_recipient","type":"address"}],"name":"transferETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600380546001600160a01b031990811673948443f6df61aec77064aac59952ea7837c156df1790915560048054821673322e53dee6cb35aea181234d42698bdcad1a69d517905560058054821661dead179055600680549091167323801eb30e249692f38bc074523fceafb98a5c3d17905569d3c21bcecceda1000000600e8190556200009490600019620005a4565b620000a290600019620005dd565b600f908155604080518082019091528181526e21b0b7323cbb32b939b29021b7b4b760891b6020909101908152620000de9160119190620004fe565b506040805180820190915260078082526643414e4449455360c81b60209092019182526200010f91601291620004fe565b5060138054600960ff1990911617905561012c6014819055606460158190556016819055610258601781905560185560c86019819055601a819055601b819055601c5562000183916200016f9082620004e9602090811b62001b5f17901c565b620004e960201b62001b5f1790919060201c565b601d819055601e55601f805461ff0019166101001790556843c33c19375648000060205569d3c21bcecceda1000000602155670de0b6b3a7640000602255348015620001ce57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600f543360009081526007602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa15801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029d9190620005f7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003119190620005f7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200035f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003859190620005f7565b6001600160a01b0390811660a05281166080526001600a6000620003b16000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530808252600a855283822080548716600190811790915560065484168352848320805488168217905560a0519093168252600b948590528382208054871684179055815291822080549094168117909355620004436000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556006549091168152600b909252902080549091166001179055620004923390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e54604051620004da91815260200190565b60405180910390a3506200067a565b6000620004f7828462000622565b9392505050565b8280546200050c906200063d565b90600052602060002090601f0160209004810192826200053057600085556200057b565b82601f106200054b57805160ff19168380011785556200057b565b828001600101855582156200057b579182015b828111156200057b5782518255916020019190600101906200055e565b50620005899291506200058d565b5090565b5b808211156200058957600081556001016200058e565b600082620005c257634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b600082821015620005f257620005f2620005c7565b500390565b6000602082840312156200060a57600080fd5b81516001600160a01b0381168114620004f757600080fd5b60008219821115620006385762000638620005c7565b500190565b600181811c908216806200065257607f821691505b602082108114156200067457634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051613456620006d86000396000818161066301528181611db901528181611eb30152611f9f01526000818161040a015281816127600152818161281901528181612855015281816128c701526128ee01526134566000f3fe60806040526004361061036f5760003560e01c806372ac2486116101c6578063ae850281116100f7578063cea2695811610095578063dd4670641161006f578063dd46706414610a13578063dd62ed3e14610a33578063ea2f0b3714610a79578063f2fde38b14610a9957600080fd5b8063cea26958146109bd578063d1475185146109dd578063d50f6bf0146109f357600080fd5b8063b6c52324116100d1578063b6c5232414610952578063bd3900c014610967578063c0b0fda214610987578063c49b9a801461099d57600080fd5b8063ae850281146108fc578063af41063b14610912578063b5ee0ded1461093257600080fd5b806395d89b41116101645780639e281a981161013e5780639e281a9814610887578063a457c2d7146108a7578063a69df4b5146108c7578063a9059cbb146108dc57600080fd5b806395d89b411461082c57806398118cb4146108415780639d82faba1461085757600080fd5b806385320beb116101a057806385320beb1461079557806388f82020146107b55780638da5cb5b146107ee5780638ee88c531461080c57600080fd5b806372ac248614610725578063768dc7101461074557806383d593d51461077557600080fd5b80633685d419116102a057806349bd5a5e1161023e578063571236721161021857806357123672146106c45780636c0a24eb146106da57806370a08231146106f0578063715018a61461071057600080fd5b806349bd5a5e146106515780634a74bb021461068557806352390c02146106a457600080fd5b8063437823ec1161027a578063437823ec146105d157806343a18909146105f15780634549b039146106115780634680ff351461063157600080fd5b80633685d4191461057b578063395093511461059b57806340f8007a146105bb57600080fd5b806322b68ac91161030d5780632d838119116102e75780632d8381191461050357806330563bd714610523578063313ce567146105435780633206b4aa1461056557600080fd5b806322b68ac9146104a357806323b872dd146104c357806327a14fc2146104e357600080fd5b80631694505e116103495780631694505e146103f857806318160ddd146104445780631a860c3e146104635780631f7ede2b1461048357600080fd5b806306fdde031461037b578063095ea7b3146103a65780630a48c4da146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610ab9565b60405161039d9190612f4d565b60405180910390f35b3480156103b257600080fd5b506103c66103c1366004612fba565b610b4b565b604051901515815260200161039d565b3480156103e257600080fd5b506103f66103f1366004612fe6565b610b62565b005b34801561040457600080fd5b5061042c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161039d565b34801561045057600080fd5b50600e545b60405190815260200161039d565b34801561046f57600080fd5b506103f661047e366004612fff565b610ba9565b34801561048f57600080fd5b506103f661049e366004612fe6565b610c1b565b3480156104af57600080fd5b506103f66104be36600461302a565b610c9d565b3480156104cf57600080fd5b506103c66104de366004613063565b610d74565b3480156104ef57600080fd5b506103f66104fe366004612fe6565b610ddd565b34801561050f57600080fd5b5061045561051e366004612fe6565b610e1b565b34801561052f57600080fd5b506103f661053e366004612fff565b610e9f565b34801561054f57600080fd5b5060135460405160ff909116815260200161039d565b34801561057157600080fd5b5061045560175481565b34801561058757600080fd5b506103f6610596366004612fff565b610f11565b3480156105a757600080fd5b506103c66105b6366004612fba565b6110c8565b3480156105c757600080fd5b5061045560165481565b3480156105dd57600080fd5b506103f66105ec366004612fff565b6110fe565b3480156105fd57600080fd5b5060035461042c906001600160a01b031681565b34801561061d57600080fd5b5061045561062c3660046130a4565b61114c565b34801561063d57600080fd5b506103f661064c366004612fe6565b6111db565b34801561065d57600080fd5b5061042c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561069157600080fd5b50601f546103c690610100900460ff1681565b3480156106b057600080fd5b506103f66106bf366004612fff565b611257565b3480156106d057600080fd5b5061045560205481565b3480156106e657600080fd5b5061045560215481565b3480156106fc57600080fd5b5061045561070b366004612fff565b6113aa565b34801561071c57600080fd5b506103f6611409565b34801561073157600080fd5b506103f6610740366004612fff565b61146b565b34801561075157600080fd5b506103c6610760366004612fff565b600a6020526000908152604090205460ff1681565b34801561078157600080fd5b506103f6610790366004612fe6565b6114dd565b3480156107a157600080fd5b5060045461042c906001600160a01b031681565b3480156107c157600080fd5b506103c66107d0366004612fff565b6001600160a01b03166000908152600c602052604090205460ff1690565b3480156107fa57600080fd5b506000546001600160a01b031661042c565b34801561081857600080fd5b506103f6610827366004612fe6565b611559565b34801561083857600080fd5b506103906115d5565b34801561084d57600080fd5b5061045560145481565b34801561086357600080fd5b506103c6610872366004612fff565b600b6020526000908152604090205460ff1681565b34801561089357600080fd5b506103c66108a2366004612fba565b6115e4565b3480156108b357600080fd5b506103c66108c2366004612fba565b611680565b3480156108d357600080fd5b506103f66116cf565b3480156108e857600080fd5b506103c66108f7366004612fba565b6117d5565b34801561090857600080fd5b50610455601b5481565b34801561091e57600080fd5b506103f661092d366004612fe6565b6117e2565b34801561093e57600080fd5b5060065461042c906001600160a01b031681565b34801561095e57600080fd5b50600254610455565b34801561097357600080fd5b5060055461042c906001600160a01b031681565b34801561099357600080fd5b5061045560195481565b3480156109a957600080fd5b506103f66109b83660046130c9565b61185e565b3480156109c957600080fd5b506103f66109d8366004612fe6565b6118dc565b3480156109e957600080fd5b5061045560155481565b3480156109ff57600080fd5b506103f6610a0e366004612fff565b611958565b348015610a1f57600080fd5b506103f6610a2e366004612fe6565b6119b7565b348015610a3f57600080fd5b50610455610a4e3660046130e6565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610a8557600080fd5b506103f6610a94366004612fff565b611a3c565b348015610aa557600080fd5b506103f6610ab4366004612fff565b611a87565b606060118054610ac890613114565b80601f0160208091040260200160405190810160405280929190818152602001828054610af490613114565b8015610b415780601f10610b1657610100808354040283529160200191610b41565b820191906000526020600020905b815481529060010190602001808311610b2457829003601f168201915b5050505050905090565b6000610b58338484611b6b565b5060015b92915050565b6000546001600160a01b03163314610b955760405162461bcd60e51b8152600401610b8c9061314f565b60405180910390fd5b610ba381633b9aca0061319a565b60205550565b6000546001600160a01b03163314610bd35760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b038116610bf95760405162461bcd60e51b8152600401610b8c906131b9565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610c455760405162461bcd60e51b8152600401610b8c9061314f565b612710610c7b82610c75601654610c75601554610c75601454610c75601954601b54611b5f90919063ffffffff16565b90611b5f565b10610c985760405162461bcd60e51b8152600401610b8c906131f0565b601755565b6000546001600160a01b03163314610cc75760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415610d495760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610b8c565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610d81848484611c8f565b610dd38433610dce856040518060600160405280602881526020016133b4602891396001600160a01b038a1660009081526009602090815260408083203384529091529020549190612059565b611b6b565b5060019392505050565b6000546001600160a01b03163314610e075760405162461bcd60e51b8152600401610b8c9061314f565b610e1581633b9aca0061319a565b60215550565b6000600f54821115610e825760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b8c565b6000610e8c612085565b9050610e9883826120a8565b9392505050565b6000546001600160a01b03163314610ec95760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b038116610eef5760405162461bcd60e51b8152600401610b8c906131b9565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f3b5760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b0381166000908152600c602052604090205460ff16610fa35760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610b8c565b60005b600d548110156110c457816001600160a01b0316600d8281548110610fcd57610fcd613242565b6000918252602090912001546001600160a01b031614156110b257600d8054610ff890600190613258565b8154811061100857611008613242565b600091825260209091200154600d80546001600160a01b03909216918390811061103457611034613242565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600882526040808220829055600c90925220805460ff19169055600d80548061108c5761108c61326f565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110bc81613285565b915050610fa6565b5050565b3360008181526009602090815260408083206001600160a01b03871684529091528120549091610b58918590610dce9086611b5f565b6000546001600160a01b031633146111285760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000600e548311156111a05760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b8c565b816111c05760006111b0846120b4565b50949650610b5c95505050505050565b60006111cb846120b4565b50939650610b5c95505050505050565b6000546001600160a01b031633146112055760405162461bcd60e51b8152600401610b8c9061314f565b61271061123582610c75601654610c75601454610c75601954610c75601b54601754611b5f90919063ffffffff16565b106112525760405162461bcd60e51b8152600401610b8c906131f0565b601555565b6000546001600160a01b031633146112815760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b0381166000908152600c602052604090205460ff16156112ea5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b8c565b6001600160a01b03811660009081526007602052604090205415611344576001600160a01b03811660009081526007602052604090205461132a90610e1b565b6001600160a01b0382166000908152600860205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600c602052604081205460ff16156113e757506001600160a01b031660009081526008602052604090205490565b6001600160a01b038216600090815260076020526040902054610b5c90610e1b565b6000546001600160a01b031633146114335760405162461bcd60e51b8152600401610b8c9061314f565b600080546040516001600160a01b03909116906000805160206133dc833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146114955760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b0381166114bb5760405162461bcd60e51b8152600401610b8c906131b9565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115075760405162461bcd60e51b8152600401610b8c9061314f565b61271061153782610c75601654610c75601554610c75601454610c75601954601754611b5f90919063ffffffff16565b106115545760405162461bcd60e51b8152600401610b8c906131f0565b601b55565b6000546001600160a01b031633146115835760405162461bcd60e51b8152600401610b8c9061314f565b6127106115b382610c75601654610c75601554610c75601954610c75601b54601754611b5f90919063ffffffff16565b106115d05760405162461bcd60e51b8152600401610b8c906131f0565b601455565b606060128054610ac890613114565b600080546001600160a01b0316331461160f5760405162461bcd60e51b8152600401610b8c9061314f565b60405163a9059cbb60e01b81526001600160a01b038416600482015260248101839052309063a9059cbb906044016020604051808303816000875af115801561165c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd391906132a0565b6000610b583384610dce856040518060600160405280602581526020016133fc602591393360009081526009602090815260408083206001600160a01b038d1684529091529020549190612059565b6001546001600160a01b031633146117355760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610b8c565b60025442116117865760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610b8c565b600154600080546040516001600160a01b0393841693909116916000805160206133dc83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610b58338484611c8f565b6000546001600160a01b0316331461180c5760405162461bcd60e51b8152600401610b8c9061314f565b61271061183c82610c75601554610c75601454610c75601954610c75601b54601754611b5f90919063ffffffff16565b106118595760405162461bcd60e51b8152600401610b8c906131f0565b601655565b6000546001600160a01b031633146118885760405162461bcd60e51b8152600401610b8c9061314f565b601f80548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906118d190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146119065760405162461bcd60e51b8152600401610b8c9061314f565b61271061193682610c75601654610c75601554610c75601454610c75601b54601754611b5f90919063ffffffff16565b106119535760405162461bcd60e51b8152600401610b8c906131f0565b601955565b6000546001600160a01b031633146119825760405162461bcd60e51b8152600401610b8c9061314f565b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156110c4573d6000803e3d6000fd5b6000546001600160a01b031633146119e15760405162461bcd60e51b8152600401610b8c9061314f565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055611a1081426132bd565b600255600080546040516001600160a01b03909116906000805160206133dc833981519152908390a350565b6000546001600160a01b03163314611a665760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b03163314611ab15760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b038116611b165760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b8c565b600080546040516001600160a01b03808516939216916000805160206133dc83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e9882846132bd565b6001600160a01b038316611bcd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b8c565b6001600160a01b038216611c2e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b8c565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611cf35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b8c565b6001600160a01b038216611d555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b8c565b60008111611db75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b8c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148015611e0657506000546001600160a01b03848116911614155b8015611e2057506000546001600160a01b03838116911614155b15611e8d57602054811115611e8d5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860448201526c29b0b632aa3c20b6b7bab73a1760991b6064820152608401610b8c565b6001600160a01b0382166000908152600b602052604090205460ff16158015611ee857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611f64576000611ef8836113aa565b602154909150611f0883836132bd565b1115611f625760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610b8c565b505b6000611f6f306113aa565b90506020548110611f7f57506020545b60225481108015908190611f965750601f5460ff16155b8015611fd457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015611fe75750601f54610100900460ff165b15611ffa576022549150611ffa8261210f565b6001600160a01b0385166000908152600a602052604090205460019060ff168061203c57506001600160a01b0385166000908152600a602052604090205460ff165b15612045575060005b612051868686846122c9565b505050505050565b6000818484111561207d5760405162461bcd60e51b8152600401610b8c9190612f4d565b505050900390565b60008060006120926124be565b90925090506120a182826120a8565b9250505090565b6000610e9882846132d5565b60008060008060008060008060008060006120ce8c612640565b935093509350935060008060006120ef8f8787876120ea612085565b61268f565b919f509d509b509599509397509195509350505050919395979092949650565b601f805460ff19166001179055601454601d5460009161213a916121349085906120a8565b906126f1565b9050600061214883836126fd565b905060006121578360026120a8565b9050600061216584836126fd565b90504761217a6121758486611b5f565b612709565b600061218647836126fd565b905060006121a5601454612134601d54856120a890919063ffffffff16565b90506121b28160026120a8565b905060006121d1601654612134601d54866120a890919063ffffffff16565b905060006121e9826121e386866126fd565b906126fd565b6003546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015612224573d6000803e3d6000fd5b506004546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561225f573d6000803e3d6000fd5b5061226a86846128c1565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561612295888a611b5f565b6040805191825260208201869052810188905260600160405180910390a15050601f805460ff191690555050505050505050565b806122fd576122fd60178054601855601d8054601e5560198054601a55601b8054601c556000938490559183905582905555565b6000612308836129c0565b9050801561231957612319816129e3565b6001600160a01b0385166000908152600c602052604090205460ff16801561235a57506001600160a01b0384166000908152600c602052604090205460ff16155b1561237857612373858561236e86856126fd565b612aa3565b612495565b6001600160a01b0385166000908152600c602052604090205460ff161580156123b957506001600160a01b0384166000908152600c602052604090205460ff165b156123d25761237385856123cd86856126fd565b612be9565b6001600160a01b0385166000908152600c602052604090205460ff1615801561241457506001600160a01b0384166000908152600c602052604090205460ff16155b1561242d57612373858561242886856126fd565b612ca8565b6001600160a01b0385166000908152600c602052604090205460ff16801561246d57506001600160a01b0384166000908152600c602052604090205460ff165b1561248657612373858561248186856126fd565b612d02565b612495858561242886856126fd565b816124b7576124b7601854601755601e54601d55601a54601955601c54601b55565b5050505050565b600f54600e546000918291825b600d54811015612610578260076000600d84815481106124ed576124ed613242565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061255857508160086000600d848154811061253157612531613242565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561256e57600f54600e54945094505050509091565b6125b460076000600d848154811061258857612588613242565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906126fd565b92506125fc60086000600d84815481106125d0576125d0613242565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906126fd565b91508061260881613285565b9150506124cb565b50600e54600f54612620916120a8565b82101561263757600f54600e549350935050509091565b90939092509050565b600080600080600061265186612d8b565b9050600061265e87612da8565b9050600061266b88612dc5565b9050600061267f826121e385818d896126fd565b9993985091965094509092505050565b600080808061269e89866126f1565b905060006126ac89876126f1565b905060006126ba89886126f1565b905060006126c889896126f1565b905060006126dc826121e3858189896126fd565b949d949c50929a509298505050505050505050565b6000610e98828461319a565b6000610e988284613258565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061273e5761273e613242565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e091906132f7565b816001815181106127f3576127f3613242565b60200260200101906001600160a01b031690816001600160a01b03168152505061283e307f000000000000000000000000000000000000000000000000000000000000000084611b6b565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612893908590600090869030904290600401613314565b600060405180830381600087803b1580156128ad57600080fd5b505af1158015612051573d6000803e3d6000fd5b6128ec307f000000000000000000000000000000000000000000000000000000000000000084611b6b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806129336000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561299b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b79190613385565b6000610b5c6127106129dd601b54856126f190919063ffffffff16565b906120a8565b60006129ed612085565b905060006129fb83836126f1565b6006546001600160a01b0316600090815260076020526040902054909150612a239082611b5f565b600680546001600160a01b0390811660009081526007602090815260408083209590955592549091168152600c909152205460ff1615612a9e576006546001600160a01b0316600090815260086020526040902054612a829082611b5f565b6006546001600160a01b03166000908152600860205260409020555b505050565b6000806000806000806000612ab7886120b4565b9650965096509650965096509650612afd88600860008d6001600160a01b03166001600160a01b03168152602001908152602001600020546126fd90919063ffffffff16565b6001600160a01b038b16600090815260086020908152604080832093909355600790522054612b2c90886126fd565b6001600160a01b03808c1660009081526007602052604080822093909355908b1681522054612b5b9087611b5f565b6001600160a01b038a16600090815260076020526040902055612b7d82612de2565b612b8681612e6a565b612b908584612f29565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612bd591815260200190565b60405180910390a350505050505050505050565b6000806000806000806000612bfd886120b4565b9650965096509650965096509650612c4387600760008d6001600160a01b03166001600160a01b03168152602001908152602001600020546126fd90919063ffffffff16565b6001600160a01b03808c16600090815260076020908152604080832094909455918c16815260089091522054612c799085611b5f565b6001600160a01b038a16600090815260086020908152604080832093909355600790522054612b5b9087611b5f565b6000806000806000806000612cbc886120b4565b9650965096509650965096509650612b2c87600760008d6001600160a01b03166001600160a01b03168152602001908152602001600020546126fd90919063ffffffff16565b6000806000806000806000612d16886120b4565b9650965096509650965096509650612d5c88600860008d6001600160a01b03166001600160a01b03168152602001908152602001600020546126fd90919063ffffffff16565b6001600160a01b038b16600090815260086020908152604080832093909355600790522054612c4390886126fd565b6000610b5c6127106129dd601754856126f190919063ffffffff16565b6000610b5c6127106129dd601d54856126f190919063ffffffff16565b6000610b5c6127106129dd601954856126f190919063ffffffff16565b6000612dec612085565b90506000612dfa83836126f1565b30600090815260076020526040902054909150612e179082611b5f565b30600090815260076020908152604080832093909355600c9052205460ff1615612a9e5730600090815260086020526040902054612e559084611b5f565b30600090815260086020526040902055505050565b6000612e74612085565b90506000612e8283836126f1565b6005546001600160a01b0316600090815260076020526040902054909150612eaa9082611b5f565b600580546001600160a01b0390811660009081526007602090815260408083209590955592549091168152600c909152205460ff1615612a9e576005546001600160a01b0316600090815260086020526040902054612f099084611b5f565b6005546001600160a01b0316600090815260086020526040902055505050565b600f54612f3690836126fd565b600f55601054612f469082611b5f565b6010555050565b600060208083528351808285015260005b81811015612f7a57858101830151858201604001528201612f5e565b81811115612f8c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612fb757600080fd5b50565b60008060408385031215612fcd57600080fd5b8235612fd881612fa2565b946020939093013593505050565b600060208284031215612ff857600080fd5b5035919050565b60006020828403121561301157600080fd5b8135610e9881612fa2565b8015158114612fb757600080fd5b6000806040838503121561303d57600080fd5b823561304881612fa2565b915060208301356130588161301c565b809150509250929050565b60008060006060848603121561307857600080fd5b833561308381612fa2565b9250602084013561309381612fa2565b929592945050506040919091013590565b600080604083850312156130b757600080fd5b8235915060208301356130588161301c565b6000602082840312156130db57600080fd5b8135610e988161301c565b600080604083850312156130f957600080fd5b823561310481612fa2565b9150602083013561305881612fa2565b600181811c9082168061312857607f821691505b6020821081141561314957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156131b4576131b4613184565b500290565b6020808252601e908201527f6e65772077616c6c657420697320746865207a65726f20616464726573730000604082015260600190565b60208082526032908201527f50657263656e74616765206d757374206265206c657373207468616e20746f74604082015271185b081d1c985b9cd9995c88185b5bdd5b9d60721b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008282101561326a5761326a613184565b500390565b634e487b7160e01b600052603160045260246000fd5b600060001982141561329957613299613184565b5060010190565b6000602082840312156132b257600080fd5b8151610e988161301c565b600082198211156132d0576132d0613184565b500190565b6000826132f257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561330957600080fd5b8151610e9881612fa2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133645784516001600160a01b03168352938301939183019160010161333f565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561339a57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209bb739a58a29af53d9cfccc5dd0031048af821fcdf61ef81b655a8445222e00964736f6c634300080a0033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806372ac2486116101c6578063ae850281116100f7578063cea2695811610095578063dd4670641161006f578063dd46706414610a13578063dd62ed3e14610a33578063ea2f0b3714610a79578063f2fde38b14610a9957600080fd5b8063cea26958146109bd578063d1475185146109dd578063d50f6bf0146109f357600080fd5b8063b6c52324116100d1578063b6c5232414610952578063bd3900c014610967578063c0b0fda214610987578063c49b9a801461099d57600080fd5b8063ae850281146108fc578063af41063b14610912578063b5ee0ded1461093257600080fd5b806395d89b41116101645780639e281a981161013e5780639e281a9814610887578063a457c2d7146108a7578063a69df4b5146108c7578063a9059cbb146108dc57600080fd5b806395d89b411461082c57806398118cb4146108415780639d82faba1461085757600080fd5b806385320beb116101a057806385320beb1461079557806388f82020146107b55780638da5cb5b146107ee5780638ee88c531461080c57600080fd5b806372ac248614610725578063768dc7101461074557806383d593d51461077557600080fd5b80633685d419116102a057806349bd5a5e1161023e578063571236721161021857806357123672146106c45780636c0a24eb146106da57806370a08231146106f0578063715018a61461071057600080fd5b806349bd5a5e146106515780634a74bb021461068557806352390c02146106a457600080fd5b8063437823ec1161027a578063437823ec146105d157806343a18909146105f15780634549b039146106115780634680ff351461063157600080fd5b80633685d4191461057b578063395093511461059b57806340f8007a146105bb57600080fd5b806322b68ac91161030d5780632d838119116102e75780632d8381191461050357806330563bd714610523578063313ce567146105435780633206b4aa1461056557600080fd5b806322b68ac9146104a357806323b872dd146104c357806327a14fc2146104e357600080fd5b80631694505e116103495780631694505e146103f857806318160ddd146104445780631a860c3e146104635780631f7ede2b1461048357600080fd5b806306fdde031461037b578063095ea7b3146103a65780630a48c4da146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610ab9565b60405161039d9190612f4d565b60405180910390f35b3480156103b257600080fd5b506103c66103c1366004612fba565b610b4b565b604051901515815260200161039d565b3480156103e257600080fd5b506103f66103f1366004612fe6565b610b62565b005b34801561040457600080fd5b5061042c7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161039d565b34801561045057600080fd5b50600e545b60405190815260200161039d565b34801561046f57600080fd5b506103f661047e366004612fff565b610ba9565b34801561048f57600080fd5b506103f661049e366004612fe6565b610c1b565b3480156104af57600080fd5b506103f66104be36600461302a565b610c9d565b3480156104cf57600080fd5b506103c66104de366004613063565b610d74565b3480156104ef57600080fd5b506103f66104fe366004612fe6565b610ddd565b34801561050f57600080fd5b5061045561051e366004612fe6565b610e1b565b34801561052f57600080fd5b506103f661053e366004612fff565b610e9f565b34801561054f57600080fd5b5060135460405160ff909116815260200161039d565b34801561057157600080fd5b5061045560175481565b34801561058757600080fd5b506103f6610596366004612fff565b610f11565b3480156105a757600080fd5b506103c66105b6366004612fba565b6110c8565b3480156105c757600080fd5b5061045560165481565b3480156105dd57600080fd5b506103f66105ec366004612fff565b6110fe565b3480156105fd57600080fd5b5060035461042c906001600160a01b031681565b34801561061d57600080fd5b5061045561062c3660046130a4565b61114c565b34801561063d57600080fd5b506103f661064c366004612fe6565b6111db565b34801561065d57600080fd5b5061042c7f00000000000000000000000013f5a9aa90793381ba5e4954fc61c30972dffa1381565b34801561069157600080fd5b50601f546103c690610100900460ff1681565b3480156106b057600080fd5b506103f66106bf366004612fff565b611257565b3480156106d057600080fd5b5061045560205481565b3480156106e657600080fd5b5061045560215481565b3480156106fc57600080fd5b5061045561070b366004612fff565b6113aa565b34801561071c57600080fd5b506103f6611409565b34801561073157600080fd5b506103f6610740366004612fff565b61146b565b34801561075157600080fd5b506103c6610760366004612fff565b600a6020526000908152604090205460ff1681565b34801561078157600080fd5b506103f6610790366004612fe6565b6114dd565b3480156107a157600080fd5b5060045461042c906001600160a01b031681565b3480156107c157600080fd5b506103c66107d0366004612fff565b6001600160a01b03166000908152600c602052604090205460ff1690565b3480156107fa57600080fd5b506000546001600160a01b031661042c565b34801561081857600080fd5b506103f6610827366004612fe6565b611559565b34801561083857600080fd5b506103906115d5565b34801561084d57600080fd5b5061045560145481565b34801561086357600080fd5b506103c6610872366004612fff565b600b6020526000908152604090205460ff1681565b34801561089357600080fd5b506103c66108a2366004612fba565b6115e4565b3480156108b357600080fd5b506103c66108c2366004612fba565b611680565b3480156108d357600080fd5b506103f66116cf565b3480156108e857600080fd5b506103c66108f7366004612fba565b6117d5565b34801561090857600080fd5b50610455601b5481565b34801561091e57600080fd5b506103f661092d366004612fe6565b6117e2565b34801561093e57600080fd5b5060065461042c906001600160a01b031681565b34801561095e57600080fd5b50600254610455565b34801561097357600080fd5b5060055461042c906001600160a01b031681565b34801561099357600080fd5b5061045560195481565b3480156109a957600080fd5b506103f66109b83660046130c9565b61185e565b3480156109c957600080fd5b506103f66109d8366004612fe6565b6118dc565b3480156109e957600080fd5b5061045560155481565b3480156109ff57600080fd5b506103f6610a0e366004612fff565b611958565b348015610a1f57600080fd5b506103f6610a2e366004612fe6565b6119b7565b348015610a3f57600080fd5b50610455610a4e3660046130e6565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610a8557600080fd5b506103f6610a94366004612fff565b611a3c565b348015610aa557600080fd5b506103f6610ab4366004612fff565b611a87565b606060118054610ac890613114565b80601f0160208091040260200160405190810160405280929190818152602001828054610af490613114565b8015610b415780601f10610b1657610100808354040283529160200191610b41565b820191906000526020600020905b815481529060010190602001808311610b2457829003601f168201915b5050505050905090565b6000610b58338484611b6b565b5060015b92915050565b6000546001600160a01b03163314610b955760405162461bcd60e51b8152600401610b8c9061314f565b60405180910390fd5b610ba381633b9aca0061319a565b60205550565b6000546001600160a01b03163314610bd35760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b038116610bf95760405162461bcd60e51b8152600401610b8c906131b9565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610c455760405162461bcd60e51b8152600401610b8c9061314f565b612710610c7b82610c75601654610c75601554610c75601454610c75601954601b54611b5f90919063ffffffff16565b90611b5f565b10610c985760405162461bcd60e51b8152600401610b8c906131f0565b601755565b6000546001600160a01b03163314610cc75760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415610d495760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610b8c565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610d81848484611c8f565b610dd38433610dce856040518060600160405280602881526020016133b4602891396001600160a01b038a1660009081526009602090815260408083203384529091529020549190612059565b611b6b565b5060019392505050565b6000546001600160a01b03163314610e075760405162461bcd60e51b8152600401610b8c9061314f565b610e1581633b9aca0061319a565b60215550565b6000600f54821115610e825760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b8c565b6000610e8c612085565b9050610e9883826120a8565b9392505050565b6000546001600160a01b03163314610ec95760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b038116610eef5760405162461bcd60e51b8152600401610b8c906131b9565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f3b5760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b0381166000908152600c602052604090205460ff16610fa35760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610b8c565b60005b600d548110156110c457816001600160a01b0316600d8281548110610fcd57610fcd613242565b6000918252602090912001546001600160a01b031614156110b257600d8054610ff890600190613258565b8154811061100857611008613242565b600091825260209091200154600d80546001600160a01b03909216918390811061103457611034613242565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600882526040808220829055600c90925220805460ff19169055600d80548061108c5761108c61326f565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110bc81613285565b915050610fa6565b5050565b3360008181526009602090815260408083206001600160a01b03871684529091528120549091610b58918590610dce9086611b5f565b6000546001600160a01b031633146111285760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000600e548311156111a05760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b8c565b816111c05760006111b0846120b4565b50949650610b5c95505050505050565b60006111cb846120b4565b50939650610b5c95505050505050565b6000546001600160a01b031633146112055760405162461bcd60e51b8152600401610b8c9061314f565b61271061123582610c75601654610c75601454610c75601954610c75601b54601754611b5f90919063ffffffff16565b106112525760405162461bcd60e51b8152600401610b8c906131f0565b601555565b6000546001600160a01b031633146112815760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b0381166000908152600c602052604090205460ff16156112ea5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b8c565b6001600160a01b03811660009081526007602052604090205415611344576001600160a01b03811660009081526007602052604090205461132a90610e1b565b6001600160a01b0382166000908152600860205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600c602052604081205460ff16156113e757506001600160a01b031660009081526008602052604090205490565b6001600160a01b038216600090815260076020526040902054610b5c90610e1b565b6000546001600160a01b031633146114335760405162461bcd60e51b8152600401610b8c9061314f565b600080546040516001600160a01b03909116906000805160206133dc833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146114955760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b0381166114bb5760405162461bcd60e51b8152600401610b8c906131b9565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115075760405162461bcd60e51b8152600401610b8c9061314f565b61271061153782610c75601654610c75601554610c75601454610c75601954601754611b5f90919063ffffffff16565b106115545760405162461bcd60e51b8152600401610b8c906131f0565b601b55565b6000546001600160a01b031633146115835760405162461bcd60e51b8152600401610b8c9061314f565b6127106115b382610c75601654610c75601554610c75601954610c75601b54601754611b5f90919063ffffffff16565b106115d05760405162461bcd60e51b8152600401610b8c906131f0565b601455565b606060128054610ac890613114565b600080546001600160a01b0316331461160f5760405162461bcd60e51b8152600401610b8c9061314f565b60405163a9059cbb60e01b81526001600160a01b038416600482015260248101839052309063a9059cbb906044016020604051808303816000875af115801561165c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd391906132a0565b6000610b583384610dce856040518060600160405280602581526020016133fc602591393360009081526009602090815260408083206001600160a01b038d1684529091529020549190612059565b6001546001600160a01b031633146117355760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610b8c565b60025442116117865760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610b8c565b600154600080546040516001600160a01b0393841693909116916000805160206133dc83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610b58338484611c8f565b6000546001600160a01b0316331461180c5760405162461bcd60e51b8152600401610b8c9061314f565b61271061183c82610c75601554610c75601454610c75601954610c75601b54601754611b5f90919063ffffffff16565b106118595760405162461bcd60e51b8152600401610b8c906131f0565b601655565b6000546001600160a01b031633146118885760405162461bcd60e51b8152600401610b8c9061314f565b601f80548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906118d190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146119065760405162461bcd60e51b8152600401610b8c9061314f565b61271061193682610c75601654610c75601554610c75601454610c75601b54601754611b5f90919063ffffffff16565b106119535760405162461bcd60e51b8152600401610b8c906131f0565b601955565b6000546001600160a01b031633146119825760405162461bcd60e51b8152600401610b8c9061314f565b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156110c4573d6000803e3d6000fd5b6000546001600160a01b031633146119e15760405162461bcd60e51b8152600401610b8c9061314f565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055611a1081426132bd565b600255600080546040516001600160a01b03909116906000805160206133dc833981519152908390a350565b6000546001600160a01b03163314611a665760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b03163314611ab15760405162461bcd60e51b8152600401610b8c9061314f565b6001600160a01b038116611b165760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b8c565b600080546040516001600160a01b03808516939216916000805160206133dc83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e9882846132bd565b6001600160a01b038316611bcd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b8c565b6001600160a01b038216611c2e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b8c565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611cf35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b8c565b6001600160a01b038216611d555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b8c565b60008111611db75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b8c565b7f00000000000000000000000013f5a9aa90793381ba5e4954fc61c30972dffa136001600160a01b0316826001600160a01b0316148015611e0657506000546001600160a01b03848116911614155b8015611e2057506000546001600160a01b03838116911614155b15611e8d57602054811115611e8d5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860448201526c29b0b632aa3c20b6b7bab73a1760991b6064820152608401610b8c565b6001600160a01b0382166000908152600b602052604090205460ff16158015611ee857507f00000000000000000000000013f5a9aa90793381ba5e4954fc61c30972dffa136001600160a01b0316826001600160a01b031614155b15611f64576000611ef8836113aa565b602154909150611f0883836132bd565b1115611f625760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610b8c565b505b6000611f6f306113aa565b90506020548110611f7f57506020545b60225481108015908190611f965750601f5460ff16155b8015611fd457507f00000000000000000000000013f5a9aa90793381ba5e4954fc61c30972dffa136001600160a01b0316856001600160a01b031614155b8015611fe75750601f54610100900460ff165b15611ffa576022549150611ffa8261210f565b6001600160a01b0385166000908152600a602052604090205460019060ff168061203c57506001600160a01b0385166000908152600a602052604090205460ff165b15612045575060005b612051868686846122c9565b505050505050565b6000818484111561207d5760405162461bcd60e51b8152600401610b8c9190612f4d565b505050900390565b60008060006120926124be565b90925090506120a182826120a8565b9250505090565b6000610e9882846132d5565b60008060008060008060008060008060006120ce8c612640565b935093509350935060008060006120ef8f8787876120ea612085565b61268f565b919f509d509b509599509397509195509350505050919395979092949650565b601f805460ff19166001179055601454601d5460009161213a916121349085906120a8565b906126f1565b9050600061214883836126fd565b905060006121578360026120a8565b9050600061216584836126fd565b90504761217a6121758486611b5f565b612709565b600061218647836126fd565b905060006121a5601454612134601d54856120a890919063ffffffff16565b90506121b28160026120a8565b905060006121d1601654612134601d54866120a890919063ffffffff16565b905060006121e9826121e386866126fd565b906126fd565b6003546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015612224573d6000803e3d6000fd5b506004546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561225f573d6000803e3d6000fd5b5061226a86846128c1565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561612295888a611b5f565b6040805191825260208201869052810188905260600160405180910390a15050601f805460ff191690555050505050505050565b806122fd576122fd60178054601855601d8054601e5560198054601a55601b8054601c556000938490559183905582905555565b6000612308836129c0565b9050801561231957612319816129e3565b6001600160a01b0385166000908152600c602052604090205460ff16801561235a57506001600160a01b0384166000908152600c602052604090205460ff16155b1561237857612373858561236e86856126fd565b612aa3565b612495565b6001600160a01b0385166000908152600c602052604090205460ff161580156123b957506001600160a01b0384166000908152600c602052604090205460ff165b156123d25761237385856123cd86856126fd565b612be9565b6001600160a01b0385166000908152600c602052604090205460ff1615801561241457506001600160a01b0384166000908152600c602052604090205460ff16155b1561242d57612373858561242886856126fd565b612ca8565b6001600160a01b0385166000908152600c602052604090205460ff16801561246d57506001600160a01b0384166000908152600c602052604090205460ff165b1561248657612373858561248186856126fd565b612d02565b612495858561242886856126fd565b816124b7576124b7601854601755601e54601d55601a54601955601c54601b55565b5050505050565b600f54600e546000918291825b600d54811015612610578260076000600d84815481106124ed576124ed613242565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061255857508160086000600d848154811061253157612531613242565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561256e57600f54600e54945094505050509091565b6125b460076000600d848154811061258857612588613242565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906126fd565b92506125fc60086000600d84815481106125d0576125d0613242565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906126fd565b91508061260881613285565b9150506124cb565b50600e54600f54612620916120a8565b82101561263757600f54600e549350935050509091565b90939092509050565b600080600080600061265186612d8b565b9050600061265e87612da8565b9050600061266b88612dc5565b9050600061267f826121e385818d896126fd565b9993985091965094509092505050565b600080808061269e89866126f1565b905060006126ac89876126f1565b905060006126ba89886126f1565b905060006126c889896126f1565b905060006126dc826121e3858189896126fd565b949d949c50929a509298505050505050505050565b6000610e98828461319a565b6000610e988284613258565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061273e5761273e613242565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e091906132f7565b816001815181106127f3576127f3613242565b60200260200101906001600160a01b031690816001600160a01b03168152505061283e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b6b565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612893908590600090869030904290600401613314565b600060405180830381600087803b1580156128ad57600080fd5b505af1158015612051573d6000803e3d6000fd5b6128ec307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b6b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806129336000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561299b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b79190613385565b6000610b5c6127106129dd601b54856126f190919063ffffffff16565b906120a8565b60006129ed612085565b905060006129fb83836126f1565b6006546001600160a01b0316600090815260076020526040902054909150612a239082611b5f565b600680546001600160a01b0390811660009081526007602090815260408083209590955592549091168152600c909152205460ff1615612a9e576006546001600160a01b0316600090815260086020526040902054612a829082611b5f565b6006546001600160a01b03166000908152600860205260409020555b505050565b6000806000806000806000612ab7886120b4565b9650965096509650965096509650612afd88600860008d6001600160a01b03166001600160a01b03168152602001908152602001600020546126fd90919063ffffffff16565b6001600160a01b038b16600090815260086020908152604080832093909355600790522054612b2c90886126fd565b6001600160a01b03808c1660009081526007602052604080822093909355908b1681522054612b5b9087611b5f565b6001600160a01b038a16600090815260076020526040902055612b7d82612de2565b612b8681612e6a565b612b908584612f29565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612bd591815260200190565b60405180910390a350505050505050505050565b6000806000806000806000612bfd886120b4565b9650965096509650965096509650612c4387600760008d6001600160a01b03166001600160a01b03168152602001908152602001600020546126fd90919063ffffffff16565b6001600160a01b03808c16600090815260076020908152604080832094909455918c16815260089091522054612c799085611b5f565b6001600160a01b038a16600090815260086020908152604080832093909355600790522054612b5b9087611b5f565b6000806000806000806000612cbc886120b4565b9650965096509650965096509650612b2c87600760008d6001600160a01b03166001600160a01b03168152602001908152602001600020546126fd90919063ffffffff16565b6000806000806000806000612d16886120b4565b9650965096509650965096509650612d5c88600860008d6001600160a01b03166001600160a01b03168152602001908152602001600020546126fd90919063ffffffff16565b6001600160a01b038b16600090815260086020908152604080832093909355600790522054612c4390886126fd565b6000610b5c6127106129dd601754856126f190919063ffffffff16565b6000610b5c6127106129dd601d54856126f190919063ffffffff16565b6000610b5c6127106129dd601954856126f190919063ffffffff16565b6000612dec612085565b90506000612dfa83836126f1565b30600090815260076020526040902054909150612e179082611b5f565b30600090815260076020908152604080832093909355600c9052205460ff1615612a9e5730600090815260086020526040902054612e559084611b5f565b30600090815260086020526040902055505050565b6000612e74612085565b90506000612e8283836126f1565b6005546001600160a01b0316600090815260076020526040902054909150612eaa9082611b5f565b600580546001600160a01b0390811660009081526007602090815260408083209590955592549091168152600c909152205460ff1615612a9e576005546001600160a01b0316600090815260086020526040902054612f099084611b5f565b6005546001600160a01b0316600090815260086020526040902055505050565b600f54612f3690836126fd565b600f55601054612f469082611b5f565b6010555050565b600060208083528351808285015260005b81811015612f7a57858101830151858201604001528201612f5e565b81811115612f8c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612fb757600080fd5b50565b60008060408385031215612fcd57600080fd5b8235612fd881612fa2565b946020939093013593505050565b600060208284031215612ff857600080fd5b5035919050565b60006020828403121561301157600080fd5b8135610e9881612fa2565b8015158114612fb757600080fd5b6000806040838503121561303d57600080fd5b823561304881612fa2565b915060208301356130588161301c565b809150509250929050565b60008060006060848603121561307857600080fd5b833561308381612fa2565b9250602084013561309381612fa2565b929592945050506040919091013590565b600080604083850312156130b757600080fd5b8235915060208301356130588161301c565b6000602082840312156130db57600080fd5b8135610e988161301c565b600080604083850312156130f957600080fd5b823561310481612fa2565b9150602083013561305881612fa2565b600181811c9082168061312857607f821691505b6020821081141561314957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156131b4576131b4613184565b500290565b6020808252601e908201527f6e65772077616c6c657420697320746865207a65726f20616464726573730000604082015260600190565b60208082526032908201527f50657263656e74616765206d757374206265206c657373207468616e20746f74604082015271185b081d1c985b9cd9995c88185b5bdd5b9d60721b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008282101561326a5761326a613184565b500390565b634e487b7160e01b600052603160045260246000fd5b600060001982141561329957613299613184565b5060010190565b6000602082840312156132b257600080fd5b8151610e988161301c565b600082198211156132d0576132d0613184565b500190565b6000826132f257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561330957600080fd5b8151610e9881612fa2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133645784516001600160a01b03168352938301939183019160010161333f565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561339a57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209bb739a58a29af53d9cfccc5dd0031048af821fcdf61ef81b655a8445222e00964736f6c634300080a0033
Deployed Bytecode Sourcemap
29534:22160:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32839:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33751:161;;;;;;;;;;-1:-1:-1;33751:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;33751:161:0;1072:187:1;39161:114:0;;;;;;;;;;-1:-1:-1;39161:114:0;;;;;:::i;:::-;;:::i;:::-;;31265:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1640:32:1;;;1622:51;;1610:2;1595:18;31265:51:0;1449:230:1;33116:95:0;;;;;;;;;;-1:-1:-1;33196:7:0;;33116:95;;;1830:25:1;;;1818:2;1803:18;33116:95:0;1684:177:1;38780:195:0;;;;;;;;;;-1:-1:-1;38780:195:0;;;;;:::i;:::-;;:::i;36659:282::-;;;;;;;;;;-1:-1:-1;36659:282:0;;;;;:::i;:::-;;:::i;39391:268::-;;;;;;;;;;-1:-1:-1;39391:268:0;;;;;:::i;:::-;;:::i;33920:313::-;;;;;;;;;;-1:-1:-1;33920:313:0;;;;;:::i;:::-;;:::i;39281:104::-;;;;;;;;;;-1:-1:-1;39281:104:0;;;;;:::i;:::-;;:::i;35320:253::-;;;;;;;;;;-1:-1:-1;35320:253:0;;;;;:::i;:::-;;:::i;38378:191::-;;;;;;;;;;-1:-1:-1;38378:191:0;;;;;:::i;:::-;;:::i;33025:83::-;;;;;;;;;;-1:-1:-1;33091:9:0;;33025:83;;33091:9;;;;3239:36:1;;3227:2;3212:18;33025:83:0;3097:184:1;30826:35:0;;;;;;;;;;;;;;;;35923:479;;;;;;;;;;-1:-1:-1;35923:479:0;;;;;:::i;:::-;;:::i;34241:218::-;;;;;;;;;;-1:-1:-1;34241:218:0;;;;;:::i;:::-;;:::i;30784:32::-;;;;;;;;;;;;;;;;36414:111;;;;;;;;;;-1:-1:-1;36414:111:0;;;;;:::i;:::-;;:::i;29651:74::-;;;;;;;;;;-1:-1:-1;29651:74:0;;;;-1:-1:-1;;;;;29651:74:0;;;34874:438;;;;;;;;;;-1:-1:-1;34874:438:0;;;;;:::i;:::-;;:::i;37802:285::-;;;;;;;;;;-1:-1:-1;37802:285:0;;;;;:::i;:::-;;:::i;31323:38::-;;;;;;;;;;;;;;;31402:40;;;;;;;;;;-1:-1:-1;31402:40:0;;;;;;;;;;;35582:333;;;;;;;;;;-1:-1:-1;35582:333:0;;;;;:::i;:::-;;:::i;31455:57::-;;;;;;;;;;;;;;;;31516:60;;;;;;;;;;;;;;;;33219:198;;;;;;;;;;-1:-1:-1;33219:198:0;;;;;:::i;:::-;;:::i;20237:148::-;;;;;;;;;;;;;:::i;38575:199::-;;;;;;;;;;-1:-1:-1;38575:199:0;;;;;:::i;:::-;;:::i;30159:51::-;;;;;;;;;;-1:-1:-1;30159:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;36947:280;;;;;;;;;;-1:-1:-1;36947:280:0;;;;;:::i;:::-;;:::i;29732:78::-;;;;;;;;;;-1:-1:-1;29732:78:0;;;;-1:-1:-1;;;;;29732:78:0;;;34745:120;;;;;;;;;;-1:-1:-1;34745:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;34837:20:0;34813:4;34837:20;;;:11;:20;;;;;;;;;34745:120;19594:79;;;;;;;;;;-1:-1:-1;19632:7:0;19659:6;-1:-1:-1;;;;;19659:6:0;19594:79;;37515:281;;;;;;;;;;-1:-1:-1;37515:281:0;;;;;:::i;:::-;;:::i;32930:87::-;;;;;;;;;;;;;:::i;30698:33::-;;;;;;;;;;;;;;;;30214:62;;;;;;;;;;-1:-1:-1;30214:62:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;51374:184;;;;;;;;;;-1:-1:-1;51374:184:0;;;;;:::i;:::-;;:::i;34467:269::-;;;;;;;;;;-1:-1:-1;34467:269:0;;;;;:::i;:::-;;:::i;21259:305::-;;;;;;;;;;;;;:::i;33425:167::-;;;;;;;;;;-1:-1:-1;33425:167:0;;;;;:::i;:::-;;:::i;31016:32::-;;;;;;;;;;;;;;;;38093:279;;;;;;;;;;-1:-1:-1;38093:279:0;;;;;:::i;:::-;;:::i;29890:75::-;;;;;;;;;;-1:-1:-1;29890:75:0;;;;-1:-1:-1;;;;;29890:75:0;;;20792:89;;;;;;;;;;-1:-1:-1;20864:9:0;;20792:89;;29814:72;;;;;;;;;;-1:-1:-1;29814:72:0;;;;-1:-1:-1;;;;;29814:72:0;;;30930:29;;;;;;;;;;;;;;;;38984:171;;;;;;;;;;-1:-1:-1;38984:171:0;;;;;:::i;:::-;;:::i;37233:276::-;;;;;;;;;;-1:-1:-1;37233:276:0;;;;;:::i;:::-;;:::i;30741:36::-;;;;;;;;;;;;;;;;51564:127;;;;;;;;;;-1:-1:-1;51564:127:0;;;;;:::i;:::-;;:::i;20957:226::-;;;;;;;;;;-1:-1:-1;20957:226:0;;;;;:::i;:::-;;:::i;33600:143::-;;;;;;;;;;-1:-1:-1;33600:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;33708:18:0;;;33681:7;33708:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;33600:143;36537:110;;;;;;;;;;-1:-1:-1;36537:110:0;;;;;:::i;:::-;;:::i;20540:244::-;;;;;;;;;;-1:-1:-1;20540:244:0;;;;;:::i;:::-;;:::i;32839:83::-;32876:13;32909:5;32902:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32839:83;:::o;33751:161::-;33826:4;33843:39;10318:10;33866:7;33875:6;33843:8;:39::i;:::-;-1:-1:-1;33900:4:0;33751:161;;;;;:::o;39161:114::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;;;;;;;;;39253:14:::1;:6:::0;39262:5:::1;39253:14;:::i;:::-;39234:16;:33:::0;-1:-1:-1;39161:114:0:o;38780:195::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38870:24:0;::::1;38862:67;;;;-1:-1:-1::0;;;38862:67:0::1;;;;;;;:::i;:::-;38939:15;:28:::0;;-1:-1:-1;;;;;;38939:28:0::1;-1:-1:-1::0;;;;;38939:28:0;;;::::1;::::0;;;::::1;::::0;;38780:195::o;36659:282::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;36840:5:::1;36744:93;36830:6;36744:81;36813:11;;36744:64;36792:15;;36744:43;36774:12;;36744:25;36760:8;;36744:11;;:15;;:25;;;;:::i;:::-;:29:::0;::::1;:43::i;:93::-;:101;36736:164;;;;-1:-1:-1::0;;;36736:164:0::1;;;;;;;:::i;:::-;36910:14;:23:::0;36659:282::o;39391:268::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39494:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;::::1;;:50;;::::0;::::1;;;;39486:105;;;::::0;-1:-1:-1;;;39486:105:0;;6730:2:1;39486:105:0::1;::::0;::::1;6712:21:1::0;6769:2;6749:18;;;6742:30;6808:34;6788:18;;;6781:62;-1:-1:-1;;;6859:18:1;;;6852:40;6909:19;;39486:105:0::1;6528:406:1::0;39486:105:0::1;-1:-1:-1::0;;;;;39602:38:0;;;::::1;;::::0;;;:29:::1;:38;::::0;;;;:49;;-1:-1:-1;;39602:49:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39391:268::o;33920:313::-;34018:4;34035:36;34045:6;34053:9;34064:6;34035:9;:36::i;:::-;34082:121;34091:6;10318:10;34113:89;34151:6;34113:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34113:19:0;;;;;;:11;:19;;;;;;;;10318:10;34113:33;;;;;;;;;;:37;:89::i;:::-;34082:8;:121::i;:::-;-1:-1:-1;34221:4:0;33920:313;;;;;:::o;39281:104::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;39366:14:::1;:6:::0;39375:5:::1;39366:14;:::i;:::-;39347:16;:33:::0;-1:-1:-1;39281:104:0:o;35320:253::-;35386:7;35425;;35414;:18;;35406:73;;;;-1:-1:-1;;;35406:73:0;;7141:2:1;35406:73:0;;;7123:21:1;7180:2;7160:18;;;7153:30;7219:34;7199:18;;;7192:62;-1:-1:-1;;;7270:18:1;;;7263:40;7320:19;;35406:73:0;6939:406:1;35406:73:0;35490:19;35513:10;:8;:10::i;:::-;35490:33;-1:-1:-1;35541:24:0;:7;35490:33;35541:11;:24::i;:::-;35534:31;35320:253;-1:-1:-1;;;35320:253:0:o;38378:191::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38467:23:0;::::1;38459:66;;;;-1:-1:-1::0;;;38459:66:0::1;;;;;;;:::i;:::-;38535:14;:26:::0;;-1:-1:-1;;;;;;38535:26:0::1;-1:-1:-1::0;;;;;38535:26:0;;;::::1;::::0;;;::::1;::::0;;38378:191::o;35923:479::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36005:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;35997:60;;;::::0;-1:-1:-1;;;35997:60:0;;7552:2:1;35997:60:0::1;::::0;::::1;7534:21:1::0;7591:2;7571:18;;;7564:30;7630:29;7610:18;;;7603:57;7677:18;;35997:60:0::1;7350:351:1::0;35997:60:0::1;36073:9;36068:327;36092:9;:16:::0;36088:20;::::1;36068:327;;;36150:7;-1:-1:-1::0;;;;;36134:23:0::1;:9;36144:1;36134:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;36134:12:0::1;:23;36130:254;;;36193:9;36203:16:::0;;:20:::1;::::0;36222:1:::1;::::0;36203:20:::1;:::i;:::-;36193:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;36178:9:::1;:12:::0;;-1:-1:-1;;;;;36193:31:0;;::::1;::::0;36188:1;;36178:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;36178:46:0::1;-1:-1:-1::0;;;;;36178:46:0;;::::1;;::::0;;36243:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;36282:11:::1;:20:::0;;;;:28;;-1:-1:-1;;36282:28:0::1;::::0;;36329:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;36329:15:0;;;;;-1:-1:-1;;;;;;36329:15:0::1;::::0;;;;;36068:327:::1;35923:479:::0;:::o;36130:254::-:1;36110:3:::0;::::1;::::0;::::1;:::i;:::-;;;;36068:327;;;;35923:479:::0;:::o;34241:218::-;10318:10;34329:4;34378:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;34378:34:0;;;;;;;;;;34329:4;;34346:83;;34369:7;;34378:50;;34417:10;34378:38;:50::i;36414:111::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36483:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;36483:34:0::1;36513:4;36483:34;::::0;;36414:111::o;34874:438::-;34964:7;35003;;34992;:18;;34984:62;;;;-1:-1:-1;;;34984:62:0;;8442:2:1;34984:62:0;;;8424:21:1;8481:2;8461:18;;;8454:30;8520:33;8500:18;;;8493:61;8571:18;;34984:62:0;8240:355:1;34984:62:0;35062:17;35057:248;;35097:15;35122:19;35133:7;35122:10;:19::i;:::-;-1:-1:-1;35096:45:0;;-1:-1:-1;35156:14:0;;-1:-1:-1;;;;;;35156:14:0;35057:248;35205:23;35237:19;35248:7;35237:10;:19::i;:::-;-1:-1:-1;35203:53:0;;-1:-1:-1;35271:22:0;;-1:-1:-1;;;;;;35271:22:0;37802:285;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;37984:5:::1;37889:92;37974:6;37889:80;37957:11;;37889:63;37939:12;;37889:45;37925:8;;37889:31;37908:11;;37889:14;;:18;;:31;;;;:::i;:92::-;:100;37881:163;;;;-1:-1:-1::0;;;37881:163:0::1;;;;;;;:::i;:::-;38055:15;:24:::0;37802:285::o;35582:333::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35665:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;35664:21;35656:61;;;::::0;-1:-1:-1;;;35656:61:0;;8802:2:1;35656:61:0::1;::::0;::::1;8784:21:1::0;8841:2;8821:18;;;8814:30;8880:29;8860:18;;;8853:57;8927:18;;35656:61:0::1;8600:351:1::0;35656:61:0::1;-1:-1:-1::0;;;;;35731:16:0;::::1;35750:1;35731:16:::0;;;:7:::1;:16;::::0;;;;;:20;35728:108:::1;;-1:-1:-1::0;;;;;35807:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;35787:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;35768:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;35728:108:::1;-1:-1:-1::0;;;;;35846:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;35846:27:0::1;35869:4;35846:27:::0;;::::1;::::0;;;35884:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;35884:23:0::1;::::0;;::::1;::::0;;35582:333::o;33219:198::-;-1:-1:-1;;;;;33309:20:0;;33285:7;33309:20;;;:11;:20;;;;;;;;33305:49;;;-1:-1:-1;;;;;;33338:16:0;;;;;:7;:16;;;;;;;33219:198::o;33305:49::-;-1:-1:-1;;;;;33392:16:0;;;;;;:7;:16;;;;;;33372:37;;:19;:37::i;20237:148::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;20344:1:::1;20328:6:::0;;20307:40:::1;::::0;-1:-1:-1;;;;;20328:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;20307:40:0;20344:1;;20307:40:::1;20375:1;20358:19:::0;;-1:-1:-1;;;;;;20358:19:0::1;::::0;;20237:148::o;38575:199::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38668:23:0;::::1;38660:66;;;;-1:-1:-1::0;;;38660:66:0::1;;;;;;;:::i;:::-;38736:18;:30:::0;;-1:-1:-1;;;;;;38736:30:0::1;-1:-1:-1::0;;;;;38736:30:0;;;::::1;::::0;;;::::1;::::0;;38575:199::o;36947:280::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;37128:5:::1;37029:96;37118:6;37029:84;37101:11;;37029:67;37080:15;;37029:46;37062:12;;37029:28;37048:8;;37029:14;;:18;;:28;;;;:::i;:96::-;:104;37021:167;;;;-1:-1:-1::0;;;37021:167:0::1;;;;;;;:::i;:::-;37199:11;:20:::0;36947:280::o;37515:281::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;37697:5:::1;37599:95;37687:6;37599:83;37670:11;;37599:66;37649:15;;37599:45;37635:8;;37599:31;37618:11;;37599:14;;:18;;:31;;;;:::i;:95::-;:103;37591:166;;;;-1:-1:-1::0;;;37591:166:0::1;;;;;;;:::i;:::-;37767:12;:21:::0;37515:281::o;32930:87::-;32969:13;33002:7;32995:14;;;;;:::i;51374:184::-;51459:4;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;51476:51:::1;::::0;-1:-1:-1;;;51476:51:0;;-1:-1:-1;;;;;9148:32:1;;51476:51:0::1;::::0;::::1;9130::1::0;9197:18;;;9190:34;;;51491:4:0::1;::::0;51476:30:::1;::::0;9103:18:1;;51476:51:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;34467:269::-:0;34560:4;34577:129;10318:10;34600:7;34609:96;34648:15;34609:96;;;;;;;;;;;;;;;;;10318:10;34609:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;34609:34:0;;;;;;;;;;;;:38;:96::i;21259:305::-;21311:14;;-1:-1:-1;;;;;21311:14:0;21329:10;21311:28;21303:76;;;;-1:-1:-1;;;21303:76:0;;9687:2:1;21303:76:0;;;9669:21:1;9726:2;9706:18;;;9699:30;9765:34;9745:18;;;9738:62;-1:-1:-1;;;9816:18:1;;;9809:33;9859:19;;21303:76:0;9485:399:1;21303:76:0;21416:9;;21398:15;:27;21390:72;;;;-1:-1:-1;;;21390:72:0;;10091:2:1;21390:72:0;;;10073:21:1;10130:2;10110:18;;;10103:30;10169:33;10149:18;;;10142:61;10220:18;;21390:72:0;9889:355:1;21390:72:0;21507:14;;;21499:6;;21478:44;;-1:-1:-1;;;;;21507:14:0;;;;21499:6;;;;-1:-1:-1;;;;;;;;;;;21478:44:0;;21542:14;;;21533:23;;-1:-1:-1;;;;;;21533:23:0;-1:-1:-1;;;;;21542:14:0;;;21533:23;;;;;;21259:305::o;33425:167::-;33503:4;33520:42;10318:10;33544:9;33555:6;33520:9;:42::i;38093:279::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;38274:5:::1;38175:96;38264:6;38175:84;38243:15;;38175:63;38225:12;;38175:45;38211:8;;38175:31;38194:11;;38175:14;;:18;;:31;;;;:::i;:96::-;:104;38167:167;;;;-1:-1:-1::0;;;38167:167:0::1;;;;;;;:::i;:::-;38344:11;:20:::0;38093:279::o;38984:171::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;39061:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;39061:32:0;;::::1;;::::0;;39109:38:::1;::::0;::::1;::::0;::::1;::::0;39085:8;1237:14:1;1230:22;1212:41;;1200:2;1185:18;;1072:187;39109:38:0::1;;;;;;;;38984:171:::0;:::o;37233:276::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;37414:5:::1;37312:99;37404:6;37312:87;37387:11;;37312:70;37366:15;;37312:49;37348:12;;37312:31;37331:11;;37312:14;;:18;;:31;;;;:::i;:99::-;:107;37304:170;;;;-1:-1:-1::0;;;37304:170:0::1;;;;;;;:::i;:::-;37484:8;:17:::0;37233:276::o;51564:127::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;51641:42:::1;::::0;-1:-1:-1;;;;;51641:19:0;::::1;::::0;51661:21:::1;51641:42:::0;::::1;;;::::0;::::1;::::0;;;51661:21;51641:19;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;20957:226:::0;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;21038:6:::1;::::0;;;21021:23;;-1:-1:-1;;;;;;21021:23:0;;::::1;-1:-1:-1::0;;;;;21038:6:0;::::1;21021:23;::::0;;;21055:19:::1;::::0;;21097:22:::1;21115:4:::0;21097:15:::1;:22;:::i;:::-;21085:9;:34:::0;21172:1:::1;21156:6:::0;;21135:40:::1;::::0;-1:-1:-1;;;;;21156:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;21135:40:0;21172:1;;21135:40:::1;20957:226:::0;:::o;36537:110::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36604:27:0::1;36634:5;36604:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;36604:35:0::1;::::0;;36537:110::o;20540:244::-;19806:6;;-1:-1:-1;;;;;19806:6:0;10318:10;19806:22;19798:67;;;;-1:-1:-1;;;19798:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20629:22:0;::::1;20621:73;;;::::0;-1:-1:-1;;;20621:73:0;;10584:2:1;20621:73:0::1;::::0;::::1;10566:21:1::0;10623:2;10603:18;;;10596:30;10662:34;10642:18;;;10635:62;-1:-1:-1;;;10713:18:1;;;10706:36;10759:19;;20621:73:0::1;10382:402:1::0;20621:73:0::1;20731:6;::::0;;20710:38:::1;::::0;-1:-1:-1;;;;;20710:38:0;;::::1;::::0;20731:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;20710:38:0;::::1;20759:6;:17:::0;;-1:-1:-1;;;;;;20759:17:0::1;-1:-1:-1::0;;;;;20759:17:0;;;::::1;::::0;;;::::1;::::0;;20540:244::o;5409:98::-;5467:7;5494:5;5498:1;5494;:5;:::i;44170:337::-;-1:-1:-1;;;;;44263:19:0;;44255:68;;;;-1:-1:-1;;;44255:68:0;;10991:2:1;44255:68:0;;;10973:21:1;11030:2;11010:18;;;11003:30;11069:34;11049:18;;;11042:62;-1:-1:-1;;;11120:18:1;;;11113:34;11164:19;;44255:68:0;10789:400:1;44255:68:0;-1:-1:-1;;;;;44342:21:0;;44334:68;;;;-1:-1:-1;;;44334:68:0;;11396:2:1;44334:68:0;;;11378:21:1;11435:2;11415:18;;;11408:30;11474:34;11454:18;;;11447:62;-1:-1:-1;;;11525:18:1;;;11518:32;11567:19;;44334:68:0;11194:398:1;44334:68:0;-1:-1:-1;;;;;44415:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;44467:32;;1830:25:1;;;44467:32:0;;1803:18:1;44467:32:0;;;;;;;44170:337;;;:::o;44515:1478::-;-1:-1:-1;;;;;44603:18:0;;44595:68;;;;-1:-1:-1;;;44595:68:0;;11799:2:1;44595:68:0;;;11781:21:1;11838:2;11818:18;;;11811:30;11877:34;11857:18;;;11850:62;-1:-1:-1;;;11928:18:1;;;11921:35;11973:19;;44595:68:0;11597:401:1;44595:68:0;-1:-1:-1;;;;;44682:16:0;;44674:64;;;;-1:-1:-1;;;44674:64:0;;12205:2:1;44674:64:0;;;12187:21:1;12244:2;12224:18;;;12217:30;12283:34;12263:18;;;12256:62;-1:-1:-1;;;12334:18:1;;;12327:33;12377:19;;44674:64:0;12003:399:1;44674:64:0;44766:1;44757:6;:10;44749:64;;;;-1:-1:-1;;;44749:64:0;;12609:2:1;44749:64:0;;;12591:21:1;12648:2;12628:18;;;12621:30;12687:34;12667:18;;;12660:62;-1:-1:-1;;;12738:18:1;;;12731:39;12787:19;;44749:64:0;12407:405:1;44749:64:0;44831:13;-1:-1:-1;;;;;44825:19:0;:2;-1:-1:-1;;;;;44825:19:0;;:38;;;;-1:-1:-1;19632:7:0;19659:6;-1:-1:-1;;;;;44848:15:0;;;19659:6;;44848:15;;44825:38;:55;;;;-1:-1:-1;19632:7:0;19659:6;-1:-1:-1;;;;;44867:13:0;;;19659:6;;44867:13;;44825:55;44822:163;;;44913:16;;44903:6;:26;;44895:84;;;;-1:-1:-1;;;44895:84:0;;13019:2:1;44895:84:0;;;13001:21:1;13058:2;13038:18;;;13031:30;13097:34;13077:18;;;13070:62;-1:-1:-1;;;13148:18:1;;;13141:43;13201:19;;44895:84:0;12817:409:1;44895:84:0;-1:-1:-1;;;;;44997:33:0;;;;;;:29;:33;;;;;;;;44996:34;:57;;;;;45040:13;-1:-1:-1;;;;;45034:19:0;:2;-1:-1:-1;;;;;45034:19:0;;;44996:57;44993:241;;;45074:24;45101:13;45111:2;45101:9;:13::i;:::-;45166:16;;45074:40;;-1:-1:-1;45137:25:0;45156:6;45074:40;45137:25;:::i;:::-;:45;;45129:93;;;;-1:-1:-1;;;45129:93:0;;13433:2:1;45129:93:0;;;13415:21:1;13472:2;13452:18;;;13445:30;13511:34;13491:18;;;13484:62;-1:-1:-1;;;13562:18:1;;;13555:33;13605:19;;45129:93:0;13231:399:1;45129:93:0;45059:175;44993:241;45248:28;45279:24;45297:4;45279:9;:24::i;:::-;45248:55;;45351:16;;45327:20;:40;45324:120;;-1:-1:-1;45416:16:0;;45324:120;45509:29;;45485:53;;;;;;;45553:40;;-1:-1:-1;45577:16:0;;;;45576:17;45553:40;:65;;;;;45605:13;-1:-1:-1;;;;;45597:21:0;:4;-1:-1:-1;;;;;45597:21:0;;;45553:65;:90;;;;-1:-1:-1;45622:21:0;;;;;;;45553:90;45549:230;;;45687:29;;45664:52;;45731:36;45746:20;45731:14;:36::i;:::-;-1:-1:-1;;;;;45836:24:0;;45793:12;45836:24;;;:18;:24;;;;;;45808:4;;45836:24;;;:50;;-1:-1:-1;;;;;;45864:22:0;;;;;;:18;:22;;;;;;;;45836:50;45833:100;;;-1:-1:-1;45916:5:0;45833:100;45947:38;45962:4;45967:2;45970:6;45977:7;45947:14;:38::i;:::-;44584:1409;;;44515:1478;;;:::o;7688:206::-;7774:7;7835:12;7827:6;;;;7819:29;;;;-1:-1:-1;;;7819:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;7870:5:0;;;7688:206::o;41249:163::-;41290:7;41311:15;41328;41347:19;:17;:19::i;:::-;41310:56;;-1:-1:-1;41310:56:0;-1:-1:-1;41384:20:0;41310:56;;41384:11;:20::i;:::-;41377:27;;;;41249:163;:::o;6546:98::-;6604:7;6631:5;6635:1;6631;:5;:::i;39860:457::-;39919:7;39928;39937;39946;39955;39964;39973;39994:23;40019:12;40033:18;40053:13;40070:20;40082:7;40070:11;:20::i;:::-;39993:97;;;;;;;;40102:15;40119:23;40144:12;40160:57;40172:7;40181:4;40187:10;40199:5;40206:10;:8;:10::i;:::-;40160:11;:57::i;:::-;40101:116;;-1:-1:-1;40101:116:0;-1:-1:-1;40101:116:0;-1:-1:-1;40268:15:0;;-1:-1:-1;40285:4:0;;-1:-1:-1;40291:10:0;;-1:-1:-1;40303:5:0;-1:-1:-1;;;;39860:457:0;;;;;;;;;:::o;46002:1018::-;31954:16;:23;;-1:-1:-1;;31954:23:0;31973:4;31954:23;;;46155:12:::1;::::0;46136:13:::1;::::0;31954:16;;46111:57:::1;::::0;:39:::1;::::0;:20;;:24:::1;:39::i;:::-;:43:::0;::::1;:57::i;:::-;46084:84:::0;-1:-1:-1;46173:19:0::1;46195:42;:20:::0;46084:84;46195:24:::1;:42::i;:::-;46173:64:::0;-1:-1:-1;46246:12:0::1;46261:23;:16:::0;46282:1:::1;46261:20;:23::i;:::-;46246:38:::0;-1:-1:-1;46289:17:0::1;46309:26;:16:::0;46246:38;46309:20:::1;:26::i;:::-;46289:46:::0;-1:-1:-1;46369:21:0::1;46395:39;46412:21;:4:::0;46421:11;46412:8:::1;:21::i;:::-;46395:16;:39::i;:::-;46439:18;46460:41;:21;46486:14:::0;46460:25:::1;:41::i;:::-;46439:62;;46510:21;46534:47;46568:12;;46534:29;46549:13;;46534:10;:14;;:29;;;;:::i;:47::-;46510:71:::0;-1:-1:-1;46610:20:0::1;46510:71:::0;46628:1:::1;46610:17;:20::i;:::-;46594:36;;46635:19;46657:46;46691:11;;46657:29;46672:13;;46657:10;:14;;:29;;;;:::i;:46::-;46635:68:::0;-1:-1:-1;46708:23:0::1;46734:46;46635:68:::0;46734:29:::1;:10:::0;46749:13;46734:14:::1;:29::i;:::-;:33:::0;::::1;:46::i;:::-;46797:14;::::0;46789:45:::1;::::0;46708:72;;-1:-1:-1;;;;;;46797:14:0::1;::::0;46789:45;::::1;;;::::0;46822:11;;46797:14:::1;46789:45:::0;46797:14;46789:45;46822:11;46797:14;46789:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;46847:18:0::1;::::0;46839:53:::1;::::0;-1:-1:-1;;;;;46847:18:0;;::::1;::::0;46839:53;::::1;;;::::0;46876:15;;46847:18:::1;46839:53:::0;46847:18;46839:53;46876:15;46847:18;46839:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;46901:38;46914:9;46925:13;46901:12;:38::i;:::-;46949:63;46964:21;:4:::0;46973:11;46964:8:::1;:21::i;:::-;46949:63;::::0;;14059:25:1;;;14115:2;14100:18;;14093:34;;;14143:18;;14136:34;;;14047:2;14032:18;46949:63:0::1;;;;;;;-1:-1:-1::0;;32000:16:0;:24;;-1:-1:-1;;32000:24:0;;;-1:-1:-1;;;;;;;;46002:1018:0:o;47886:1003::-;47997:7;47993:40;;48019:14;43696;;;43671:22;:39;43745:13;;;43721:21;:37;43782:8;;;43763:16;:27;43817:11;;;43795:19;:33;-1:-1:-1;43849:18:0;;;;43878:17;;;;43900:12;;;43917:15;43628:312;48019:14;48043:16;48062:27;48082:6;48062:19;:27::i;:::-;48043:46;-1:-1:-1;48097:12:0;;48094:55;;48121:22;48134:8;48121:12;:22::i;:::-;-1:-1:-1;;;;;48167:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;48191:22:0;;;;;;:11;:22;;;;;;;;48190:23;48167:46;48163:667;;;48230:62;48252:6;48260:9;48271:20;:6;48282:8;48271:10;:20::i;:::-;48230:21;:62::i;:::-;48163:667;;;-1:-1:-1;;;;;48315:19:0;;;;;;:11;:19;;;;;;;;48314:20;:46;;;;-1:-1:-1;;;;;;48338:22:0;;;;;;:11;:22;;;;;;;;48314:46;48310:520;;;48377:60;48397:6;48405:9;48416:20;:6;48427:8;48416:10;:20::i;:::-;48377:19;:60::i;48310:520::-;-1:-1:-1;;;;;48460:19:0;;;;;;:11;:19;;;;;;;;48459:20;:47;;;;-1:-1:-1;;;;;;48484:22:0;;;;;;:11;:22;;;;;;;;48483:23;48459:47;48455:375;;;48523:58;48541:6;48549:9;48560:20;:6;48571:8;48560:10;:20::i;:::-;48523:17;:58::i;48455:375::-;-1:-1:-1;;;;;48603:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;48626:22:0;;;;;;:11;:22;;;;;;;;48603:45;48599:231;;;48665:62;48687:6;48695:9;48706:20;:6;48717:8;48706:10;:20::i;:::-;48665:21;:62::i;48599:231::-;48760:58;48778:6;48786:9;48797:20;:6;48808:8;48797:10;:20::i;48760:58::-;48844:7;48840:41;;48866:15;44013:22;;43996:14;:39;44062:21;;44046:13;:37;44099:16;;44088:8;:27;44134:19;;44120:11;:33;43952:209;48866:15;47982:907;47886:1003;;;;:::o;41420:561::-;41517:7;;41553;;41470;;;;;41577:289;41601:9;:16;41597:20;;41577:289;;;41667:7;41643;:21;41651:9;41661:1;41651:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41651:12:0;41643:21;;;;;;;;;;;;;:31;;:66;;;41702:7;41678;:21;41686:9;41696:1;41686:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41686:12:0;41678:21;;;;;;;;;;;;;:31;41643:66;41639:97;;;41719:7;;41728;;41711:25;;;;;;;41420:561;;:::o;41639:97::-;41761:34;41773:7;:21;41781:9;41791:1;41781:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41781:12:0;41773:21;;;;;;;;;;;;;41761:7;;:11;:34::i;:::-;41751:44;;41820:34;41832:7;:21;41840:9;41850:1;41840:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41840:12:0;41832:21;;;;;;;;;;;;;41820:7;;:11;:34::i;:::-;41810:44;-1:-1:-1;41619:3:0;;;;:::i;:::-;;;;41577:289;;;-1:-1:-1;41902:7:0;;41890;;:20;;:11;:20::i;:::-;41880:7;:30;41876:61;;;41920:7;;41929;;41912:25;;;;;;41420:561;;:::o;41876:61::-;41956:7;;41965;;-1:-1:-1;41420:561:0;-1:-1:-1;41420:561:0:o;40325:410::-;40385:7;40394;40403;40412;40432:12;40447:31;40470:7;40447:22;:31::i;:::-;40432:46;;40489:18;40510:30;40532:7;40510:21;:30::i;:::-;40489:51;;40545:13;40561:25;40578:7;40561:16;:25::i;:::-;40545:41;-1:-1:-1;40597:23:0;40623:44;40545:41;40623:33;40645:10;40623:33;:7;40635:4;40623:11;:17::i;:44::-;40597:70;40703:4;;-1:-1:-1;40709:10:0;;-1:-1:-1;40709:10:0;-1:-1:-1;40325:410:0;;-1:-1:-1;;;40325:410:0:o;40743:498::-;40873:7;;;;40929:24;:7;40941:11;40929;:24::i;:::-;40911:42;-1:-1:-1;40964:12:0;40979:21;:4;40988:11;40979:8;:21::i;:::-;40964:36;-1:-1:-1;41011:18:0;41032:27;:10;41047:11;41032:14;:27::i;:::-;41011:48;-1:-1:-1;41064:13:0;41080:22;:5;41090:11;41080:9;:22::i;:::-;41064:38;-1:-1:-1;41113:23:0;41139:44;41064:38;41139:33;41161:10;41139:33;:7;41151:4;41139:11;:17::i;:44::-;41202:7;;;;-1:-1:-1;41228:4:0;;-1:-1:-1;40743:498:0;;-1:-1:-1;;;;;;;;;40743:498:0:o;6147:98::-;6205:7;6232:5;6236:1;6232;:5;:::i;5790:98::-;5848:7;5875:5;5879:1;5875;:5;:::i;47029:475::-;47119:16;;;47133:1;47119:16;;;;;;;;47095:21;;47119:16;;;;;;;;;;-1:-1:-1;47119:16:0;47095:40;;47164:4;47146;47151:1;47146:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;47146:23:0;;;-1:-1:-1;;;;;47146:23:0;;;;;47190:15;-1:-1:-1;;;;;47190:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47180:4;47185:1;47180:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;47180:32:0;;;-1:-1:-1;;;;;47180:32:0;;;;;47225:62;47242:4;47257:15;47275:11;47225:8;:62::i;:::-;47300:196;;-1:-1:-1;;;47300:196:0;;-1:-1:-1;;;;;47300:15:0;:66;;;;:196;;47381:11;;47407:1;;47423:4;;47450;;47470:15;;47300:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47512:365;47593:62;47610:4;47625:15;47643:11;47593:8;:62::i;:::-;47670:15;-1:-1:-1;;;;;47670:31:0;;47709:9;47742:4;47762:11;47788:1;47805;47821:7;19632;19659:6;-1:-1:-1;;;;;19659:6:0;;19594:79;47821:7;47670:199;;;;;;-1:-1:-1;;;;;;47670:199:0;;;-1:-1:-1;;;;;15913:15:1;;;47670:199:0;;;15895:34:1;15945:18;;;15938:34;;;;15988:18;;;15981:34;;;;16031:18;;;16024:34;16095:15;;;16074:19;;;16067:44;47843:15:0;16127:19:1;;;16120:35;15829:19;;47670:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;43481:138::-;43549:7;43576:35;43605:5;43576:24;43588:11;;43576:7;:11;;:24;;;;:::i;:::-;:28;;:35::i;42680:353::-;42739:19;42762:10;:8;:10::i;:::-;42739:33;-1:-1:-1;42783:16:0;42802:25;:8;42739:33;42802:12;:25::i;:::-;42873:15;;-1:-1:-1;;;;;42873:15:0;42865:24;;;;:7;:24;;;;;;42783:44;;-1:-1:-1;42865:38:0;;42783:44;42865:28;:38::i;:::-;42846:15;;;-1:-1:-1;;;;;42846:15:0;;;42838:24;;;;:7;:24;;;;;;;;:65;;;;42929:15;;;;;42917:28;;:11;:28;;;;;;;42914:111;;;42995:15;;-1:-1:-1;;;;;42995:15:0;42987:24;;;;:7;:24;;;;;;:38;;43016:8;42987:28;:38::i;:::-;42968:15;;-1:-1:-1;;;;;42968:15:0;42960:24;;;;:7;:24;;;;;:65;42914:111;42728:305;;42680:353;:::o;50079:605::-;50185:15;50202:23;50227:12;50241:23;50266:12;50280:18;50300:13;50317:19;50328:7;50317:10;:19::i;:::-;50184:152;;;;;;;;;;;;;;50365:28;50385:7;50365;:15;50373:6;-1:-1:-1;;;;;50365:15:0;-1:-1:-1;;;;;50365:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;50347:15:0;;;;;;:7;:15;;;;;;;;:46;;;;50422:7;:15;;;;:28;;50442:7;50422:19;:28::i;:::-;-1:-1:-1;;;;;50404:15:0;;;;;;;:7;:15;;;;;;:46;;;;50482:18;;;;;;;:39;;50505:15;50482:22;:39::i;:::-;-1:-1:-1;;;;;50461:18:0;;;;;;:7;:18;;;;;:60;50535:26;50550:10;50535:14;:26::i;:::-;50566:16;50576:5;50566:9;:16::i;:::-;50593:23;50605:4;50611;50593:11;:23::i;:::-;50649:9;-1:-1:-1;;;;;50632:44:0;50641:6;-1:-1:-1;;;;;50632:44:0;;50660:15;50632:44;;;;1830:25:1;;1818:2;1803:18;;1684:177;50632:44:0;;;;;;;;50173:511;;;;;;;50079:605;;;:::o;49446:625::-;49550:15;49567:23;49592:12;49606:23;49631:12;49645:18;49665:13;49682:19;49693:7;49682:10;:19::i;:::-;49549:152;;;;;;;;;;;;;;49730:28;49750:7;49730;:15;49738:6;-1:-1:-1;;;;;49730:15:0;-1:-1:-1;;;;;49730:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;49712:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;49790:18;;;;;:7;:18;;;;;:39;;49813:15;49790:22;:39::i;:::-;-1:-1:-1;;;;;49769:18:0;;;;;;:7;:18;;;;;;;;:60;;;;49861:7;:18;;;;:39;;49884:15;49861:22;:39::i;48897:541::-;48999:15;49016:23;49041:12;49055:23;49080:12;49094:18;49114:13;49131:19;49142:7;49131:10;:19::i;:::-;48998:152;;;;;;;;;;;;;;49179:28;49199:7;49179;:15;49187:6;-1:-1:-1;;;;;49179:15:0;-1:-1:-1;;;;;49179:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;50690:678::-;50793:15;50810:23;50835:12;50849:23;50874:12;50888:18;50908:13;50925:19;50936:7;50925:10;:19::i;:::-;50792:152;;;;;;;;;;;;;;50973:28;50993:7;50973;:15;50981:6;-1:-1:-1;;;;;50973:15:0;-1:-1:-1;;;;;50973:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;50955:15:0;;;;;;:7;:15;;;;;;;;:46;;;;51030:7;:15;;;;:28;;51050:7;51030:19;:28::i;43042:144::-;43113:7;43140:38;43172:5;43140:27;43152:14;;43140:7;:11;;:27;;;;:::i;43195:142::-;43265:7;43292:37;43323:5;43292:26;43304:13;;43292:7;:11;;:26;;;;:::i;43343:132::-;43408:7;43435:32;43461:5;43435:21;43447:8;;43435:7;:11;;:21;;;;:::i;41993:355::-;42056:19;42079:10;:8;:10::i;:::-;42056:33;-1:-1:-1;42100:18:0;42121:27;:10;42056:33;42121:14;:27::i;:::-;42200:4;42184:22;;;;:7;:22;;;;;;42100:48;;-1:-1:-1;42184:38:0;;42100:48;42184:26;:38::i;:::-;42175:4;42159:22;;;;:7;:22;;;;;;;;:63;;;;42236:11;:26;;;;;;42233:107;;;42318:4;42302:22;;;;:7;:22;;;;;;:38;;42329:10;42302:26;:38::i;:::-;42293:4;42277:22;;;;:7;:22;;;;;:63;42045:303;;41993:355;:::o;42354:320::-;42407:19;42430:10;:8;:10::i;:::-;42407:33;-1:-1:-1;42451:13:0;42467:22;:5;42407:33;42467:9;:22::i;:::-;42532:12;;-1:-1:-1;;;;;42532:12:0;42524:21;;;;:7;:21;;;;;;42451:38;;-1:-1:-1;42524:32:0;;42451:38;42524:25;:32::i;:::-;42508:12;;;-1:-1:-1;;;;;42508:12:0;;;42500:21;;;;:7;:21;;;;;;;;:56;;;;42582:12;;;;;42570:25;;:11;:25;;;;;;;42567:99;;;42642:12;;-1:-1:-1;;;;;42642:12:0;42634:21;;;;:7;:21;;;;;;:32;;42660:5;42634:25;:32::i;:::-;42618:12;;-1:-1:-1;;;;;42618:12:0;42610:21;;;;:7;:21;;;;;:56;42396:278;;42354:320;:::o;39705:147::-;39783:7;;:17;;39795:4;39783:11;:17::i;:::-;39773:7;:27;39824:10;;:20;;39839:4;39824:14;:20::i;:::-;39811:10;:33;-1:-1:-1;;39705:147:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;671:70;616:131;:::o;752:315::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:180::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;-1:-1:-1;1415:23:1;;1264:180;-1:-1:-1;1264:180:1:o;1866:255::-;1933:6;1986:2;1974:9;1965:7;1961:23;1957:32;1954:52;;;2002:1;1999;1992:12;1954:52;2041:9;2028:23;2060:31;2085:5;2060:31;:::i;2126:118::-;2212:5;2205:13;2198:21;2191:5;2188:32;2178:60;;2234:1;2231;2224:12;2249:382;2314:6;2322;2375:2;2363:9;2354:7;2350:23;2346:32;2343:52;;;2391:1;2388;2381:12;2343:52;2430:9;2417:23;2449:31;2474:5;2449:31;:::i;:::-;2499:5;-1:-1:-1;2556:2:1;2541:18;;2528:32;2569:30;2528:32;2569:30;:::i;:::-;2618:7;2608:17;;;2249:382;;;;;:::o;2636:456::-;2713:6;2721;2729;2782:2;2770:9;2761:7;2757:23;2753:32;2750:52;;;2798:1;2795;2788:12;2750:52;2837:9;2824:23;2856:31;2881:5;2856:31;:::i;:::-;2906:5;-1:-1:-1;2963:2:1;2948:18;;2935:32;2976:33;2935:32;2976:33;:::i;:::-;2636:456;;3028:7;;-1:-1:-1;;;3082:2:1;3067:18;;;;3054:32;;2636:456::o;3746:309::-;3811:6;3819;3872:2;3860:9;3851:7;3847:23;3843:32;3840:52;;;3888:1;3885;3878:12;3840:52;3924:9;3911:23;3901:33;;3984:2;3973:9;3969:18;3956:32;3997:28;4019:5;3997:28;:::i;4060:241::-;4116:6;4169:2;4157:9;4148:7;4144:23;4140:32;4137:52;;;4185:1;4182;4175:12;4137:52;4224:9;4211:23;4243:28;4265:5;4243:28;:::i;4306:388::-;4374:6;4382;4435:2;4423:9;4414:7;4410:23;4406:32;4403:52;;;4451:1;4448;4441:12;4403:52;4490:9;4477:23;4509:31;4534:5;4509:31;:::i;:::-;4559:5;-1:-1:-1;4616:2:1;4601:18;;4588:32;4629:33;4588:32;4629:33;:::i;4699:380::-;4778:1;4774:12;;;;4821;;;4842:61;;4896:4;4888:6;4884:17;4874:27;;4842:61;4949:2;4941:6;4938:14;4918:18;4915:38;4912:161;;;4995:10;4990:3;4986:20;4983:1;4976:31;5030:4;5027:1;5020:15;5058:4;5055:1;5048:15;4912:161;;4699:380;;;:::o;5084:356::-;5286:2;5268:21;;;5305:18;;;5298:30;5364:34;5359:2;5344:18;;5337:62;5431:2;5416:18;;5084:356::o;5445:127::-;5506:10;5501:3;5497:20;5494:1;5487:31;5537:4;5534:1;5527:15;5561:4;5558:1;5551:15;5577:168;5617:7;5683:1;5679;5675:6;5671:14;5668:1;5665:21;5660:1;5653:9;5646:17;5642:45;5639:71;;;5690:18;;:::i;:::-;-1:-1:-1;5730:9:1;;5577:168::o;5750:354::-;5952:2;5934:21;;;5991:2;5971:18;;;5964:30;6030:32;6025:2;6010:18;;6003:60;6095:2;6080:18;;5750:354::o;6109:414::-;6311:2;6293:21;;;6350:2;6330:18;;;6323:30;6389:34;6384:2;6369:18;;6362:62;-1:-1:-1;;;6455:2:1;6440:18;;6433:48;6513:3;6498:19;;6109:414::o;7706:127::-;7767:10;7762:3;7758:20;7755:1;7748:31;7798:4;7795:1;7788:15;7822:4;7819:1;7812:15;7838:125;7878:4;7906:1;7903;7900:8;7897:34;;;7911:18;;:::i;:::-;-1:-1:-1;7948:9:1;;7838:125::o;7968:127::-;8029:10;8024:3;8020:20;8017:1;8010:31;8060:4;8057:1;8050:15;8084:4;8081:1;8074:15;8100:135;8139:3;-1:-1:-1;;8160:17:1;;8157:43;;;8180:18;;:::i;:::-;-1:-1:-1;8227:1:1;8216:13;;8100:135::o;9235:245::-;9302:6;9355:2;9343:9;9334:7;9330:23;9326:32;9323:52;;;9371:1;9368;9361:12;9323:52;9403:9;9397:16;9422:28;9444:5;9422:28;:::i;10249:128::-;10289:3;10320:1;10316:6;10313:1;10310:13;10307:39;;;10326:18;;:::i;:::-;-1:-1:-1;10362:9:1;;10249:128::o;13635:217::-;13675:1;13701;13691:132;;13745:10;13740:3;13736:20;13733:1;13726:31;13780:4;13777:1;13770:15;13808:4;13805:1;13798:15;13691:132;-1:-1:-1;13837:9:1;;13635:217::o;14313:251::-;14383:6;14436:2;14424:9;14415:7;14411:23;14407:32;14404:52;;;14452:1;14449;14442:12;14404:52;14484:9;14478:16;14503:31;14528:5;14503:31;:::i;14569:980::-;14831:4;14879:3;14868:9;14864:19;14910:6;14899:9;14892:25;14936:2;14974:6;14969:2;14958:9;14954:18;14947:34;15017:3;15012:2;15001:9;14997:18;14990:31;15041:6;15076;15070:13;15107:6;15099;15092:22;15145:3;15134:9;15130:19;15123:26;;15184:2;15176:6;15172:15;15158:29;;15205:1;15215:195;15229:6;15226:1;15223:13;15215:195;;;15294:13;;-1:-1:-1;;;;;15290:39:1;15278:52;;15385:15;;;;15350:12;;;;15326:1;15244:9;15215:195;;;-1:-1:-1;;;;;;;15466:32:1;;;;15461:2;15446:18;;15439:60;-1:-1:-1;;;15530:3:1;15515:19;15508:35;15427:3;14569:980;-1:-1:-1;;;14569:980:1:o;16166:306::-;16254:6;16262;16270;16323:2;16311:9;16302:7;16298:23;16294:32;16291:52;;;16339:1;16336;16329:12;16291:52;16368:9;16362:16;16352:26;;16418:2;16407:9;16403:18;16397:25;16387:35;;16462:2;16451:9;16447:18;16441:25;16431:35;;16166:306;;;;;:::o
Swarm Source
ipfs://9bb739a58a29af53d9cfccc5dd0031048af821fcdf61ef81b655a8445222e009
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 33 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.