Zapper.Fi: Uniswap Zap Out V2 contract has migrated to a new address.
Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 190 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Zap Out | 10434480 | 1597 days ago | IN | 0 ETH | 0.0056276 | ||||
Zap Out | 10431447 | 1597 days ago | IN | 0 ETH | 0.00977576 | ||||
Zap Out | 10429531 | 1597 days ago | IN | 0 ETH | 0.00968073 | ||||
Zap Out | 10428891 | 1598 days ago | IN | 0 ETH | 0.00663306 | ||||
Zap Out | 10428851 | 1598 days ago | IN | 0 ETH | 0.00533889 | ||||
Zap Out | 10427890 | 1598 days ago | IN | 0 ETH | 0.00645506 | ||||
Zap Out | 10427362 | 1598 days ago | IN | 0 ETH | 0.0073387 | ||||
Zap Out | 10427249 | 1598 days ago | IN | 0 ETH | 0.00654851 | ||||
Zap Out | 10427237 | 1598 days ago | IN | 0 ETH | 0.00704342 | ||||
Zap Out | 10424886 | 1598 days ago | IN | 0 ETH | 0.01376195 | ||||
Zap Out | 10423932 | 1598 days ago | IN | 0 ETH | 0.00946946 | ||||
Zap Out | 10423774 | 1598 days ago | IN | 0 ETH | 0.00736041 | ||||
Zap Out | 10423325 | 1598 days ago | IN | 0 ETH | 0.01074871 | ||||
Zap Out | 10423212 | 1598 days ago | IN | 0 ETH | 0.01060179 | ||||
Zap Out | 10423207 | 1598 days ago | IN | 0 ETH | 0.01057375 | ||||
Zap Out | 10421770 | 1599 days ago | IN | 0 ETH | 0.01085193 | ||||
Zap Out | 10421545 | 1599 days ago | IN | 0 ETH | 0.00824 | ||||
Zap Out | 10421287 | 1599 days ago | IN | 0 ETH | 0.00969948 | ||||
Zap Out | 10420874 | 1599 days ago | IN | 0 ETH | 0.00865933 | ||||
Zap Out | 10420440 | 1599 days ago | IN | 0 ETH | 0.01020915 | ||||
Zap Out | 10419181 | 1599 days ago | IN | 0 ETH | 0.01946469 | ||||
Zap Out | 10418211 | 1599 days ago | IN | 0 ETH | 0.01644478 | ||||
Zap Out | 10417447 | 1599 days ago | IN | 0 ETH | 0.01364068 | ||||
Zap Out | 10417057 | 1599 days ago | IN | 0 ETH | 0.01127655 | ||||
Zap Out | 10416197 | 1600 days ago | IN | 0 ETH | 0.00765081 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
10434480 | 1597 days ago | 150.40549216 ETH | ||||
10434480 | 1597 days ago | 149.08646929 ETH | ||||
10434480 | 1597 days ago | 1.31902286 ETH | ||||
10428891 | 1598 days ago | 0.09982403 ETH | ||||
10428891 | 1598 days ago | 0.04983698 ETH | ||||
10428891 | 1598 days ago | 0.04998705 ETH | ||||
10427890 | 1598 days ago | 30.37262403 ETH | ||||
10427890 | 1598 days ago | 15.23081122 ETH | ||||
10427890 | 1598 days ago | 15.14181281 ETH | ||||
10427362 | 1598 days ago | 1.7225123 ETH | ||||
10427362 | 1598 days ago | 0.85994572 ETH | ||||
10427362 | 1598 days ago | 0.86256658 ETH | ||||
10427285 | 1598 days ago | 0.39796388 ETH | ||||
10424886 | 1598 days ago | 7.14662147 ETH | ||||
10424886 | 1598 days ago | 3.58359244 ETH | ||||
10424886 | 1598 days ago | 3.56302902 ETH | ||||
10423932 | 1598 days ago | 7.58770204 ETH | ||||
10423932 | 1598 days ago | 3.8018743 ETH | ||||
10423932 | 1598 days ago | 3.78582774 ETH | ||||
10423212 | 1598 days ago | 0.39601915 ETH | ||||
10423212 | 1598 days ago | 0.19897294 ETH | ||||
10423212 | 1598 days ago | 0.1970462 ETH | ||||
10423207 | 1598 days ago | 0.7401746 ETH | ||||
10423207 | 1598 days ago | 0.37075732 ETH | ||||
10423207 | 1598 days ago | 0.36941727 ETH |
Loading...
Loading
Contract Name:
UniswapV2_ZapOut
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-06-17 */ // File: @openzeppelin/contracts/math/SafeMath.sol pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: @openzeppelin/contracts/GSN/Context.sol pragma solidity ^0.5.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN 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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/ownership/Ownable.sol pragma solidity ^0.5.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { 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(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _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 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.5.5; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @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]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } // File: @openzeppelin/contracts/utils/ReentrancyGuard.sol pragma solidity ^0.5.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. * * _Since v2.5.0:_ this module is now much more gas efficient, given net gas * metering changes introduced in the Istanbul hardfork. */ contract ReentrancyGuard { bool private _notEntered; constructor () internal { // Storing an initial non-zero value makes deployment a bit more // expensive, but in exchange the refund on every call to nonReentrant // will be lower in amount. Since refunds are capped to a percetange of // the total transaction's gas, it is best to keep them low in cases // like this one, to increase the likelihood of the full refund coming // into effect. _notEntered = true; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_notEntered, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _notEntered = false; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _notEntered = true; } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol pragma solidity ^0.5.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: contracts/UniswapV2/UniswapV2Router.sol pragma solidity 0.5.12; interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } // File: contracts/UniswapV2/UniswapZapOutV2.sol pragma solidity 0.5.12; library TransferHelper { function safeApprove( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0x095ea7b3, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: APPROVE_FAILED" ); } function safeTransfer( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0xa9059cbb, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FAILED" ); } function safeTransferFrom( address token, address from, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0x23b872dd, from, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FROM_FAILED" ); } } interface Iuniswap { // converting ERC20 to ERC20 and transfer function tokenToTokenTransferInput( uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address recipient, address token_addr ) external returns (uint256 tokens_bought); function tokenToTokenSwapInput( uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address token_addr ) external returns (uint256 tokens_bought); function getTokenToEthInputPrice(uint256 tokens_sold) external view returns (uint256 eth_bought); function tokenToEthTransferInput( uint256 tokens_sold, uint256 min_eth, uint256 deadline, address recipient ) external returns (uint256 eth_bought); function ethToTokenSwapInput(uint256 min_tokens, uint256 deadline) external payable returns (uint256 tokens_bought); function ethToTokenTransferInput( uint256 min_tokens, uint256 deadline, address recipient ) external payable returns (uint256 tokens_bought); function balanceOf(address _owner) external view returns (uint256); function transfer(address _to, uint256 _value) external returns (bool); function transferFrom( address from, address to, uint256 tokens ) external returns (bool success); } interface IUniswapV2Pair { function token0() external pure returns (address); function token1() external pure returns (address); function totalSupply() external view returns (uint256); function getReserves() external view returns ( uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast ); } interface IWETH { function deposit() external payable; function transfer(address to, uint256 value) external returns (bool); function withdraw(uint256) external; } interface IUniswapV2Factory { function getPair(address tokenA, address tokenB) external view returns (address); } contract UniswapV2_ZapOut is ReentrancyGuard, Ownable { using SafeMath for uint256; using Address for address; bool private stopped = false; uint16 public goodwill; address public dzgoodwillAddress; uint256 public defaultSlippage; IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); IUniswapV2Factory public UniSwapV2FactoryAddress = IUniswapV2Factory( 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f ); address wethTokenAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; constructor( uint16 _goodwill, address _dzgoodwillAddress, uint256 _slippage ) public { goodwill = _goodwill; dzgoodwillAddress = _dzgoodwillAddress; defaultSlippage = _slippage; } // circuit breaker modifiers modifier stopInEmergency { if (stopped) { revert("Temporarily Paused"); } else { _; } } /** @notice This function is used to zapout of given Uniswap pair in the bounded tokens @param _FromUniPoolAddress The uniswap pair address to zapout @param _IncomingLP The amount of LP @return the amount of pair tokens received after zapout */ function ZapOut2PairToken(address _FromUniPoolAddress, uint256 _IncomingLP) public payable nonReentrant stopInEmergency returns (uint256 amountA, uint256 amountB) { IUniswapV2Pair pair = IUniswapV2Pair(_FromUniPoolAddress); require(address(pair) != address(0), "Error: Invalid Unipool Address"); //get reserves address token0 = pair.token0(); address token1 = pair.token1(); TransferHelper.safeTransferFrom( _FromUniPoolAddress, msg.sender, address(this), _IncomingLP ); uint256 goodwillPortion = _transferGoodwill( _FromUniPoolAddress, _IncomingLP ); TransferHelper.safeApprove( _FromUniPoolAddress, address(uniswapV2Router), SafeMath.sub(_IncomingLP, goodwillPortion) ); (amountA, amountB) = uniswapV2Router.removeLiquidity( token0, token1, SafeMath.sub(_IncomingLP, goodwillPortion), 1, 1, msg.sender, now + 60 ); } /** @notice This function is used to zapout of given Uniswap pair in ETH/ERC20 Tokens @param _ToTokenContractAddress The ERC20 token to zapout in (address(0x00) if ether) @param _FromUniPoolAddress The uniswap pair address to zapout from @param _IncomingLP The amount of LP @return the amount of eth/tokens received after zapout */ function ZapOut( address _ToTokenContractAddress, address _FromUniPoolAddress, uint256 _IncomingLP, uint256 slippage ) public payable nonReentrant stopInEmergency returns (uint256) { IUniswapV2Pair pair = IUniswapV2Pair(_FromUniPoolAddress); require(address(pair) != address(0), "Error: Invalid Unipool Address"); //get pair tokens address token0 = pair.token0(); address token1 = pair.token1(); TransferHelper.safeTransferFrom( _FromUniPoolAddress, msg.sender, address(this), _IncomingLP ); uint256 goodwillPortion = _transferGoodwill( _FromUniPoolAddress, _IncomingLP ); TransferHelper.safeApprove( _FromUniPoolAddress, address(uniswapV2Router), SafeMath.sub(_IncomingLP, goodwillPortion) ); (uint256 amountA, uint256 amountB) = uniswapV2Router.removeLiquidity( token0, token1, SafeMath.sub(_IncomingLP, goodwillPortion), 1, 1, address(this), now + 60 ); uint256 withSlippage = slippage > 0 && slippage < 10000 ? slippage : defaultSlippage; uint256 tokenBought; if ( canSwapFromV2(_ToTokenContractAddress, token0) && canSwapFromV2(_ToTokenContractAddress, token1) ) { tokenBought = swapFromV2( token0, _ToTokenContractAddress, amountA, withSlippage ); tokenBought += swapFromV2( token1, _ToTokenContractAddress, amountB, withSlippage ); } else if (canSwapFromV2(_ToTokenContractAddress, token0)) { uint256 token0Bought = swapFromV2( token1, token0, amountB, withSlippage ); tokenBought = swapFromV2( token0, _ToTokenContractAddress, token0Bought.add(amountA), withSlippage ); } else if (canSwapFromV2(_ToTokenContractAddress, token1)) { uint256 token1Bought = swapFromV2( token0, token1, amountA, withSlippage ); tokenBought = swapFromV2( token1, _ToTokenContractAddress, token1Bought.add(amountB), withSlippage ); } require(tokenBought > 0, "ERR: Token exchange"); if (_ToTokenContractAddress == address(0)) { msg.sender.transfer(tokenBought); } else { TransferHelper.safeTransfer( _ToTokenContractAddress, msg.sender, tokenBought ); } return tokenBought; } //swaps _fromToken for _toToken //for eth, address(0) otherwise ERC token address function swapFromV2( address _fromToken, address _toToken, uint256 amount, uint256 slippage ) internal returns (uint256) { require( _fromToken != address(0) || _toToken != address(0), "Invalid Exchange values" ); if (_fromToken == _toToken) return amount; require(canSwapFromV2(_fromToken, _toToken), "Cannot be exchanged"); require(amount > 0, "Invalid amount"); if (_fromToken == address(0)) { if (_toToken == wethTokenAddress) { IWETH(wethTokenAddress).deposit.value(amount)(); return amount; } address[] memory path = new address[](2); path[0] = wethTokenAddress; path[1] = _toToken; uint256 minTokens = uniswapV2Router.getAmountsOut(amount, path)[1]; minTokens = SafeMath.div( SafeMath.mul(minTokens, SafeMath.sub(10000, slippage)), 10000 ); uint256[] memory amounts = uniswapV2Router .swapExactETHForTokens .value(amount)(minTokens, path, address(this), now + 180); return amounts[1]; } else if (_toToken == address(0)) { if (_fromToken == wethTokenAddress) { IWETH(wethTokenAddress).withdraw(amount); return amount; } address[] memory path = new address[](2); TransferHelper.safeApprove( _fromToken, address(uniswapV2Router), amount ); path[0] = _fromToken; path[1] = wethTokenAddress; uint256 minTokens = uniswapV2Router.getAmountsOut(amount, path)[1]; minTokens = SafeMath.div( SafeMath.mul(minTokens, SafeMath.sub(10000, slippage)), 10000 ); uint256[] memory amounts = uniswapV2Router.swapExactTokensForETH( amount, minTokens, path, address(this), now + 180 ); return amounts[1]; } else { TransferHelper.safeApprove( _fromToken, address(uniswapV2Router), amount ); uint256 returnedAmount = _swapTokenToTokenV2( _fromToken, _toToken, amount, slippage ); require(returnedAmount > 0, "Error in swap"); return returnedAmount; } } //swaps 2 ERC tokens (UniV2) function _swapTokenToTokenV2( address _fromToken, address _toToken, uint256 amount, uint256 slippage ) internal returns (uint256) { IUniswapV2Pair pair1 = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_fromToken, wethTokenAddress) ); IUniswapV2Pair pair2 = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_toToken, wethTokenAddress) ); IUniswapV2Pair pair3 = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_fromToken, _toToken) ); uint256[] memory amounts; if (_haveReserve(pair3)) { address[] memory path = new address[](2); path[0] = _fromToken; path[1] = _toToken; uint256 minTokens = uniswapV2Router.getAmountsOut(amount, path)[1]; minTokens = SafeMath.div( SafeMath.mul(minTokens, SafeMath.sub(10000, slippage)), 10000 ); amounts = uniswapV2Router.swapExactTokensForTokens( amount, minTokens, path, address(this), now + 180 ); return amounts[1]; } else if (_haveReserve(pair1) && _haveReserve(pair2)) { address[] memory path = new address[](3); path[0] = _fromToken; path[1] = wethTokenAddress; path[2] = _toToken; uint256 minTokens = uniswapV2Router.getAmountsOut(amount, path)[2]; minTokens = SafeMath.div( SafeMath.mul(minTokens, SafeMath.sub(10000, slippage)), 10000 ); amounts = uniswapV2Router.swapExactTokensForTokens( amount, minTokens, path, address(this), now + 180 ); return amounts[2]; } return 0; } function canSwapFromV2(address _fromToken, address _toToken) public view returns (bool) { require( _fromToken != address(0) || _toToken != address(0), "Invalid Exchange values" ); if (_fromToken == _toToken) return true; if (_fromToken == address(0) || _fromToken == wethTokenAddress) { if (_toToken == wethTokenAddress || _toToken == address(0)) return true; IUniswapV2Pair pair = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_toToken, wethTokenAddress) ); if (_haveReserve(pair)) return true; } else if (_toToken == address(0) || _toToken == wethTokenAddress) { if (_fromToken == wethTokenAddress || _fromToken == address(0)) return true; IUniswapV2Pair pair = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_fromToken, wethTokenAddress) ); if (_haveReserve(pair)) return true; } else { IUniswapV2Pair pair1 = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_fromToken, wethTokenAddress) ); IUniswapV2Pair pair2 = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_toToken, wethTokenAddress) ); IUniswapV2Pair pair3 = IUniswapV2Pair( UniSwapV2FactoryAddress.getPair(_fromToken, _toToken) ); if (_haveReserve(pair1) && _haveReserve(pair2)) return true; if (_haveReserve(pair3)) return true; } return false; } //checks if the UNI v2 contract have reserves to swap tokens function _haveReserve(IUniswapV2Pair pair) internal view returns (bool) { if (address(pair) != address(0)) { uint256 totalSupply = pair.totalSupply(); if (totalSupply > 0) return true; } } /** @notice This function is used to calculate and transfer goodwill @param _tokenContractAddress Token in which goodwill is deducted @param tokens2Trade The total amount of tokens to be zapped in @return The quantity of goodwill deducted */ function _transferGoodwill( address _tokenContractAddress, uint256 tokens2Trade ) internal returns (uint256 goodwillPortion) { goodwillPortion = SafeMath.div( SafeMath.mul(tokens2Trade, goodwill), 10000 ); if (goodwillPortion == 0) { return 0; } TransferHelper.safeTransfer( _tokenContractAddress, dzgoodwillAddress, goodwillPortion ); } function updateSlippage(uint256 _newSlippage) public onlyOwner { require( _newSlippage > 0 && _newSlippage < 10000, "Slippage Value not allowed" ); defaultSlippage = _newSlippage; } function set_new_goodwill(uint16 _new_goodwill) public onlyOwner { require( _new_goodwill >= 0 && _new_goodwill < 10000, "GoodWill Value not allowed" ); goodwill = _new_goodwill; } function set_new_dzgoodwillAddress(address _new_dzgoodwillAddress) public onlyOwner { dzgoodwillAddress = _new_dzgoodwillAddress; } function inCaseTokengetsStuck(IERC20 _TokenAddress) public onlyOwner { uint256 qty = _TokenAddress.balanceOf(address(this)); TransferHelper.safeTransfer(address(_TokenAddress), owner(), qty); } // - to Pause the contract function toggleContractActive() public onlyOwner { stopped = !stopped; } // - to withdraw any ETH balance sitting in the contract function withdraw() public onlyOwner { uint256 contractBalance = address(this).balance; address payable _to = owner().toPayable(); _to.transfer(contractBalance); } // - to kill the contract function destruct() public onlyOwner { address payable _to = owner().toPayable(); selfdestruct(_to); } function() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint16","name":"_goodwill","type":"uint16"},{"internalType":"address","name":"_dzgoodwillAddress","type":"address"},{"internalType":"uint256","name":"_slippage","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"UniSwapV2FactoryAddress","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_ToTokenContractAddress","type":"address"},{"internalType":"address","name":"_FromUniPoolAddress","type":"address"},{"internalType":"uint256","name":"_IncomingLP","type":"uint256"},{"internalType":"uint256","name":"slippage","type":"uint256"}],"name":"ZapOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_FromUniPoolAddress","type":"address"},{"internalType":"uint256","name":"_IncomingLP","type":"uint256"}],"name":"ZapOut2PairToken","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_fromToken","type":"address"},{"internalType":"address","name":"_toToken","type":"address"}],"name":"canSwapFromV2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"defaultSlippage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"destruct","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dzgoodwillAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goodwill","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_TokenAddress","type":"address"}],"name":"inCaseTokengetsStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_dzgoodwillAddress","type":"address"}],"name":"set_new_dzgoodwillAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_new_goodwill","type":"uint16"}],"name":"set_new_goodwill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"toggleContractActive","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_newSlippage","type":"uint256"}],"name":"updateSlippage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000805460ff60a81b19169055600380546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d17909155600480548216735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f1790556005805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790553480156200008457600080fd5b50604051620032ce380380620032ce83398181016040526060811015620000aa57600080fd5b50805160208201516040909201516000805460ff19166001178155919291620000db6001600160e01b036200018b16565b60008054610100600160a81b0319166101006001600160a01b038416908102919091178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805461ffff9094167601000000000000000000000000000000000000000000000261ffff60b01b1990941693909317909255600180546001600160a01b039092166001600160a01b03199092169190911790556002556200018f565b3390565b61312f806200019f6000396000f3fe6080604052600436106101145760003560e01c8063715018a6116100a0578063c3a8fcb011610064578063c3a8fcb014610326578063e88c68141461033b578063ee857b6914610350578063f27cf32014610395578063f2fde38b146103d057610114565b8063715018a614610272578063849e25f4146102875780638da5cb5b146102ba5780638f32d59b146102cf578063b10e1dbc146102f857610114565b80633ccfd60b116100e75780633ccfd60b1461019b57806349c082cd146101b05780635487404a146101fe578063551196d5146102135780635de0398e1461024657610114565b80631385d24c1461011657806315b0d4961461012b5780631694505e146101555780632b68b9c614610186575b005b34801561012257600080fd5b50610114610403565b34801561013757600080fd5b506101146004803603602081101561014e57600080fd5b503561046b565b34801561016157600080fd5b5061016a610519565b604080516001600160a01b039092168252519081900360200190f35b34801561019257600080fd5b50610114610528565b3480156101a757600080fd5b50610114610598565b6101ec600480360360808110156101c657600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561062c565b60408051918252519081900360200190f35b34801561020a57600080fd5b506101ec610aba565b34801561021f57600080fd5b506101146004803603602081101561023657600080fd5b50356001600160a01b0316610ac0565b34801561025257600080fd5b5061025b610b95565b6040805161ffff9092168252519081900360200190f35b34801561027e57600080fd5b50610114610ba6565b34801561029357600080fd5b50610114600480360360208110156102aa57600080fd5b50356001600160a01b0316610c49565b3480156102c657600080fd5b5061016a610cbf565b3480156102db57600080fd5b506102e4610cd3565b604080519115158252519081900360200190f35b34801561030457600080fd5b506101146004803603602081101561031b57600080fd5b503561ffff16610cfc565b34801561033257600080fd5b5061016a610dbf565b34801561034757600080fd5b5061016a610dce565b61037c6004803603604081101561036657600080fd5b506001600160a01b038135169060200135610ddd565b6040805192835260208301919091528051918290030190f35b3480156103a157600080fd5b506102e4600480360360408110156103b857600080fd5b506001600160a01b03813581169160200135166110dd565b3480156103dc57600080fd5b50610114600480360360208110156103f357600080fd5b50356001600160a01b031661151c565b61040b610cd3565b61044a576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6000805460ff60a81b198116600160a81b9182900460ff1615909102179055565b610473610cd3565b6104b2576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6000811180156104c3575061271081105b610514576040805162461bcd60e51b815260206004820152601a60248201527f536c6970706167652056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b600255565b6003546001600160a01b031681565b610530610cd3565b61056f576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b600061058a61057c610cbf565b6001600160a01b031661156f565b9050806001600160a01b0316ff5b6105a0610cd3565b6105df576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b303160006105ee61057c610cbf565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610627573d6000803e3d6000fd5b505050565b6000805460ff16610684576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff16156106e1576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b836001600160a01b03811661073d576040805162461bcd60e51b815260206004820152601e60248201527f4572726f723a20496e76616c696420556e69706f6f6c20416464726573730000604482015290519081900360640190fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561077857600080fd5b505afa15801561078c573d6000803e3d6000fd5b505050506040513d60208110156107a257600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b1580156107ea57600080fd5b505afa1580156107fe573d6000803e3d6000fd5b505050506040513d602081101561081457600080fd5b5051905061082487333089611576565b600061083088886116d3565b6003549091506108549089906001600160a01b031661084f8a85611720565b611769565b60035460009081906001600160a01b031663baa2abde86866108768d88611720565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152929093166024830152604482015260016064820181905260848201523060a4820152603c420160c4820152815160e480830193928290030181600087803b1580156108e557600080fd5b505af11580156108f9573d6000803e3d6000fd5b505050506040513d604081101561090f57600080fd5b50805160209091015190925090506000881580159061092f575061271089105b61093b5760025461093d565b885b9050600061094b8d886110dd565b801561095c575061095c8d876110dd565b156109815761096d878e86856118d3565b905061097b868e85856118d3565b016109fb565b61098b8d886110dd565b156109c357600061099e878986866118d3565b90506109bb888f6109b5848963ffffffff61227e16565b866118d3565b9150506109fb565b6109cd8d876110dd565b156109fb5760006109e0888887866118d3565b90506109f7878f6109b5848863ffffffff61227e16565b9150505b60008111610a50576040805162461bcd60e51b815260206004820152601360248201527f4552523a20546f6b656e2065786368616e676500000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038d16610a9157604051339082156108fc029083906000818181858888f19350505050158015610a8b573d6000803e3d6000fd5b50610a9c565b610a9c8d33836122d8565b9750505050505050506000805460ff19166001179055949350505050565b60025481565b610ac8610cd3565b610b07576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610b5157600080fd5b505afa158015610b65573d6000803e3d6000fd5b505050506040513d6020811015610b7b57600080fd5b50519050610b9182610b8b610cbf565b836122d8565b5050565b600054600160b01b900461ffff1681565b610bae610cd3565b610bed576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b600080546040516101009091046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805474ffffffffffffffffffffffffffffffffffffffff0019169055565b610c51610cd3565b610c90576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60005461010090046001600160a01b031690565b6000805461010090046001600160a01b0316610ced61243b565b6001600160a01b031614905090565b610d04610cd3565b610d43576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6127108161ffff1610610d9d576040805162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6000805461ffff909216600160b01b0261ffff60b01b19909216919091179055565b6001546001600160a01b031681565b6004546001600160a01b031681565b60008054819060ff16610e37576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff1615610e94576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b836001600160a01b038116610ef0576040805162461bcd60e51b815260206004820152601e60248201527f4572726f723a20496e76616c696420556e69706f6f6c20416464726573730000604482015290519081900360640190fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2b57600080fd5b505afa158015610f3f573d6000803e3d6000fd5b505050506040513d6020811015610f5557600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b158015610f9d57600080fd5b505afa158015610fb1573d6000803e3d6000fd5b505050506040513d6020811015610fc757600080fd5b50519050610fd787333089611576565b6000610fe388886116d3565b6003549091506110029089906001600160a01b031661084f8a85611720565b6003546001600160a01b031663baa2abde848461101f8b86611720565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152929093166024830152604482015260016064820181905260848201523360a4820152603c420160c4820152815160e480830193928290030181600087803b15801561108e57600080fd5b505af11580156110a2573d6000803e3d6000fd5b505050506040513d60408110156110b857600080fd5b5080516020909101516000805460ff1916600117905590999098509650505050505050565b60006001600160a01b0383161515806110fe57506001600160a01b03821615155b61114f576040805162461bcd60e51b815260206004820152601760248201527f496e76616c69642045786368616e67652076616c756573000000000000000000604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b0316141561117157506001611516565b6001600160a01b038316158061119457506005546001600160a01b038481169116145b15611272576005546001600160a01b03838116911614806111bc57506001600160a01b038216155b156111c957506001611516565b600480546005546040805163e6a4390560e01b81526001600160a01b03878116958201959095529184166024830152516000939092169163e6a4390591604480820192602092909190829003018186803b15801561122657600080fd5b505afa15801561123a573d6000803e3d6000fd5b505050506040513d602081101561125057600080fd5b5051905061125d8161243f565b1561126c576001915050611516565b50611512565b6001600160a01b038216158061129557506005546001600160a01b038381169116145b15611327576005546001600160a01b03848116911614806112bd57506001600160a01b038316155b156112ca57506001611516565b600480546005546040805163e6a4390560e01b81526001600160a01b03888116958201959095529184166024830152516000939092169163e6a4390591604480820192602092909190829003018186803b15801561122657600080fd5b600480546005546040805163e6a4390560e01b81526001600160a01b03888116958201959095529184166024830152516000939092169163e6a4390591604480820192602092909190829003018186803b15801561138457600080fd5b505afa158015611398573d6000803e3d6000fd5b505050506040513d60208110156113ae57600080fd5b5051600480546005546040805163e6a4390560e01b81526001600160a01b0389811695820195909552918416602483015251939450600093929091169163e6a4390591604480820192602092909190829003018186803b15801561141157600080fd5b505afa158015611425573d6000803e3d6000fd5b505050506040513d602081101561143b57600080fd5b5051600480546040805163e6a4390560e01b81526001600160a01b038a81169482019490945288841660248201529051939450600093929091169163e6a4390591604480820192602092909190829003018186803b15801561149c57600080fd5b505afa1580156114b0573d6000803e3d6000fd5b505050506040513d60208110156114c657600080fd5b505190506114d38361243f565b80156114e357506114e38261243f565b156114f45760019350505050611516565b6114fd8161243f565b1561150e5760019350505050611516565b5050505b5060005b92915050565b611524610cd3565b611563576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b61156c816124cf565b50565b805b919050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106115fb5780518252601f1990920191602091820191016115dc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461165d576040519150601f19603f3d011682016040523d82523d6000602084013e611662565b606091505b5091509150818015611690575080511580611690575080806020019051602081101561168d57600080fd5b50515b6116cb5760405162461bcd60e51b81526004018080602001828103825260248152602001806130d76024913960400191505060405180910390fd5b505050505050565b600080546116f9906116f1908490600160b01b900461ffff16612587565b6127106125e0565b90508061170857506000611516565b6001546115169084906001600160a01b0316836122d8565b600061176283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612622565b9392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106117e65780518252601f1990920191602091820191016117c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611848576040519150601f19603f3d011682016040523d82523d6000602084013e61184d565b606091505b509150915081801561187b57508051158061187b575080806020019051602081101561187857600080fd5b50515b6118cc576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fd5b5050505050565b60006001600160a01b0385161515806118f457506001600160a01b03841615155b611945576040805162461bcd60e51b815260206004820152601760248201527f496e76616c69642045786368616e67652076616c756573000000000000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03161415611966575081612276565b61197085856110dd565b6119c1576040805162461bcd60e51b815260206004820152601360248201527f43616e6e6f742062652065786368616e67656400000000000000000000000000604482015290519081900360640190fd5b60008311611a16576040805162461bcd60e51b815260206004820152600e60248201527f496e76616c696420616d6f756e74000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038516611e61576005546001600160a01b0385811691161415611aab57600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a8a57600080fd5b505af1158015611a9e573d6000803e3d6000fd5b5050505050829050612276565b6040805160028082526060808301845292602083019080388339505060055482519293506001600160a01b031691839150600090611ae557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110611b1357fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b81526004810189815260248201928352865160448301528651600096949094169463d06ca61f948b948994909260649091019185820191028083838c5b83811015611b91578181015183820152602001611b79565b50505050905001935050505060006040518083038186803b158015611bb557600080fd5b505afa158015611bc9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611bf257600080fd5b8101908080516040519392919084640100000000821115611c1257600080fd5b908301906020820185811115611c2757600080fd5b8251866020820283011164010000000082111715611c4457600080fd5b82525081516020918201928201910280838360005b83811015611c71578181015183820152602001611c59565b50505050905001604052505050600181518110611c8a57fe5b60200260200101519050611cac6116f182611ca761271088611720565b612587565b90506060600360009054906101000a90046001600160a01b03166001600160a01b0316637ff36ab5878486304260b4016040518663ffffffff1660e01b81526004018085815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611d4f578181015183820152602001611d37565b50505050905001955050505050506000604051808303818588803b158015611d7657600080fd5b505af1158015611d8a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526020811015611db457600080fd5b8101908080516040519392919084640100000000821115611dd457600080fd5b908301906020820185811115611de957600080fd5b8251866020820283011164010000000082111715611e0657600080fd5b82525081516020918201928201910280838360005b83811015611e33578181015183820152602001611e1b565b50505050905001604052505050905080600181518110611e4f57fe5b60200260200101519350505050612276565b6001600160a01b038416612206576005546001600160a01b0386811691161415611ef25760055460408051632e1a7d4d60e01b81526004810186905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015611ed257600080fd5b505af1158015611ee6573d6000803e3d6000fd5b50505050829050612276565b60408051600280825260608083018452926020830190803883395050600354919250611f2a918891506001600160a01b031686611769565b8581600081518110611f3857fe5b6001600160a01b039283166020918202929092010152600554825191169082906001908110611f6357fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b81526004810189815260248201928352865160448301528651600096949094169463d06ca61f948b948994909260649091019185820191028083838c5b83811015611fe1578181015183820152602001611fc9565b50505050905001935050505060006040518083038186803b15801561200557600080fd5b505afa158015612019573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561204257600080fd5b810190808051604051939291908464010000000082111561206257600080fd5b90830190602082018581111561207757600080fd5b825186602082028301116401000000008211171561209457600080fd5b82525081516020918201928201910280838360005b838110156120c15781810151838201526020016120a9565b505050509050016040525050506001815181106120da57fe5b602002602001015190506120f76116f182611ca761271088611720565b90506060600360009054906101000a90046001600160a01b03166001600160a01b03166318cbafe5878486304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156121a0578181015183820152602001612188565b505050509050019650505050505050600060405180830381600087803b1580156121c957600080fd5b505af11580156121dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611db457600080fd5b60035461221e9086906001600160a01b031685611769565b600061222c868686866126b9565b905060008111612273576040805162461bcd60e51b815260206004820152600d60248201526c04572726f7220696e207377617609c1b604482015290519081900360640190fd5b90505b949350505050565b600082820183811015611762576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106123555780518252601f199092019160209182019101612336565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123b7576040519150601f19603f3d011682016040523d82523d6000602084013e6123bc565b606091505b50915091508180156123ea5750805115806123ea57508080602001905160208110156123e757600080fd5b50515b6118cc576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b3390565b60006001600160a01b03821615611571576000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561248b57600080fd5b505afa15801561249f573d6000803e3d6000fd5b505050506040513d60208110156124b557600080fd5b5051905080156124c9576001915050611571565b50919050565b6001600160a01b0381166125145760405162461bcd60e51b81526004018080602001828103825260268152602001806130706026913960400191505060405180910390fd5b600080546040516001600160a01b038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b60008261259657506000611516565b828202828482816125a357fe5b04146117625760405162461bcd60e51b81526004018080602001828103825260218152602001806130966021913960400191505060405180910390fd5b600061176283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061300a565b600081848411156126b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561267657818101518382015260200161265e565b50505050905090810190601f1680156126a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600480546005546040805163e6a4390560e01b81526001600160a01b03898116958201959095529184166024830152516000938493169163e6a43905916044808301926020929190829003018186803b15801561271557600080fd5b505afa158015612729573d6000803e3d6000fd5b505050506040513d602081101561273f57600080fd5b5051600480546005546040805163e6a4390560e01b81526001600160a01b038b811695820195909552918416602483015251939450600093929091169163e6a4390591604480820192602092909190829003018186803b1580156127a257600080fd5b505afa1580156127b6573d6000803e3d6000fd5b505050506040513d60208110156127cc57600080fd5b5051600480546040805163e6a4390560e01b81526001600160a01b038c8116948201949094528a841660248201529051939450600093929091169163e6a4390591604480820192602092909190829003018186803b15801561282d57600080fd5b505afa158015612841573d6000803e3d6000fd5b505050506040513d602081101561285757600080fd5b5051905060606128668261243f565b15612c18576040805160028082526060808301845292602083019080388339019050509050898160008151811061289957fe5b60200260200101906001600160a01b031690816001600160a01b03168152505088816001815181106128c757fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b8152600481018d815260248201928352865160448301528651600096949094169463d06ca61f948f948994909260649091019185820191028083838c5b8381101561294557818101518382015260200161292d565b50505050905001935050505060006040518083038186803b15801561296957600080fd5b505afa15801561297d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156129a657600080fd5b81019080805160405193929190846401000000008211156129c657600080fd5b9083019060208201858111156129db57600080fd5b82518660208202830111640100000000821117156129f857600080fd5b82525081516020918201928201910280838360005b83811015612a25578181015183820152602001612a0d565b50505050905001604052505050600181518110612a3e57fe5b60200260200101519050612a5b6116f182611ca76127108c611720565b9050600360009054906101000a90046001600160a01b03166001600160a01b03166338ed17398a8385304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612b02578181015183820152602001612aea565b505050509050019650505050505050600060405180830381600087803b158015612b2b57600080fd5b505af1158015612b3f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612b6857600080fd5b8101908080516040519392919084640100000000821115612b8857600080fd5b908301906020820185811115612b9d57600080fd5b8251866020820283011164010000000082111715612bba57600080fd5b82525081516020918201928201910280838360005b83811015612be7578181015183820152602001612bcf565b50505050905001604052505050925082600181518110612c0357fe5b60200260200101519650505050505050612276565b612c218461243f565b8015612c315750612c318361243f565b15612ffb57604080516003808252608082019092526060916020820183803883390190505090508981600081518110612c6657fe5b6001600160a01b039283166020918202929092010152600554825191169082906001908110612c9157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508881600281518110612cbf57fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b8152600481018d815260248201928352865160448301528651600096949094169463d06ca61f948f948994909260649091019185820191028083838c5b83811015612d3d578181015183820152602001612d25565b50505050905001935050505060006040518083038186803b158015612d6157600080fd5b505afa158015612d75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612d9e57600080fd5b8101908080516040519392919084640100000000821115612dbe57600080fd5b908301906020820185811115612dd357600080fd5b8251866020820283011164010000000082111715612df057600080fd5b82525081516020918201928201910280838360005b83811015612e1d578181015183820152602001612e05565b50505050905001604052505050600281518110612e3657fe5b60200260200101519050612e536116f182611ca76127108c611720565b9050600360009054906101000a90046001600160a01b03166001600160a01b03166338ed17398a8385304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612efa578181015183820152602001612ee2565b505050509050019650505050505050600060405180830381600087803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612f6057600080fd5b8101908080516040519392919084640100000000821115612f8057600080fd5b908301906020820185811115612f9557600080fd5b8251866020820283011164010000000082111715612fb257600080fd5b82525081516020918201928201910280838360005b83811015612fdf578181015183820152602001612fc7565b50505050905001604052505050925082600281518110612c0357fe5b50600098975050505050505050565b600081836130595760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561267657818101518382015260200161265e565b50600083858161306557fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a265627a7a72315820c828ef351ea71a9bdb392664f45fa720b46c030433aee0a6353a91bccc5e37f264736f6c634300050c00320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f79cabc4caca5eca8ee6a36651a0ad5a2190f04e00000000000000000000000000000000000000000000000000000000000000c8
Deployed Bytecode
0x6080604052600436106101145760003560e01c8063715018a6116100a0578063c3a8fcb011610064578063c3a8fcb014610326578063e88c68141461033b578063ee857b6914610350578063f27cf32014610395578063f2fde38b146103d057610114565b8063715018a614610272578063849e25f4146102875780638da5cb5b146102ba5780638f32d59b146102cf578063b10e1dbc146102f857610114565b80633ccfd60b116100e75780633ccfd60b1461019b57806349c082cd146101b05780635487404a146101fe578063551196d5146102135780635de0398e1461024657610114565b80631385d24c1461011657806315b0d4961461012b5780631694505e146101555780632b68b9c614610186575b005b34801561012257600080fd5b50610114610403565b34801561013757600080fd5b506101146004803603602081101561014e57600080fd5b503561046b565b34801561016157600080fd5b5061016a610519565b604080516001600160a01b039092168252519081900360200190f35b34801561019257600080fd5b50610114610528565b3480156101a757600080fd5b50610114610598565b6101ec600480360360808110156101c657600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561062c565b60408051918252519081900360200190f35b34801561020a57600080fd5b506101ec610aba565b34801561021f57600080fd5b506101146004803603602081101561023657600080fd5b50356001600160a01b0316610ac0565b34801561025257600080fd5b5061025b610b95565b6040805161ffff9092168252519081900360200190f35b34801561027e57600080fd5b50610114610ba6565b34801561029357600080fd5b50610114600480360360208110156102aa57600080fd5b50356001600160a01b0316610c49565b3480156102c657600080fd5b5061016a610cbf565b3480156102db57600080fd5b506102e4610cd3565b604080519115158252519081900360200190f35b34801561030457600080fd5b506101146004803603602081101561031b57600080fd5b503561ffff16610cfc565b34801561033257600080fd5b5061016a610dbf565b34801561034757600080fd5b5061016a610dce565b61037c6004803603604081101561036657600080fd5b506001600160a01b038135169060200135610ddd565b6040805192835260208301919091528051918290030190f35b3480156103a157600080fd5b506102e4600480360360408110156103b857600080fd5b506001600160a01b03813581169160200135166110dd565b3480156103dc57600080fd5b50610114600480360360208110156103f357600080fd5b50356001600160a01b031661151c565b61040b610cd3565b61044a576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6000805460ff60a81b198116600160a81b9182900460ff1615909102179055565b610473610cd3565b6104b2576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6000811180156104c3575061271081105b610514576040805162461bcd60e51b815260206004820152601a60248201527f536c6970706167652056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b600255565b6003546001600160a01b031681565b610530610cd3565b61056f576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b600061058a61057c610cbf565b6001600160a01b031661156f565b9050806001600160a01b0316ff5b6105a0610cd3565b6105df576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b303160006105ee61057c610cbf565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610627573d6000803e3d6000fd5b505050565b6000805460ff16610684576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff16156106e1576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b836001600160a01b03811661073d576040805162461bcd60e51b815260206004820152601e60248201527f4572726f723a20496e76616c696420556e69706f6f6c20416464726573730000604482015290519081900360640190fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561077857600080fd5b505afa15801561078c573d6000803e3d6000fd5b505050506040513d60208110156107a257600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b1580156107ea57600080fd5b505afa1580156107fe573d6000803e3d6000fd5b505050506040513d602081101561081457600080fd5b5051905061082487333089611576565b600061083088886116d3565b6003549091506108549089906001600160a01b031661084f8a85611720565b611769565b60035460009081906001600160a01b031663baa2abde86866108768d88611720565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152929093166024830152604482015260016064820181905260848201523060a4820152603c420160c4820152815160e480830193928290030181600087803b1580156108e557600080fd5b505af11580156108f9573d6000803e3d6000fd5b505050506040513d604081101561090f57600080fd5b50805160209091015190925090506000881580159061092f575061271089105b61093b5760025461093d565b885b9050600061094b8d886110dd565b801561095c575061095c8d876110dd565b156109815761096d878e86856118d3565b905061097b868e85856118d3565b016109fb565b61098b8d886110dd565b156109c357600061099e878986866118d3565b90506109bb888f6109b5848963ffffffff61227e16565b866118d3565b9150506109fb565b6109cd8d876110dd565b156109fb5760006109e0888887866118d3565b90506109f7878f6109b5848863ffffffff61227e16565b9150505b60008111610a50576040805162461bcd60e51b815260206004820152601360248201527f4552523a20546f6b656e2065786368616e676500000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038d16610a9157604051339082156108fc029083906000818181858888f19350505050158015610a8b573d6000803e3d6000fd5b50610a9c565b610a9c8d33836122d8565b9750505050505050506000805460ff19166001179055949350505050565b60025481565b610ac8610cd3565b610b07576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610b5157600080fd5b505afa158015610b65573d6000803e3d6000fd5b505050506040513d6020811015610b7b57600080fd5b50519050610b9182610b8b610cbf565b836122d8565b5050565b600054600160b01b900461ffff1681565b610bae610cd3565b610bed576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b600080546040516101009091046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805474ffffffffffffffffffffffffffffffffffffffff0019169055565b610c51610cd3565b610c90576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60005461010090046001600160a01b031690565b6000805461010090046001600160a01b0316610ced61243b565b6001600160a01b031614905090565b610d04610cd3565b610d43576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b6127108161ffff1610610d9d576040805162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6000805461ffff909216600160b01b0261ffff60b01b19909216919091179055565b6001546001600160a01b031681565b6004546001600160a01b031681565b60008054819060ff16610e37576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff1615610e94576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b836001600160a01b038116610ef0576040805162461bcd60e51b815260206004820152601e60248201527f4572726f723a20496e76616c696420556e69706f6f6c20416464726573730000604482015290519081900360640190fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2b57600080fd5b505afa158015610f3f573d6000803e3d6000fd5b505050506040513d6020811015610f5557600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b158015610f9d57600080fd5b505afa158015610fb1573d6000803e3d6000fd5b505050506040513d6020811015610fc757600080fd5b50519050610fd787333089611576565b6000610fe388886116d3565b6003549091506110029089906001600160a01b031661084f8a85611720565b6003546001600160a01b031663baa2abde848461101f8b86611720565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152929093166024830152604482015260016064820181905260848201523360a4820152603c420160c4820152815160e480830193928290030181600087803b15801561108e57600080fd5b505af11580156110a2573d6000803e3d6000fd5b505050506040513d60408110156110b857600080fd5b5080516020909101516000805460ff1916600117905590999098509650505050505050565b60006001600160a01b0383161515806110fe57506001600160a01b03821615155b61114f576040805162461bcd60e51b815260206004820152601760248201527f496e76616c69642045786368616e67652076616c756573000000000000000000604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b0316141561117157506001611516565b6001600160a01b038316158061119457506005546001600160a01b038481169116145b15611272576005546001600160a01b03838116911614806111bc57506001600160a01b038216155b156111c957506001611516565b600480546005546040805163e6a4390560e01b81526001600160a01b03878116958201959095529184166024830152516000939092169163e6a4390591604480820192602092909190829003018186803b15801561122657600080fd5b505afa15801561123a573d6000803e3d6000fd5b505050506040513d602081101561125057600080fd5b5051905061125d8161243f565b1561126c576001915050611516565b50611512565b6001600160a01b038216158061129557506005546001600160a01b038381169116145b15611327576005546001600160a01b03848116911614806112bd57506001600160a01b038316155b156112ca57506001611516565b600480546005546040805163e6a4390560e01b81526001600160a01b03888116958201959095529184166024830152516000939092169163e6a4390591604480820192602092909190829003018186803b15801561122657600080fd5b600480546005546040805163e6a4390560e01b81526001600160a01b03888116958201959095529184166024830152516000939092169163e6a4390591604480820192602092909190829003018186803b15801561138457600080fd5b505afa158015611398573d6000803e3d6000fd5b505050506040513d60208110156113ae57600080fd5b5051600480546005546040805163e6a4390560e01b81526001600160a01b0389811695820195909552918416602483015251939450600093929091169163e6a4390591604480820192602092909190829003018186803b15801561141157600080fd5b505afa158015611425573d6000803e3d6000fd5b505050506040513d602081101561143b57600080fd5b5051600480546040805163e6a4390560e01b81526001600160a01b038a81169482019490945288841660248201529051939450600093929091169163e6a4390591604480820192602092909190829003018186803b15801561149c57600080fd5b505afa1580156114b0573d6000803e3d6000fd5b505050506040513d60208110156114c657600080fd5b505190506114d38361243f565b80156114e357506114e38261243f565b156114f45760019350505050611516565b6114fd8161243f565b1561150e5760019350505050611516565b5050505b5060005b92915050565b611524610cd3565b611563576040805162461bcd60e51b815260206004820181905260248201526000805160206130b7833981519152604482015290519081900360640190fd5b61156c816124cf565b50565b805b919050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106115fb5780518252601f1990920191602091820191016115dc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461165d576040519150601f19603f3d011682016040523d82523d6000602084013e611662565b606091505b5091509150818015611690575080511580611690575080806020019051602081101561168d57600080fd5b50515b6116cb5760405162461bcd60e51b81526004018080602001828103825260248152602001806130d76024913960400191505060405180910390fd5b505050505050565b600080546116f9906116f1908490600160b01b900461ffff16612587565b6127106125e0565b90508061170857506000611516565b6001546115169084906001600160a01b0316836122d8565b600061176283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612622565b9392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106117e65780518252601f1990920191602091820191016117c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611848576040519150601f19603f3d011682016040523d82523d6000602084013e61184d565b606091505b509150915081801561187b57508051158061187b575080806020019051602081101561187857600080fd5b50515b6118cc576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fd5b5050505050565b60006001600160a01b0385161515806118f457506001600160a01b03841615155b611945576040805162461bcd60e51b815260206004820152601760248201527f496e76616c69642045786368616e67652076616c756573000000000000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03161415611966575081612276565b61197085856110dd565b6119c1576040805162461bcd60e51b815260206004820152601360248201527f43616e6e6f742062652065786368616e67656400000000000000000000000000604482015290519081900360640190fd5b60008311611a16576040805162461bcd60e51b815260206004820152600e60248201527f496e76616c696420616d6f756e74000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038516611e61576005546001600160a01b0385811691161415611aab57600560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a8a57600080fd5b505af1158015611a9e573d6000803e3d6000fd5b5050505050829050612276565b6040805160028082526060808301845292602083019080388339505060055482519293506001600160a01b031691839150600090611ae557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110611b1357fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b81526004810189815260248201928352865160448301528651600096949094169463d06ca61f948b948994909260649091019185820191028083838c5b83811015611b91578181015183820152602001611b79565b50505050905001935050505060006040518083038186803b158015611bb557600080fd5b505afa158015611bc9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611bf257600080fd5b8101908080516040519392919084640100000000821115611c1257600080fd5b908301906020820185811115611c2757600080fd5b8251866020820283011164010000000082111715611c4457600080fd5b82525081516020918201928201910280838360005b83811015611c71578181015183820152602001611c59565b50505050905001604052505050600181518110611c8a57fe5b60200260200101519050611cac6116f182611ca761271088611720565b612587565b90506060600360009054906101000a90046001600160a01b03166001600160a01b0316637ff36ab5878486304260b4016040518663ffffffff1660e01b81526004018085815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611d4f578181015183820152602001611d37565b50505050905001955050505050506000604051808303818588803b158015611d7657600080fd5b505af1158015611d8a573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526020811015611db457600080fd5b8101908080516040519392919084640100000000821115611dd457600080fd5b908301906020820185811115611de957600080fd5b8251866020820283011164010000000082111715611e0657600080fd5b82525081516020918201928201910280838360005b83811015611e33578181015183820152602001611e1b565b50505050905001604052505050905080600181518110611e4f57fe5b60200260200101519350505050612276565b6001600160a01b038416612206576005546001600160a01b0386811691161415611ef25760055460408051632e1a7d4d60e01b81526004810186905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015611ed257600080fd5b505af1158015611ee6573d6000803e3d6000fd5b50505050829050612276565b60408051600280825260608083018452926020830190803883395050600354919250611f2a918891506001600160a01b031686611769565b8581600081518110611f3857fe5b6001600160a01b039283166020918202929092010152600554825191169082906001908110611f6357fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b81526004810189815260248201928352865160448301528651600096949094169463d06ca61f948b948994909260649091019185820191028083838c5b83811015611fe1578181015183820152602001611fc9565b50505050905001935050505060006040518083038186803b15801561200557600080fd5b505afa158015612019573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561204257600080fd5b810190808051604051939291908464010000000082111561206257600080fd5b90830190602082018581111561207757600080fd5b825186602082028301116401000000008211171561209457600080fd5b82525081516020918201928201910280838360005b838110156120c15781810151838201526020016120a9565b505050509050016040525050506001815181106120da57fe5b602002602001015190506120f76116f182611ca761271088611720565b90506060600360009054906101000a90046001600160a01b03166001600160a01b03166318cbafe5878486304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156121a0578181015183820152602001612188565b505050509050019650505050505050600060405180830381600087803b1580156121c957600080fd5b505af11580156121dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611db457600080fd5b60035461221e9086906001600160a01b031685611769565b600061222c868686866126b9565b905060008111612273576040805162461bcd60e51b815260206004820152600d60248201526c04572726f7220696e207377617609c1b604482015290519081900360640190fd5b90505b949350505050565b600082820183811015611762576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106123555780518252601f199092019160209182019101612336565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123b7576040519150601f19603f3d011682016040523d82523d6000602084013e6123bc565b606091505b50915091508180156123ea5750805115806123ea57508080602001905160208110156123e757600080fd5b50515b6118cc576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b3390565b60006001600160a01b03821615611571576000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561248b57600080fd5b505afa15801561249f573d6000803e3d6000fd5b505050506040513d60208110156124b557600080fd5b5051905080156124c9576001915050611571565b50919050565b6001600160a01b0381166125145760405162461bcd60e51b81526004018080602001828103825260268152602001806130706026913960400191505060405180910390fd5b600080546040516001600160a01b038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b60008261259657506000611516565b828202828482816125a357fe5b04146117625760405162461bcd60e51b81526004018080602001828103825260218152602001806130966021913960400191505060405180910390fd5b600061176283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061300a565b600081848411156126b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561267657818101518382015260200161265e565b50505050905090810190601f1680156126a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600480546005546040805163e6a4390560e01b81526001600160a01b03898116958201959095529184166024830152516000938493169163e6a43905916044808301926020929190829003018186803b15801561271557600080fd5b505afa158015612729573d6000803e3d6000fd5b505050506040513d602081101561273f57600080fd5b5051600480546005546040805163e6a4390560e01b81526001600160a01b038b811695820195909552918416602483015251939450600093929091169163e6a4390591604480820192602092909190829003018186803b1580156127a257600080fd5b505afa1580156127b6573d6000803e3d6000fd5b505050506040513d60208110156127cc57600080fd5b5051600480546040805163e6a4390560e01b81526001600160a01b038c8116948201949094528a841660248201529051939450600093929091169163e6a4390591604480820192602092909190829003018186803b15801561282d57600080fd5b505afa158015612841573d6000803e3d6000fd5b505050506040513d602081101561285757600080fd5b5051905060606128668261243f565b15612c18576040805160028082526060808301845292602083019080388339019050509050898160008151811061289957fe5b60200260200101906001600160a01b031690816001600160a01b03168152505088816001815181106128c757fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b8152600481018d815260248201928352865160448301528651600096949094169463d06ca61f948f948994909260649091019185820191028083838c5b8381101561294557818101518382015260200161292d565b50505050905001935050505060006040518083038186803b15801561296957600080fd5b505afa15801561297d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156129a657600080fd5b81019080805160405193929190846401000000008211156129c657600080fd5b9083019060208201858111156129db57600080fd5b82518660208202830111640100000000821117156129f857600080fd5b82525081516020918201928201910280838360005b83811015612a25578181015183820152602001612a0d565b50505050905001604052505050600181518110612a3e57fe5b60200260200101519050612a5b6116f182611ca76127108c611720565b9050600360009054906101000a90046001600160a01b03166001600160a01b03166338ed17398a8385304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612b02578181015183820152602001612aea565b505050509050019650505050505050600060405180830381600087803b158015612b2b57600080fd5b505af1158015612b3f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612b6857600080fd5b8101908080516040519392919084640100000000821115612b8857600080fd5b908301906020820185811115612b9d57600080fd5b8251866020820283011164010000000082111715612bba57600080fd5b82525081516020918201928201910280838360005b83811015612be7578181015183820152602001612bcf565b50505050905001604052505050925082600181518110612c0357fe5b60200260200101519650505050505050612276565b612c218461243f565b8015612c315750612c318361243f565b15612ffb57604080516003808252608082019092526060916020820183803883390190505090508981600081518110612c6657fe5b6001600160a01b039283166020918202929092010152600554825191169082906001908110612c9157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508881600281518110612cbf57fe5b6001600160a01b039283166020918202929092018101919091526003546040805163d06ca61f60e01b8152600481018d815260248201928352865160448301528651600096949094169463d06ca61f948f948994909260649091019185820191028083838c5b83811015612d3d578181015183820152602001612d25565b50505050905001935050505060006040518083038186803b158015612d6157600080fd5b505afa158015612d75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612d9e57600080fd5b8101908080516040519392919084640100000000821115612dbe57600080fd5b908301906020820185811115612dd357600080fd5b8251866020820283011164010000000082111715612df057600080fd5b82525081516020918201928201910280838360005b83811015612e1d578181015183820152602001612e05565b50505050905001604052505050600281518110612e3657fe5b60200260200101519050612e536116f182611ca76127108c611720565b9050600360009054906101000a90046001600160a01b03166001600160a01b03166338ed17398a8385304260b4016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612efa578181015183820152602001612ee2565b505050509050019650505050505050600060405180830381600087803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612f6057600080fd5b8101908080516040519392919084640100000000821115612f8057600080fd5b908301906020820185811115612f9557600080fd5b8251866020820283011164010000000082111715612fb257600080fd5b82525081516020918201928201910280838360005b83811015612fdf578181015183820152602001612fc7565b50505050905001604052505050925082600281518110612c0357fe5b50600098975050505050505050565b600081836130595760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561267657818101518382015260200161265e565b50600083858161306557fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a265627a7a72315820c828ef351ea71a9bdb392664f45fa720b46c030433aee0a6353a91bccc5e37f264736f6c634300050c0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f79cabc4caca5eca8ee6a36651a0ad5a2190f04e00000000000000000000000000000000000000000000000000000000000000c8
-----Decoded View---------------
Arg [0] : _goodwill (uint16): 0
Arg [1] : _dzgoodwillAddress (address): 0xf79Cabc4cacA5ECa8eE6A36651A0Ad5A2190F04E
Arg [2] : _slippage (uint256): 200
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 000000000000000000000000f79cabc4caca5eca8ee6a36651a0ad5a2190f04e
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c8
Deployed Bytecode Sourcemap
30913:15177:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45534:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45534:86:0;;;:::i;44609:239::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;44609:239:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44609:239:0;;:::i;31181:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31181:122:0;;;:::i;:::-;;;;-1:-1:-1;;;;;31181:122:0;;;;;;;;;;;;;;45924:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45924:125:0;;;:::i;45690:195::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45690:195:0;;;:::i;33828:3167::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;33828:3167:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;31142:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31142:30:0;;;:::i;45278:216::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45278:216:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45278:216:0;-1:-1:-1;;;;;45278:216:0;;:::i;31074:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31074:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8473:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8473:140:0;;;:::i;45102:168::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;45102:168:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45102:168:0;-1:-1:-1;;;;;45102:168:0;;:::i;7662:79::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7662:79:0;;;:::i;8028:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8028:94:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;44856:238;;8:9:-1;5:2;;;30:1;27;20:12;5:2;44856:238:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44856:238:0;;;;:::i;31103:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31103:32:0;;;:::i;31312:128::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31312:128:0;;;:::i;32242:1210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;32242:1210:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;41831:1677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41831:1677:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;41831:1677:0;;;;;;;;;;:::i;8768:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8768:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8768:109:0;-1:-1:-1;;;;;8768:109:0;;:::i;45534:86::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;45605:7;;;-1:-1:-1;;;;45594:18:0;;-1:-1:-1;;;45605:7:0;;;;;;45604:8;45594:18;;;;;;45534:86::o;44609:239::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;44720:1;44705:12;:16;:40;;;;;44740:5;44725:12;:20;44705:40;44683:116;;;;;-1:-1:-1;;;44683:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;44810:15;:30;44609:239::o;31181:122::-;;;-1:-1:-1;;;;;31181:122:0;;:::o;45924:125::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;45972:19;45994;:7;:5;:7::i;:::-;-1:-1:-1;;;;;45994:17:0;;:19::i;:::-;45972:41;;46037:3;-1:-1:-1;;;;;46024:17:0;;45690:195;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;45772:4;45764:21;45738:23;45818:19;:7;:5;:7::i;:19::-;45848:29;;45796:41;;-1:-1:-1;;;;;;45848:12:0;;;:29;;;;;45861:15;;45848:29;;;;45861:15;45848:12;:29;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45848:29:0;7931:1;;45690:195::o;33828:3167::-;34041:7;17219:11;;;;17211:55;;;;;-1:-1:-1;;;17211:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17358:5;17344:19;;-1:-1:-1;;17344:19:0;;;;;-1:-1:-1;;;31853:7:0;;17344:19;31853:7;31849:102;;;31877:28;;;-1:-1:-1;;;31877:28:0;;;;;;;;;;;;-1:-1:-1;;;31877:28:0;;;;;;;;;;;;;;31849:102;34098:19;-1:-1:-1;;;;;34139:27:0;;34131:70;;;;;-1:-1:-1;;;34131:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;34241:14;34258:4;-1:-1:-1;;;;;34258:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34258:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34258:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34258:13:0;34299;;;-1:-1:-1;;;34299:13:0;;;;34258;;-1:-1:-1;34282:14:0;;-1:-1:-1;;;;;34299:11:0;;;;;:13;;;;;34258;;34299;;;;;;;:11;:13;;;5:2:-1;;;;30:1;27;20:12;5:2;34299:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34299:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34299:13:0;;-1:-1:-1;34325:155:0;34371:19;34405:10;34438:4;34458:11;34325:31;:155::i;:::-;34493:23;34519:88;34551:19;34585:11;34519:17;:88::i;:::-;34703:15;;34493:114;;-1:-1:-1;34620:167:0;;34661:19;;-1:-1:-1;;;;;34703:15:0;34734:42;34747:11;34493:114;34734:12;:42::i;:::-;34620:26;:167::i;:::-;34837:15;;34801;;;;-1:-1:-1;;;;;34837:15:0;:31;34883:6;34904;34925:42;34938:11;34951:15;34925:12;:42::i;:::-;34837:224;;;-1:-1:-1;;;;;;34837:224:0;;;;;;;-1:-1:-1;;;;;34837:224:0;;;;;;;;;;;;;;;;;;;34982:1;34837:224;;;;;;;;;;35022:4;34837:224;;;;35048:2;35042:3;:8;34837:224;;;;;;;;;;;;;;;;;-1:-1:-1;34837:224:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;34837:224:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34837:224:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34837:224:0;;;;;;;;;-1:-1:-1;34837:224:0;-1:-1:-1;35074:20:0;35097:12;;;;;:32;;;35124:5;35113:8;:16;35097:32;:87;;35169:15;;35097:87;;;35145:8;35097:87;35074:110;;35197:19;35245:46;35259:23;35284:6;35245:13;:46::i;:::-;:109;;;;;35308:46;35322:23;35347:6;35308:13;:46::i;:::-;35227:1380;;;35395:149;35424:6;35449:23;35491:7;35517:12;35395:10;:149::i;:::-;35381:163;;35574:149;35603:6;35628:23;35670:7;35696:12;35574:10;:149::i;:::-;35559:164;35227:1380;;;35745:46;35759:23;35784:6;35745:13;:46::i;:::-;35741:866;;;35808:20;35831:132;35860:6;35885;35910:7;35936:12;35831:10;:132::i;:::-;35808:155;-1:-1:-1;35992:167:0;36021:6;36046:23;36088:25;35808:155;36105:7;36088:25;:16;:25;:::i;:::-;36132:12;35992:10;:167::i;:::-;35978:181;;35741:866;;;;36181:46;36195:23;36220:6;36181:13;:46::i;:::-;36177:430;;;36244:20;36267:132;36296:6;36321;36346:7;36372:12;36267:10;:132::i;:::-;36244:155;-1:-1:-1;36428:167:0;36457:6;36482:23;36524:25;36244:155;36541:7;36524:25;:16;:25;:::i;36428:167::-;36414:181;;36177:430;;36641:1;36627:11;:15;36619:47;;;;;-1:-1:-1;;;36619:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36683:37:0;;36679:278;;36737:32;;:10;;:32;;;;;36757:11;;36737:32;;;;36757:11;36737:10;:32;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36737:32:0;36679:278;;;36802:143;36848:23;36890:10;36919:11;36802:27;:143::i;:::-;36976:11;-1:-1:-1;;;;;;;;17524:11:0;:18;;-1:-1:-1;;17524:18:0;17538:4;17524:18;;;33828:3167;;-1:-1:-1;;;;33828:3167:0:o;31142:30::-;;;;:::o;45278:216::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;45372:38;;;-1:-1:-1;;;45372:38:0;;45404:4;45372:38;;;;;;45358:11;;-1:-1:-1;;;;;45372:23:0;;;;;:38;;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;45372:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45372:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;45372:38:0;;-1:-1:-1;45421:65:0;45457:13;45473:7;:5;:7::i;:::-;45482:3;45421:27;:65::i;:::-;7931:1;45278:216;:::o;31074:22::-;;;-1:-1:-1;;;31074:22:0;;;;;:::o;8473:140::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;8572:1;8556:6;;8535:40;;8556:6;;;;-1:-1:-1;;;;;8556:6:0;;8535:40;;8572:1;;8535:40;8603:1;8586:19;;-1:-1:-1;;8586:19:0;;;8473:140::o;45102:168::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;45220:17;:42;;-1:-1:-1;;45220:42:0;-1:-1:-1;;;;;45220:42:0;;;;;;;;;;45102:168::o;7662:79::-;7700:7;7727:6;;;;-1:-1:-1;;;;;7727:6:0;;7662:79::o;8028:94::-;8068:4;8108:6;;;;;-1:-1:-1;;;;;8108:6:0;8092:12;:10;:12::i;:::-;-1:-1:-1;;;;;8092:22:0;;8085:29;;8028:94;:::o;44856:238::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;44992:5;44976:13;:21;;;44932:119;;;;;-1:-1:-1;;;44932:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;45062:8;:24;;;;;;-1:-1:-1;;;45062:24:0;-1:-1:-1;;;;45062:24:0;;;;;;;;;44856:238::o;31103:32::-;;;-1:-1:-1;;;;;31103:32:0;;:::o;31312:128::-;;;-1:-1:-1;;;;;31312:128:0;;:::o;32242:1210::-;32416:15;17219:11;;32416:15;;17219:11;;17211:55;;;;;-1:-1:-1;;;17211:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17358:5;17344:19;;-1:-1:-1;;17344:19:0;;;;;-1:-1:-1;;;31853:7:0;;17344:19;31853:7;31849:102;;;31877:28;;;-1:-1:-1;;;31877:28:0;;;;;;;;;;;;-1:-1:-1;;;31877:28:0;;;;;;;;;;;;;;31849:102;32503:19;-1:-1:-1;;;;;32544:27:0;;32536:70;;;;;-1:-1:-1;;;32536:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32643:14;32660:4;-1:-1:-1;;;;;32660:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32660:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32660:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32660:13:0;32701;;;-1:-1:-1;;;32701:13:0;;;;32660;;-1:-1:-1;32684:14:0;;-1:-1:-1;;;;;32701:11:0;;;;;:13;;;;;32660;;32701;;;;;;;:11;:13;;;5:2:-1;;;;30:1;27;20:12;5:2;32701:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32701:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32701:13:0;;-1:-1:-1;32727:155:0;32773:19;32807:10;32840:4;32860:11;32727:31;:155::i;:::-;32895:23;32921:88;32953:19;32987:11;32921:17;:88::i;:::-;33105:15;;32895:114;;-1:-1:-1;33022:167:0;;33063:19;;-1:-1:-1;;;;;33105:15:0;33136:42;33149:11;32895:114;33136:12;:42::i;33022:167::-;33223:15;;-1:-1:-1;;;;;33223:15:0;:31;33269:6;33290;33311:42;33324:11;33337:15;33311:12;:42::i;:::-;33223:221;;;-1:-1:-1;;;;;;33223:221:0;;;;;;;-1:-1:-1;;;;;33223:221:0;;;;;;;;;;;;;;;;;;;33368:1;33223:221;;;;;;;;;;33400:10;33223:221;;;;33431:2;33425:3;:8;33223:221;;;;;;;;;;;;;;;;;-1:-1:-1;33223:221:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;33223:221:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33223:221:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33223:221:0;;;;;;;17524:11;:18;;-1:-1:-1;;17524:18:0;17538:4;17524:18;;;33223:221;;;;-1:-1:-1;33223:221:0;-1:-1:-1;;;;;;;32242:1210:0:o;41831:1677::-;41940:4;-1:-1:-1;;;;;41984:24:0;;;;;:50;;-1:-1:-1;;;;;;42012:22:0;;;;41984:50;41962:123;;;;;-1:-1:-1;;;41962:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;42116:8;-1:-1:-1;;;;;42102:22:0;:10;-1:-1:-1;;;;;42102:22:0;;42098:39;;;-1:-1:-1;42133:4:0;42126:11;;42098:39;-1:-1:-1;;;;;42154:24:0;;;;:58;;-1:-1:-1;42196:16:0;;-1:-1:-1;;;;;42182:30:0;;;42196:16;;42182:30;42154:58;42150:1328;;;42245:16;;-1:-1:-1;;;;;42233:28:0;;;42245:16;;42233:28;;:54;;-1:-1:-1;;;;;;42265:22:0;;;42233:54;42229:88;;;-1:-1:-1;42313:4:0;42306:11;;42229:88;42387:23;;;42429:16;;42387:59;;;-1:-1:-1;;;42387:59:0;;-1:-1:-1;;;;;42387:59:0;;;;;;;;;;42429:16;;;42387:59;;;;;42332:19;;42387:23;;;;:31;;:59;;;;;;;;;;;;;;;:23;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;42387:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42387:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;42387:59:0;;-1:-1:-1;42480:18:0;42387:59;42480:12;:18::i;:::-;42476:35;;;42507:4;42500:11;;;;;42476:35;42150:1328;;;;-1:-1:-1;;;;;42533:22:0;;;;:54;;-1:-1:-1;42571:16:0;;-1:-1:-1;;;;;42559:28:0;;;42571:16;;42559:28;42533:54;42529:949;;;42622:16;;-1:-1:-1;;;;;42608:30:0;;;42622:16;;42608:30;;:58;;-1:-1:-1;;;;;;42642:24:0;;;42608:58;42604:92;;;-1:-1:-1;42692:4:0;42685:11;;42604:92;42766:23;;;42810:16;;42766:61;;;-1:-1:-1;;;42766:61:0;;-1:-1:-1;;;;;42766:61:0;;;;;;;;;;42810:16;;;42766:61;;;;;42711:19;;42766:23;;;;:31;;:61;;;;;;;;;;;;;;;:23;:61;;;5:2:-1;;;;30:1;27;20:12;42529:949:0;42981:23;;;43025:16;;42981:61;;;-1:-1:-1;;;42981:61:0;;-1:-1:-1;;;;;42981:61:0;;;;;;;;;;43025:16;;;42981:61;;;;;42925:20;;42981:23;;;;:31;;:61;;;;;;;;;;;;;;;:23;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;42981:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42981:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;42981:61:0;43128:23;;;43170:16;;43128:59;;;-1:-1:-1;;;43128:59:0;;-1:-1:-1;;;;;43128:59:0;;;;;;;;;;43170:16;;;43128:59;;;;;42981:61;;-1:-1:-1;43072:20:0;;43128:23;;;;;:31;;:59;;;;;42981:61;;43128:59;;;;;;;;:23;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;43128:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43128:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43128:59:0;43273:23;;;:53;;;-1:-1:-1;;;43273:53:0;;-1:-1:-1;;;;;43273:53:0;;;;;;;;;;;;;;;;;;;43128:59;;-1:-1:-1;43217:20:0;;43273:23;;;;;:31;;:53;;;;;43128:59;;43273:53;;;;;;;;:23;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;43273:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43273:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43273:53:0;;-1:-1:-1;43360:19:0;43373:5;43360:12;:19::i;:::-;:42;;;;;43383:19;43396:5;43383:12;:19::i;:::-;43356:59;;;43411:4;43404:11;;;;;;;43356:59;43434:19;43447:5;43434:12;:19::i;:::-;43430:36;;;43462:4;43455:11;;;;;;;43430:36;42529:949;;;;-1:-1:-1;43495:5:0;41831:1677;;;;;:::o;8768:109::-;7874:9;:7;:9::i;:::-;7866:54;;;;;-1:-1:-1;;;7866:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;7866:54:0;;;;;;;;;;;;;;;8841:28;8860:8;8841:18;:28::i;:::-;8768:109;:::o;13698:127::-;13808:7;13698:127;;;;:::o;28112:509::-;28397:51;;;-1:-1:-1;;;;;28397:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;28397:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;28372:87:0;;;;28337:12;;28351:17;;28372:10;;;;28397:51;28372:87;;;25:18:-1;28372:87:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;28372:87:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;28336:123:0;;;;28492:7;:57;;;;-1:-1:-1;28504:11:0;;:16;;:44;;;28535:4;28524:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28524:24:0;28504:44;28470:143;;;;-1:-1:-1;;;28470:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28112:509;;;;;;:::o;44100:501::-;44223:23;44331:8;;44277:94;;44304:36;;44317:12;;-1:-1:-1;;;44331:8:0;;;;44304:12;:36::i;:::-;44355:5;44277:12;:94::i;:::-;44259:112;-1:-1:-1;44388:20:0;44384:61;;-1:-1:-1;44432:1:0;44425:8;;44384:61;44535:17;;44457:136;;44499:21;;-1:-1:-1;;;;;44535:17:0;44567:15;44457:27;:136::i;1369:::-;1427:7;1454:43;1458:1;1461;1454:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1447:50;1369:136;-1:-1:-1;;;1369:136:0:o;27181:456::-;27425:45;;;-1:-1:-1;;;;;27425:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;27425:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;27400:81:0;;;;27365:12;;27379:17;;27400:10;;;;27425:45;27400:81;;;25:18:-1;27400:81:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;27400:81:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27364:117:0;;;;27514:7;:57;;;;-1:-1:-1;27526:11:0;;:16;;:44;;;27557:4;27546:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27546:24:0;27526:44;27492:137;;;;;-1:-1:-1;;;27492:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27181:456;;;;;:::o;37095:2694::-;37248:7;-1:-1:-1;;;;;37290:24:0;;;;;:50;;-1:-1:-1;;;;;;37318:22:0;;;;37290:50;37268:123;;;;;-1:-1:-1;;;37268:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;37420:8;-1:-1:-1;;;;;37406:22:0;:10;-1:-1:-1;;;;;37406:22:0;;37402:41;;;-1:-1:-1;37437:6:0;37430:13;;37402:41;37464:35;37478:10;37490:8;37464:13;:35::i;:::-;37456:67;;;;;-1:-1:-1;;;37456:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;37551:1;37542:6;:10;37534:37;;;;;-1:-1:-1;;;37534:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37588:24:0;;37584:2198;;37645:16;;-1:-1:-1;;;;;37633:28:0;;;37645:16;;37633:28;37629:148;;;37688:16;;;;;;;;;-1:-1:-1;;;;;37688:16:0;-1:-1:-1;;;;;37682:31:0;;37720:6;37682:47;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37682:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37682:47:0;;;;;37755:6;37748:13;;;;37629:148;37815:16;;;37829:1;37815:16;;;37791:21;37815:16;;;;;37791:21;37815:16;;;;;105:10:-1;37815:16:0;88:34:-1;-1:-1;;37856:16:0;;37846:7;;;;-1:-1:-1;;;;;;37856:16:0;;37846:7;;-1:-1:-1;37856:16:0;;37846:7;;;;;;;;;:26;-1:-1:-1;;;;;37846:26:0;;;-1:-1:-1;;;;;37846:26:0;;;;;37897:8;37887:4;37892:1;37887:7;;;;;;;;-1:-1:-1;;;;;37887:18:0;;;:7;;;;;;;;;;:18;;;;37940:15;;:43;;;-1:-1:-1;;;37940:43:0;;;;;;;;;;;;;;;;;;;;;;37920:17;;37940:15;;;;;:29;;37970:6;;37978:4;;37940:43;;;;;;;;;;;;;;;37920:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37940:43:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37940:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37940:43:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;37940:43:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;37940:43:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;37940:43:0;;421:4:-1;412:14;;;;37940:43:0;;;;;412:14:-1;37940:43:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37940:43:0;;;;;;;;;;;37984:1;37940:46;;;;;;;;;;;;;;37920:66;;38013:124;38044:54;38057:9;38068:29;38081:5;38088:8;38068:12;:29::i;:::-;38044:12;:54::i;38013:124::-;38001:136;;38152:24;38179:15;;;;;;;;;-1:-1:-1;;;;;38179:15:0;-1:-1:-1;;;;;38179:55:0;;38259:6;38267:9;38278:4;38292;38299:3;38305;38299:9;38179:130;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38179:130:0;-1:-1:-1;;;;;38179:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;38179:130:0;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38179:130:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;38179:130:0;;;;;;;39:16:-1;36:1;17:17;2:54;101:4;38179:130:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;38179:130:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;38179:130:0;;421:4:-1;412:14;;;;38179:130:0;;;;;412:14:-1;38179:130:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;38179:130:0;;;;;;;;;;;38152:157;;38331:7;38339:1;38331:10;;;;;;;;;;;;;;38324:17;;;;;;;37584:2198;-1:-1:-1;;;;;38363:22:0;;38359:1423;;38420:16;;-1:-1:-1;;;;;38406:30:0;;;38420:16;;38406:30;38402:143;;;38463:16;;38457:40;;;-1:-1:-1;;;38457:40:0;;;;;;;;;;-1:-1:-1;;;;;38463:16:0;;;;38457:32;;:40;;;;;38463:16;;38457:40;;;;;;;;38463:16;;38457:40;;;5:2:-1;;;;30:1;27;20:12;5:2;38457:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;38457:40:0;;;;38523:6;38516:13;;;;38402:143;38583:16;;;38597:1;38583:16;;;38559:21;38583:16;;;;;38559:21;38583:16;;;;;105:10:-1;38583:16:0;88:34:-1;-1:-1;;38696:15:0;;38559:40;;-1:-1:-1;38614:138:0;;38659:10;;-1:-1:-1;;;;;;38696:15:0;38731:6;38614:26;:138::i;:::-;38777:10;38767:4;38772:1;38767:7;;;;;;;;-1:-1:-1;;;;;38767:20:0;;;:7;;;;;;;;;:20;38812:16;;38802:7;;38812:16;;;38802:4;;38812:16;;38802:7;;;;;;-1:-1:-1;;;;;38802:26:0;;;:7;;;;;;;;;;:26;;;;38863:15;;:43;;;-1:-1:-1;;;38863:43:0;;;;;;;;;;;;;;;;;;;;;;38843:17;;38863:15;;;;;:29;;38893:6;;38901:4;;38863:43;;;;;;;;;;;;;;;38843:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;38863:43:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38863:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;38863:43:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;38863:43:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;38863:43:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;38863:43:0;;421:4:-1;412:14;;;;38863:43:0;;;;;412:14:-1;38863:43:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;38863:43:0;;;;;;;;;;;38907:1;38863:46;;;;;;;;;;;;;;38843:66;;38936:124;38967:54;38980:9;38991:29;39004:5;39011:8;38991:12;:29::i;38936:124::-;38924:136;;39075:24;39102:15;;;;;;;;;-1:-1:-1;;;;;39102:15:0;-1:-1:-1;;;;;39102:37:0;;39158:6;39183:9;39211:4;39242;39266:3;39272;39266:9;39102:188;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39102:188:0;-1:-1:-1;;;;;39102:188:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;39102:188:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;39102:188:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;39102:188:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;39102:188:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;38359:1423:0;39437:15;;39355:138;;39400:10;;-1:-1:-1;;;;;39437:15:0;39472:6;39355:26;:138::i;:::-;39508:22;39533:142;39571:10;39600:8;39627:6;39652:8;39533:19;:142::i;:::-;39508:167;;39715:1;39698:14;:18;39690:44;;;;;-1:-1:-1;;;39690:44:0;;;;;;;;;;;;-1:-1:-1;;;39690:44:0;;;;;;;;;;;;;;;39756:14;-1:-1:-1;38359:1423:0;37095:2694;;;;;;:::o;913:181::-;971:7;1003:5;;;1027:6;;;;1019:46;;;;;-1:-1:-1;;;1019:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;27645:459;27891:45;;;-1:-1:-1;;;;;27891:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;27891:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;27866:81:0;;;;27831:12;;27845:17;;27866:10;;;;27891:45;27866:81;;;25:18:-1;27866:81:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;27866:81:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27830:117:0;;;;27980:7;:57;;;;-1:-1:-1;27992:11:0;;:16;;:44;;;28023:4;28012:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28012:24:0;27992:44;27958:138;;;;;-1:-1:-1;;;27958:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;6368:98;6448:10;6368:98;:::o;43582:237::-;43648:4;-1:-1:-1;;;;;43669:27:0;;;43665:147;;43713:19;43735:4;-1:-1:-1;;;;;43735:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43735:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43735:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;43735:18:0;;-1:-1:-1;43772:15:0;;43768:32;;43796:4;43789:11;;;;;43768:32;43665:147;43582:237;;;:::o;8983:229::-;-1:-1:-1;;;;;9057:22:0;;9049:73;;;;-1:-1:-1;;;9049:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9159:6;;;9138:38;;-1:-1:-1;;;;;9138:38:0;;;;9159:6;;;;;;9138:38;;;9187:6;:17;;-1:-1:-1;;;;;9187:17:0;;;;;-1:-1:-1;;9187:17:0;;;;;;;;;8983:229::o;2285:471::-;2343:7;2588:6;2584:47;;-1:-1:-1;2618:1:0;2611:8;;2584:47;2655:5;;;2659:1;2655;:5;:1;2679:5;;;;;:10;2671:56;;;;-1:-1:-1;;;2671:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3224:132;3282:7;3309:39;3313:1;3316;3309:39;;;;;;;;;;;;;;;;;:3;:39::i;1842:192::-;1928:7;1964:12;1956:6;;;;1948:29;;;;-1:-1:-1;;;1948:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1948:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2000:5:0;;;1842:192::o;39831:1992::-;40065:23;;;40109:16;;40065:61;;;-1:-1:-1;;;40065:61:0;;-1:-1:-1;;;;;40065:61:0;;;;;;;;;;40109:16;;;40065:61;;;;;39993:7;;;;40065:23;;:31;;:61;;;;;;;;;;;;;;:23;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;40065:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40065:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;40065:61:0;40200:23;;;40242:16;;40200:59;;;-1:-1:-1;;;40200:59:0;;-1:-1:-1;;;;;40200:59:0;;;;;;;;;;40242:16;;;40200:59;;;;;40065:61;;-1:-1:-1;40148:20:0;;40200:23;;;;;:31;;:59;;;;;40065:61;;40200:59;;;;;;;;:23;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;40200:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40200:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;40200:59:0;40333:23;;;:53;;;-1:-1:-1;;;40333:53:0;;-1:-1:-1;;;;;40333:53:0;;;;;;;;;;;;;;;;;;;40200:59;;-1:-1:-1;40281:20:0;;40333:23;;;;;:31;;:53;;;;;40200:59;;40333:53;;;;;;;;:23;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;40333:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40333:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;40333:53:0;;-1:-1:-1;40410:24:0;40451:19;40333:53;40451:12;:19::i;:::-;40447:1350;;;40511:16;;;40525:1;40511:16;;;40487:21;40511:16;;;;;40487:21;40511:16;;;;;105:10:-1;40511:16:0;88:34:-1;136:17;;-1:-1;40511:16:0;40487:40;;40552:10;40542:4;40547:1;40542:7;;;;;;;;;;;;;:20;-1:-1:-1;;;;;40542:20:0;;;-1:-1:-1;;;;;40542:20:0;;;;;40587:8;40577:4;40582:1;40577:7;;;;;;;;-1:-1:-1;;;;;40577:18:0;;;:7;;;;;;;;;;:18;;;;40630:15;;:43;;;-1:-1:-1;;;40630:43:0;;;;;;;;;;;;;;;;;;;;;;40610:17;;40630:15;;;;;:29;;40660:6;;40668:4;;40630:43;;;;;;;;;;;;;;;40610:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;40630:43:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40630:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40630:43:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;40630:43:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;40630:43:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;40630:43:0;;421:4:-1;412:14;;;;40630:43:0;;;;;412:14:-1;40630:43:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;40630:43:0;;;;;;;;;;;40674:1;40630:46;;;;;;;;;;;;;;40610:66;;40703:124;40734:54;40747:9;40758:29;40771:5;40778:8;40758:12;:29::i;40703:124::-;40691:136;;40852:15;;;;;;;;;-1:-1:-1;;;;;40852:15:0;-1:-1:-1;;;;;40852:40:0;;40911:6;40936:9;40964:4;40995;41019:3;41025;41019:9;40852:191;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;40852:191:0;-1:-1:-1;;;;;40852:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;40852:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40852:191:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40852:191:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;40852:191:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;40852:191:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;40852:191:0;;421:4:-1;412:14;;;;40852:191:0;;;;;412:14:-1;40852:191:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;40852:191:0;;;;;;;;;;;40842:201;;41065:7;41073:1;41065:10;;;;;;;;;;;;;;41058:17;;;;;;;;;;40447:1350;41097:19;41110:5;41097:12;:19::i;:::-;:42;;;;;41120:19;41133:5;41120:12;:19::i;:::-;41093:704;;;41180:16;;;41194:1;41180:16;;;;;;;;;41156:21;;41180:16;;;41156:21;;105:10:-1;41180:16:0;88:34:-1;136:17;;-1:-1;41180:16:0;41156:40;;41221:10;41211:4;41216:1;41211:7;;;;;;;;-1:-1:-1;;;;;41211:20:0;;;:7;;;;;;;;;:20;41256:16;;41246:7;;41256:16;;;41246:4;;41256:16;;41246:7;;;;;;;;;;;:26;-1:-1:-1;;;;;41246:26:0;;;-1:-1:-1;;;;;41246:26:0;;;;;41297:8;41287:4;41292:1;41287:7;;;;;;;;-1:-1:-1;;;;;41287:18:0;;;:7;;;;;;;;;;:18;;;;41340:15;;:43;;;-1:-1:-1;;;41340:43:0;;;;;;;;;;;;;;;;;;;;;;41320:17;;41340:15;;;;;:29;;41370:6;;41378:4;;41340:43;;;;;;;;;;;;;;;41320:17;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;41340:43:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41340:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41340:43:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;41340:43:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;41340:43:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;41340:43:0;;421:4:-1;412:14;;;;41340:43:0;;;;;412:14:-1;41340:43:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;41340:43:0;;;;;;;;;;;41384:1;41340:46;;;;;;;;;;;;;;41320:66;;41413:124;41444:54;41457:9;41468:29;41481:5;41488:8;41468:12;:29::i;41413:124::-;41401:136;;41562:15;;;;;;;;;-1:-1:-1;;;;;41562:15:0;-1:-1:-1;;;;;41562:40:0;;41621:6;41646:9;41674:4;41705;41729:3;41735;41729:9;41562:191;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41562:191:0;-1:-1:-1;;;;;41562:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;41562:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41562:191:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41562:191:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;41562:191:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;41562:191:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;41562:191:0;;421:4:-1;412:14;;;;41562:191:0;;;;;412:14:-1;41562:191:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;41562:191:0;;;;;;;;;;;41552:201;;41775:7;41783:1;41775:10;;;;;;;41093:704;-1:-1:-1;41814:1:0;;39831:1992;-1:-1:-1;;;;;;;;39831:1992:0:o;3886:345::-;3972:7;4074:12;4067:5;4059:28;;;;-1:-1:-1;;;4059:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4059:28:0;;4098:9;4114:1;4110;:5;;;;;;;3886:345;-1:-1:-1;;;;;3886:345:0:o
Swarm Source
bzzr://c828ef351ea71a9bdb392664f45fa720b46c030433aee0a6353a91bccc5e37f2
Loading...
Loading
Loading...
Loading
OVERVIEW
Zapper.Fi: Uniswap Zap Out V2 contract has migrated to 0x343E3a490c9251dC0eaA81Da146ba6ABe6C78b2d.Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $10.98 | 400 | $4,392 |
Loading...
Loading
[ Download: CSV Export ]
[ 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.