Latest 25 from a total of 12,371 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 60795447 | 2 hrs ago | IN | 0 AVAX | 0.00003007 | ||||
Approve | 60792151 | 3 hrs ago | IN | 0 AVAX | 0.00003007 | ||||
Approve | 60715347 | 33 hrs ago | IN | 0 AVAX | 0.00000462 | ||||
Transfer | 60695913 | 41 hrs ago | IN | 0 AVAX | 0.00001725 | ||||
Approve | 60291265 | 8 days ago | IN | 0 AVAX | 0.00007448 | ||||
Approve | 60076748 | 12 days ago | IN | 0 AVAX | 0.00000241 | ||||
Transfer | 59992263 | 13 days ago | IN | 0 AVAX | 0.00000015 | ||||
Transfer | 59942641 | 14 days ago | IN | 0 AVAX | 0.0000055 | ||||
Transfer | 59922742 | 14 days ago | IN | 0 AVAX | 0.00000546 | ||||
Transfer | 59886938 | 15 days ago | IN | 0 AVAX | 0.00019517 | ||||
Approve | 59815048 | 16 days ago | IN | 0 AVAX | 0.00005181 | ||||
Transfer | 59710264 | 18 days ago | IN | 0 AVAX | 0.00023691 | ||||
Approve | 59603330 | 21 days ago | IN | 0 AVAX | 0.00003722 | ||||
Approve | 59598648 | 21 days ago | IN | 0 AVAX | 0.00007444 | ||||
Transfer | 59515111 | 23 days ago | IN | 0 AVAX | 0.00020492 | ||||
Approve | 59135026 | 30 days ago | IN | 0 AVAX | 0.00007444 | ||||
Approve | 59081208 | 32 days ago | IN | 0 AVAX | 0.00007444 | ||||
Approve | 58986687 | 34 days ago | IN | 0 AVAX | 0.00004615 | ||||
Approve | 58680668 | 40 days ago | IN | 0 AVAX | 0.00014178 | ||||
Approve | 58384015 | 46 days ago | IN | 0 AVAX | 0.00007384 | ||||
Approve | 58357142 | 47 days ago | IN | 0 AVAX | 0.00004726 | ||||
Approve | 58247086 | 49 days ago | IN | 0 AVAX | 0.00003751 | ||||
Approve | 58167098 | 50 days ago | IN | 0 AVAX | 0.00010939 | ||||
Approve | 58144424 | 51 days ago | IN | 0 AVAX | 0.00011747 | ||||
Approve | 58001494 | 54 days ago | IN | 0 AVAX | 0.00005954 |
Loading...
Loading
Contract Name:
TRACTOR
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at snowscan.xyz on 2021-11-03 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.3; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ // ( ) ( ) // * ))\ ) ( ( * ) ( /( )\ ) ( /( //` ) /(()/( )\ )\ ` ) /( )\())(()/( ( )\()) ( // ( )(_))(_)|(((_)( (((_) ( )(_)|(_)\ /(_)) )\((_)\ )\ //(_(_()|_)) )\ _ )\ )\___(_(_()) ((_)(_)) ((_) ((_)((_) //|_ _| _ \ (_)_\(_|(/ __|_ _| / _ \| _ \ _ | |/ _ \| __| // | | | / / _ \ | (__ | | | (_) | / | || | (_) | _| // |_| |_|_\ /_/ \_\ \___| |_| \___/|_|_\ \__/ \___/|___| // Tokenomics: // 4% of transactions to burn wallet (BUYBACK JOE AND BURN) // LP tax and reflection disabled. interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { // bnb address of the contract owner _owner = 0x7b87848426d47e6B9CF6BC7550Cb7Bf917e08965; emit OwnershipTransferred(address(0), _owner); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function migrator() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function setMigrator(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WAVAX() 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 addLiquidityAVAX( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountAVAXMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountAVAX, 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 removeLiquidityAVAX( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountAVAXMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountAVAX); 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 removeLiquidityAVAXWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountAVAXMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountAVAX); 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 swapExactAVAXForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactAVAX( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForAVAX( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapAVAXForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); 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); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityAVAXSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountAVAXMin, address to, uint256 deadline ) external returns (uint256 amountAVAX); function removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountAVAXMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountAVAX); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactAVAXForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForAVAXSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract TRACTOR is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; // bnb address of the charity wallet address private _charityWalletAddress = 0x4F6787542CdA0e70e8827196805D346CB066cbAD; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000 * 10**9; //Total supply uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "TRACTOR JOE"; string private _symbol = "TRACTOR"; uint8 private _decimals = 9; uint256 public _taxFee = 0; uint256 private _previousTaxFee = _taxFee; uint256 public _charityFee = 4; uint256 private _previousCharityFee = _charityFee; uint256 public _liquidityFee = 0; uint256 private _previousLiquidityFee = _liquidityFee; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxTxAmount = 1000000000 * 10**9; //Max tx amount uint256 private numTokensSellToAddToLiquidity = 500000 * 10**9; //Fee threshold for LP acquisition event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[owner()] = _rTotal; //PCS v2 Router address IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WAVAX()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), owner(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already included"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCharity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCharity(tCharity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setCharityFeePercent(uint256 charityFee) external onlyOwner() { _charityFee = charityFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**2 ); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCharity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tCharity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tCharity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tCharity = calculateCharityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tCharity); return (tTransferAmount, tFee, tLiquidity, tCharity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tCharity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rCharity = tCharity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rCharity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function _takeCharity(uint256 tCharity) private { uint256 currentRate = _getRate(); uint256 rCharity = tCharity.mul(currentRate); _rOwned[_charityWalletAddress] = _rOwned[_charityWalletAddress].add(rCharity); if(_isExcluded[_charityWalletAddress]) _tOwned[_charityWalletAddress] = _tOwned[_charityWalletAddress].add(tCharity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculateCharityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_charityFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousCharityFee = _charityFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _charityFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _charityFee = _previousCharityFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(from != owner() && to != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WAVAX(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForAVAXSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityAVAX{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCharity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCharity(tCharity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCharity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCharity(tCharity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tCharity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeCharity(tCharity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_charityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"charityFee","type":"uint256"}],"name":"setCharityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052734f6787542cda0e70e8827196805d346cb066cbad600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a76400006008556008546000196200007791906200085d565b600019620000869190620007ae565b6009556040518060400160405280600b81526020017f54524143544f52204a4f45000000000000000000000000000000000000000000815250600b9080519060200190620000d692919062000649565b506040518060400160405280600781526020017f54524143544f5200000000000000000000000000000000000000000000000000815250600c90805190602001906200012492919062000649565b506009600d60006101000a81548160ff021916908360ff1602179055506000600e55600e54600f55600460105560105460115560006012556012546013556001601460016101000a81548160ff021916908315150217905550670de0b6b3a76400006015556601c6bf52634000601655348015620001a157600080fd5b50737b87848426d47e6b9cf6bc7550cb7bf917e089656000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360095460016000620002886200062060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060007360ae616a2155ee3d9a68541ba4544862310933d490508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032657600080fd5b505afa1580156200033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000361919062000710565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c457600080fd5b505afa158015620003d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ff919062000710565b6040518363ffffffff1660e01b81526004016200041e92919062000764565b602060405180830381600087803b1580156200043957600080fd5b505af11580156200044e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000474919062000710565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160046000620004f76200062060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005b06200062060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60085460405162000611919062000791565b60405180910390a35062000941565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620006579062000827565b90600052602060002090601f0160209004810192826200067b5760008555620006c7565b82601f106200069657805160ff1916838001178555620006c7565b82800160010185558215620006c7579182015b82811115620006c6578251825591602001919060010190620006a9565b5b509050620006d69190620006da565b5090565b5b80821115620006f5576000816000905550600101620006db565b5090565b6000815190506200070a8162000927565b92915050565b60006020828403121562000729576200072862000922565b5b60006200073984828501620006f9565b91505092915050565b6200074d81620007e9565b82525050565b6200075e816200081d565b82525050565b60006040820190506200077b600083018562000742565b6200078a602083018462000742565b9392505050565b6000602082019050620007a8600083018462000753565b92915050565b6000620007bb826200081d565b9150620007c8836200081d565b925082821015620007de57620007dd62000895565b5b828203905092915050565b6000620007f682620007fd565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200084057607f821691505b60208210811415620008575762000856620008f3565b5b50919050565b60006200086a826200081d565b915062000877836200081d565b9250826200088a5762000889620008c4565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6200093281620007e9565b81146200093e57600080fd5b50565b60805160601c60a05160601c61506e62000997600039600081816112630152612346015260008181610a0901528181612e3201528181612f2201528181612f4901528181612fe5015261300c015261506e6000f3fe6080604052600436106102135760003560e01c806352390c021161011857806395d89b41116100a0578063c49b9a801161006f578063c49b9a80146107e6578063d543dbeb1461080f578063dd62ed3e14610838578063ea2f0b3714610875578063f2fde38b1461089e5761021a565b806395d89b4114610718578063a457c2d714610743578063a9059cbb14610780578063af41063b146107bd5761021a565b8063715018a6116100e7578063715018a6146106455780637d1db4a51461065c57806388f82020146106875780638da5cb5b146106c45780638ee88c53146106ef5761021a565b806352390c02146105775780635342acb4146105a05780636bc87c3a146105dd57806370a08231146106085761021a565b80633685d4191161019b57806340f8007a1161016a57806340f8007a14610490578063437823ec146104bb5780634549b039146104e457806349bd5a5e146105215780634a74bb021461054c5761021a565b80633685d419146103d657806339509351146103ff5780633b124fe71461043c5780633bd5d173146104675761021a565b80631694505e116101e25780631694505e146102db57806318160ddd1461030657806323b872dd146103315780632d8381191461036e578063313ce567146103ab5761021a565b8063061c82d01461021f57806306fdde0314610248578063095ea7b31461027357806313114a9d146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102466004803603810190610241919061417c565b6108c7565b005b34801561025457600080fd5b5061025d61094d565b60405161026a91906145cd565b60405180910390f35b34801561027f57600080fd5b5061029a6004803603810190610295919061410f565b6109df565b6040516102a79190614597565b60405180910390f35b3480156102bc57600080fd5b506102c56109fd565b6040516102d2919061478f565b60405180910390f35b3480156102e757600080fd5b506102f0610a07565b6040516102fd91906145b2565b60405180910390f35b34801561031257600080fd5b5061031b610a2b565b604051610328919061478f565b60405180910390f35b34801561033d57600080fd5b50610358600480360381019061035391906140bc565b610a35565b6040516103659190614597565b60405180910390f35b34801561037a57600080fd5b506103956004803603810190610390919061417c565b610b0e565b6040516103a2919061478f565b60405180910390f35b3480156103b757600080fd5b506103c0610b7c565b6040516103cd919061483b565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190614022565b610b93565b005b34801561040b57600080fd5b506104266004803603810190610421919061410f565b610ec9565b6040516104339190614597565b60405180910390f35b34801561044857600080fd5b50610451610f7c565b60405161045e919061478f565b60405180910390f35b34801561047357600080fd5b5061048e6004803603810190610489919061417c565b610f82565b005b34801561049c57600080fd5b506104a56110fe565b6040516104b2919061478f565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190614022565b611104565b005b3480156104f057600080fd5b5061050b600480360381019061050691906141a9565b6111db565b604051610518919061478f565b60405180910390f35b34801561052d57600080fd5b50610536611261565b604051610543919061451b565b60405180910390f35b34801561055857600080fd5b50610561611285565b60405161056e9190614597565b60405180910390f35b34801561058357600080fd5b5061059e60048036038101906105999190614022565b611298565b005b3480156105ac57600080fd5b506105c760048036038101906105c29190614022565b611533565b6040516105d49190614597565b60405180910390f35b3480156105e957600080fd5b506105f2611589565b6040516105ff919061478f565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190614022565b61158f565b60405161063c919061478f565b60405180910390f35b34801561065157600080fd5b5061065a61167a565b005b34801561066857600080fd5b506106716117b4565b60405161067e919061478f565b60405180910390f35b34801561069357600080fd5b506106ae60048036038101906106a99190614022565b6117ba565b6040516106bb9190614597565b60405180910390f35b3480156106d057600080fd5b506106d9611810565b6040516106e6919061451b565b60405180910390f35b3480156106fb57600080fd5b506107166004803603810190610711919061417c565b611839565b005b34801561072457600080fd5b5061072d6118bf565b60405161073a91906145cd565b60405180910390f35b34801561074f57600080fd5b5061076a6004803603810190610765919061410f565b611951565b6040516107779190614597565b60405180910390f35b34801561078c57600080fd5b506107a760048036038101906107a2919061410f565b611a1e565b6040516107b49190614597565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df919061417c565b611a3c565b005b3480156107f257600080fd5b5061080d6004803603810190610808919061414f565b611ac2565b005b34801561081b57600080fd5b506108366004803603810190610831919061417c565b611b92565b005b34801561084457600080fd5b5061085f600480360381019061085a919061407c565b611c3f565b60405161086c919061478f565b60405180910390f35b34801561088157600080fd5b5061089c60048036038101906108979190614022565b611cc6565b005b3480156108aa57600080fd5b506108c560048036038101906108c09190614022565b611d9d565b005b6108cf611f46565b73ffffffffffffffffffffffffffffffffffffffff166108ed611810565b73ffffffffffffffffffffffffffffffffffffffff1614610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a906146ef565b60405180910390fd5b80600e8190555050565b6060600b805461095c90614a90565b80601f016020809104026020016040519081016040528092919081815260200182805461098890614a90565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b5050505050905090565b60006109f36109ec611f46565b8484611f4e565b6001905092915050565b6000600a54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b6000610a42848484612119565b610b0384610a4e611f46565b610afe85604051806060016040528060288152602001614fec60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ab4611f46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124869092919063ffffffff16565b611f4e565b600190509392505050565b6000600954821115610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c9061460f565b60405180910390fd5b6000610b5f6124db565b9050610b74818461250690919063ffffffff16565b915050919050565b6000600d60009054906101000a900460ff16905090565b610b9b611f46565b73ffffffffffffffffffffffffffffffffffffffff16610bb9611810565b73ffffffffffffffffffffffffffffffffffffffff1614610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c06906146ef565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c929061468f565b60405180910390fd5b60005b600680549050811015610ec5578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610cd657610cd5614bc7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eb25760066001600680549050610d31919061498c565b81548110610d4257610d41614bc7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110610d8157610d80614bc7565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480610e7857610e77614b98565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610ec5565b8080610ebd90614ac2565b915050610c9e565b5050565b6000610f72610ed6611f46565b84610f6d8560036000610ee7611f46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b611f4e565b6001905092915050565b600e5481565b6000610f8c611f46565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561101b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110129061476f565b60405180910390fd5b600061102683612532565b505050505050905061108081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110d88160095461259a90919063ffffffff16565b6009819055506110f383600a5461251c90919063ffffffff16565b600a81905550505050565b60105481565b61110c611f46565b73ffffffffffffffffffffffffffffffffffffffff1661112a611810565b73ffffffffffffffffffffffffffffffffffffffff1614611180576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611177906146ef565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600854831115611222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611219906146af565b60405180910390fd5b8161124357600061123284612532565b50505050505090508091505061125b565b600061124e84612532565b5050505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601460019054906101000a900460ff1681565b6112a0611f46565b73ffffffffffffffffffffffffffffffffffffffff166112be611810565b73ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b906146ef565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113989061466f565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561147557611431600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0e565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561162a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611675565b611672600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0e565b90505b919050565b611682611f46565b73ffffffffffffffffffffffffffffffffffffffff166116a0611810565b73ffffffffffffffffffffffffffffffffffffffff16146116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611841611f46565b73ffffffffffffffffffffffffffffffffffffffff1661185f611810565b73ffffffffffffffffffffffffffffffffffffffff16146118b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ac906146ef565b60405180910390fd5b8060128190555050565b6060600c80546118ce90614a90565b80601f01602080910402602001604051908101604052809291908181526020018280546118fa90614a90565b80156119475780601f1061191c57610100808354040283529160200191611947565b820191906000526020600020905b81548152906001019060200180831161192a57829003601f168201915b5050505050905090565b6000611a1461195e611f46565b84611a0f856040518060600160405280602581526020016150146025913960036000611988611f46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124869092919063ffffffff16565b611f4e565b6001905092915050565b6000611a32611a2b611f46565b8484612119565b6001905092915050565b611a44611f46565b73ffffffffffffffffffffffffffffffffffffffff16611a62611810565b73ffffffffffffffffffffffffffffffffffffffff1614611ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaf906146ef565b60405180910390fd5b8060108190555050565b611aca611f46565b73ffffffffffffffffffffffffffffffffffffffff16611ae8611810565b73ffffffffffffffffffffffffffffffffffffffff1614611b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b35906146ef565b60405180910390fd5b80601460016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611b879190614597565b60405180910390a150565b611b9a611f46565b73ffffffffffffffffffffffffffffffffffffffff16611bb8611810565b73ffffffffffffffffffffffffffffffffffffffff1614611c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c05906146ef565b60405180910390fd5b611c366064611c28836008546125b090919063ffffffff16565b61250690919063ffffffff16565b60158190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611cce611f46565b73ffffffffffffffffffffffffffffffffffffffff16611cec611810565b73ffffffffffffffffffffffffffffffffffffffff1614611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d39906146ef565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611da5611f46565b73ffffffffffffffffffffffffffffffffffffffff16611dc3611810565b73ffffffffffffffffffffffffffffffffffffffff1614611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e10906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e809061462f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb59061474f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561202e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120259061464f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161210c919061478f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121809061472f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f0906145ef565b60405180910390fd5b6000811161223c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122339061470f565b60405180910390fd5b612244611810565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122b25750612282611810565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156122fd576015548111156122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f3906146cf565b60405180910390fd5b5b60006123083061158f565b905060155481106123195760155490505b6000601654821015905080801561233d5750601460009054906101000a900460ff16155b801561239557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123ad5750601460019054906101000a900460ff165b156123c15760165491506123c0826125c6565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124685750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561247257600090505b61247e8686868461269c565b505050505050565b60008383111582906124ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c591906145cd565b60405180910390fd5b5082840390509392505050565b60008060006124e86129ad565b915091506124ff818361250690919063ffffffff16565b9250505090565b600081836125149190614901565b905092915050565b6000818361252a91906148ab565b905092915050565b600080600080600080600080600080600061254c8c612c60565b9350935093509350600080600061256d8f8787876125686124db565b612cdf565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600081836125a8919061498c565b905092915050565b600081836125be9190614932565b905092915050565b6001601460006101000a81548160ff02191690831515021790555060006125f760028361250690919063ffffffff16565b9050600061260e828461259a90919063ffffffff16565b9050600047905061261e83612d93565b6000612633824761259a90919063ffffffff16565b905061263f8382612fdf565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161267293929190614804565b60405180910390a1505050506000601460006101000a81548160ff02191690831515021790555050565b806126aa576126a96130cf565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561274d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127625761275d848484613123565b612999565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128055750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561281a57612815848484613391565b612998565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128be5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128d3576128ce8484846135ff565b612997565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129755750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561298a576129858484846137d8565b612996565b6129958484846135ff565b5b5b5b5b806129a7576129a6613adb565b5b50505050565b600080600060095490506000600854905060005b600680549050811015612c23578260016000600684815481106129e7576129e6614bc7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612ad55750816002600060068481548110612a6d57612a6c614bc7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612aec5760095460085494509450505050612c5c565b612b7c6001600060068481548110612b0757612b06614bc7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461259a90919063ffffffff16565b9250612c0e6002600060068481548110612b9957612b98614bc7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361259a90919063ffffffff16565b91508080612c1b90614ac2565b9150506129c1565b50612c3b60085460095461250690919063ffffffff16565b821015612c5357600954600854935093505050612c5c565b81819350935050505b9091565b6000806000806000612c7186613af8565b90506000612c7e87613b29565b90506000612c8b88613b5a565b90506000612cc682612cb885612caa888e61259a90919063ffffffff16565b61259a90919063ffffffff16565b61259a90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612cf8858a6125b090919063ffffffff16565b90506000612d0f868a6125b090919063ffffffff16565b90506000612d26878a6125b090919063ffffffff16565b90506000612d3d888a6125b090919063ffffffff16565b90506000612d7882612d6a85612d5c888a61259a90919063ffffffff16565b61259a90919063ffffffff16565b61259a90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600267ffffffffffffffff811115612db057612daf614bf6565b5b604051908082528060200260200182016040528015612dde5781602001602082028036833780820191505090505b5090503081600081518110612df657612df5614bc7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b815260040160206040518083038186803b158015612e9657600080fd5b505afa158015612eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ece919061404f565b81600181518110612ee257612ee1614bc7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f47307f000000000000000000000000000000000000000000000000000000000000000084611f4e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663762b15628360008430426040518663ffffffff1660e01b8152600401612fa99594939291906147aa565b600060405180830381600087803b158015612fc357600080fd5b505af1158015612fd7573d6000803e3d6000fd5b505050505050565b61300a307f000000000000000000000000000000000000000000000000000000000000000084611f4e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f91b3f72823085600080613054611810565b426040518863ffffffff1660e01b815260040161307696959493929190614536565b6060604051808303818588803b15801561308f57600080fd5b505af11580156130a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130c891906141e9565b5050505050565b6000600e541480156130e357506000601254145b156130ed57613121565b600e54600f819055506010546011819055506012546013819055506000600e81905550600060108190555060006012819055505b565b600080600080600080600061313788612532565b965096509650965096509650965061319788600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061322c87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132c186600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061330d82613b8b565b61331681613d30565b6133208584613f7f565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161337d919061478f565b60405180910390a350505050505050505050565b60008060008060008060006133a588612532565b965096509650965096509650965061340587600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061349a84600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061352f86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061357b82613b8b565b61358481613d30565b61358e8584613f7f565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516135eb919061478f565b60405180910390a350505050505050505050565b600080600080600080600061361388612532565b965096509650965096509650965061367387600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061370886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061375482613b8b565b61375d81613d30565b6137678584613f7f565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516137c4919061478f565b60405180910390a350505050505050505050565b60008060008060008060006137ec88612532565b965096509650965096509650965061384c88600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138e187600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061397684600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a0b86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a5782613b8b565b613a6081613d30565b613a6a8584613f7f565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613ac7919061478f565b60405180910390a350505050505050505050565b600f54600e81905550601154601081905550601354601281905550565b6000613b226064613b14600e54856125b090919063ffffffff16565b61250690919063ffffffff16565b9050919050565b6000613b536064613b45601254856125b090919063ffffffff16565b61250690919063ffffffff16565b9050919050565b6000613b846064613b76601054856125b090919063ffffffff16565b61250690919063ffffffff16565b9050919050565b6000613b956124db565b90506000613bac82846125b090919063ffffffff16565b9050613c0081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d2b57613ce783600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000613d3a6124db565b90506000613d5182846125b090919063ffffffff16565b9050613dc78160016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b60016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060056000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f7a57613f148360026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b60026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613f948260095461259a90919063ffffffff16565b600981905550613faf81600a5461251c90919063ffffffff16565b600a819055505050565b600081359050613fc881614fa6565b92915050565b600081519050613fdd81614fa6565b92915050565b600081359050613ff281614fbd565b92915050565b60008135905061400781614fd4565b92915050565b60008151905061401c81614fd4565b92915050565b60006020828403121561403857614037614c25565b5b600061404684828501613fb9565b91505092915050565b60006020828403121561406557614064614c25565b5b600061407384828501613fce565b91505092915050565b6000806040838503121561409357614092614c25565b5b60006140a185828601613fb9565b92505060206140b285828601613fb9565b9150509250929050565b6000806000606084860312156140d5576140d4614c25565b5b60006140e386828701613fb9565b93505060206140f486828701613fb9565b925050604061410586828701613ff8565b9150509250925092565b6000806040838503121561412657614125614c25565b5b600061413485828601613fb9565b925050602061414585828601613ff8565b9150509250929050565b60006020828403121561416557614164614c25565b5b600061417384828501613fe3565b91505092915050565b60006020828403121561419257614191614c25565b5b60006141a084828501613ff8565b91505092915050565b600080604083850312156141c0576141bf614c25565b5b60006141ce85828601613ff8565b92505060206141df85828601613fe3565b9150509250929050565b60008060006060848603121561420257614201614c25565b5b60006142108682870161400d565b93505060206142218682870161400d565b92505060406142328682870161400d565b9150509250925092565b60006142488383614254565b60208301905092915050565b61425d816149c0565b82525050565b61426c816149c0565b82525050565b600061427d82614866565b6142878185614889565b935061429283614856565b8060005b838110156142c35781516142aa888261423c565b97506142b58361487c565b925050600181019050614296565b5085935050505092915050565b6142d9816149d2565b82525050565b6142e881614a15565b82525050565b6142f781614a27565b82525050565b600061430882614871565b614312818561489a565b9350614322818560208601614a5d565b61432b81614c2a565b840191505092915050565b600061434360238361489a565b915061434e82614c3b565b604082019050919050565b6000614366602a8361489a565b915061437182614c8a565b604082019050919050565b600061438960268361489a565b915061439482614cd9565b604082019050919050565b60006143ac60228361489a565b91506143b782614d28565b604082019050919050565b60006143cf601b8361489a565b91506143da82614d77565b602082019050919050565b60006143f2601b8361489a565b91506143fd82614da0565b602082019050919050565b6000614415601f8361489a565b915061442082614dc9565b602082019050919050565b600061443860288361489a565b915061444382614df2565b604082019050919050565b600061445b60208361489a565b915061446682614e41565b602082019050919050565b600061447e60298361489a565b915061448982614e6a565b604082019050919050565b60006144a160258361489a565b91506144ac82614eb9565b604082019050919050565b60006144c460248361489a565b91506144cf82614f08565b604082019050919050565b60006144e7602c8361489a565b91506144f282614f57565b604082019050919050565b614506816149fe565b82525050565b61451581614a08565b82525050565b60006020820190506145306000830184614263565b92915050565b600060c08201905061454b6000830189614263565b61455860208301886144fd565b61456560408301876142ee565b61457260608301866142ee565b61457f6080830185614263565b61458c60a08301846144fd565b979650505050505050565b60006020820190506145ac60008301846142d0565b92915050565b60006020820190506145c760008301846142df565b92915050565b600060208201905081810360008301526145e781846142fd565b905092915050565b6000602082019050818103600083015261460881614336565b9050919050565b6000602082019050818103600083015261462881614359565b9050919050565b600060208201905081810360008301526146488161437c565b9050919050565b600060208201905081810360008301526146688161439f565b9050919050565b60006020820190508181036000830152614688816143c2565b9050919050565b600060208201905081810360008301526146a8816143e5565b9050919050565b600060208201905081810360008301526146c881614408565b9050919050565b600060208201905081810360008301526146e88161442b565b9050919050565b600060208201905081810360008301526147088161444e565b9050919050565b6000602082019050818103600083015261472881614471565b9050919050565b6000602082019050818103600083015261474881614494565b9050919050565b60006020820190508181036000830152614768816144b7565b9050919050565b60006020820190508181036000830152614788816144da565b9050919050565b60006020820190506147a460008301846144fd565b92915050565b600060a0820190506147bf60008301886144fd565b6147cc60208301876142ee565b81810360408301526147de8186614272565b90506147ed6060830185614263565b6147fa60808301846144fd565b9695505050505050565b600060608201905061481960008301866144fd565b61482660208301856144fd565b61483360408301846144fd565b949350505050565b6000602082019050614850600083018461450c565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006148b6826149fe565b91506148c1836149fe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156148f6576148f5614b0b565b5b828201905092915050565b600061490c826149fe565b9150614917836149fe565b92508261492757614926614b3a565b5b828204905092915050565b600061493d826149fe565b9150614948836149fe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561498157614980614b0b565b5b828202905092915050565b6000614997826149fe565b91506149a2836149fe565b9250828210156149b5576149b4614b0b565b5b828203905092915050565b60006149cb826149de565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614a2082614a39565b9050919050565b6000614a32826149fe565b9050919050565b6000614a4482614a4b565b9050919050565b6000614a56826149de565b9050919050565b60005b83811015614a7b578082015181840152602081019050614a60565b83811115614a8a576000848401525b50505050565b60006002820490506001821680614aa857607f821691505b60208210811415614abc57614abb614b69565b5b50919050565b6000614acd826149fe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614b0057614aff614b0b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b614faf816149c0565b8114614fba57600080fd5b50565b614fc6816149d2565b8114614fd157600080fd5b50565b614fdd816149fe565b8114614fe857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a186832116b34dfc18884f7139ed091fa72f22e202405a18ab9e89ecb1346e5164736f6c63430008070033
Deployed Bytecode
0x6080604052600436106102135760003560e01c806352390c021161011857806395d89b41116100a0578063c49b9a801161006f578063c49b9a80146107e6578063d543dbeb1461080f578063dd62ed3e14610838578063ea2f0b3714610875578063f2fde38b1461089e5761021a565b806395d89b4114610718578063a457c2d714610743578063a9059cbb14610780578063af41063b146107bd5761021a565b8063715018a6116100e7578063715018a6146106455780637d1db4a51461065c57806388f82020146106875780638da5cb5b146106c45780638ee88c53146106ef5761021a565b806352390c02146105775780635342acb4146105a05780636bc87c3a146105dd57806370a08231146106085761021a565b80633685d4191161019b57806340f8007a1161016a57806340f8007a14610490578063437823ec146104bb5780634549b039146104e457806349bd5a5e146105215780634a74bb021461054c5761021a565b80633685d419146103d657806339509351146103ff5780633b124fe71461043c5780633bd5d173146104675761021a565b80631694505e116101e25780631694505e146102db57806318160ddd1461030657806323b872dd146103315780632d8381191461036e578063313ce567146103ab5761021a565b8063061c82d01461021f57806306fdde0314610248578063095ea7b31461027357806313114a9d146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102466004803603810190610241919061417c565b6108c7565b005b34801561025457600080fd5b5061025d61094d565b60405161026a91906145cd565b60405180910390f35b34801561027f57600080fd5b5061029a6004803603810190610295919061410f565b6109df565b6040516102a79190614597565b60405180910390f35b3480156102bc57600080fd5b506102c56109fd565b6040516102d2919061478f565b60405180910390f35b3480156102e757600080fd5b506102f0610a07565b6040516102fd91906145b2565b60405180910390f35b34801561031257600080fd5b5061031b610a2b565b604051610328919061478f565b60405180910390f35b34801561033d57600080fd5b50610358600480360381019061035391906140bc565b610a35565b6040516103659190614597565b60405180910390f35b34801561037a57600080fd5b506103956004803603810190610390919061417c565b610b0e565b6040516103a2919061478f565b60405180910390f35b3480156103b757600080fd5b506103c0610b7c565b6040516103cd919061483b565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190614022565b610b93565b005b34801561040b57600080fd5b506104266004803603810190610421919061410f565b610ec9565b6040516104339190614597565b60405180910390f35b34801561044857600080fd5b50610451610f7c565b60405161045e919061478f565b60405180910390f35b34801561047357600080fd5b5061048e6004803603810190610489919061417c565b610f82565b005b34801561049c57600080fd5b506104a56110fe565b6040516104b2919061478f565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190614022565b611104565b005b3480156104f057600080fd5b5061050b600480360381019061050691906141a9565b6111db565b604051610518919061478f565b60405180910390f35b34801561052d57600080fd5b50610536611261565b604051610543919061451b565b60405180910390f35b34801561055857600080fd5b50610561611285565b60405161056e9190614597565b60405180910390f35b34801561058357600080fd5b5061059e60048036038101906105999190614022565b611298565b005b3480156105ac57600080fd5b506105c760048036038101906105c29190614022565b611533565b6040516105d49190614597565b60405180910390f35b3480156105e957600080fd5b506105f2611589565b6040516105ff919061478f565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190614022565b61158f565b60405161063c919061478f565b60405180910390f35b34801561065157600080fd5b5061065a61167a565b005b34801561066857600080fd5b506106716117b4565b60405161067e919061478f565b60405180910390f35b34801561069357600080fd5b506106ae60048036038101906106a99190614022565b6117ba565b6040516106bb9190614597565b60405180910390f35b3480156106d057600080fd5b506106d9611810565b6040516106e6919061451b565b60405180910390f35b3480156106fb57600080fd5b506107166004803603810190610711919061417c565b611839565b005b34801561072457600080fd5b5061072d6118bf565b60405161073a91906145cd565b60405180910390f35b34801561074f57600080fd5b5061076a6004803603810190610765919061410f565b611951565b6040516107779190614597565b60405180910390f35b34801561078c57600080fd5b506107a760048036038101906107a2919061410f565b611a1e565b6040516107b49190614597565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df919061417c565b611a3c565b005b3480156107f257600080fd5b5061080d6004803603810190610808919061414f565b611ac2565b005b34801561081b57600080fd5b506108366004803603810190610831919061417c565b611b92565b005b34801561084457600080fd5b5061085f600480360381019061085a919061407c565b611c3f565b60405161086c919061478f565b60405180910390f35b34801561088157600080fd5b5061089c60048036038101906108979190614022565b611cc6565b005b3480156108aa57600080fd5b506108c560048036038101906108c09190614022565b611d9d565b005b6108cf611f46565b73ffffffffffffffffffffffffffffffffffffffff166108ed611810565b73ffffffffffffffffffffffffffffffffffffffff1614610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a906146ef565b60405180910390fd5b80600e8190555050565b6060600b805461095c90614a90565b80601f016020809104026020016040519081016040528092919081815260200182805461098890614a90565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b5050505050905090565b60006109f36109ec611f46565b8484611f4e565b6001905092915050565b6000600a54905090565b7f00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d481565b6000600854905090565b6000610a42848484612119565b610b0384610a4e611f46565b610afe85604051806060016040528060288152602001614fec60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ab4611f46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124869092919063ffffffff16565b611f4e565b600190509392505050565b6000600954821115610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c9061460f565b60405180910390fd5b6000610b5f6124db565b9050610b74818461250690919063ffffffff16565b915050919050565b6000600d60009054906101000a900460ff16905090565b610b9b611f46565b73ffffffffffffffffffffffffffffffffffffffff16610bb9611810565b73ffffffffffffffffffffffffffffffffffffffff1614610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c06906146ef565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c929061468f565b60405180910390fd5b60005b600680549050811015610ec5578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610cd657610cd5614bc7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eb25760066001600680549050610d31919061498c565b81548110610d4257610d41614bc7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110610d8157610d80614bc7565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480610e7857610e77614b98565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610ec5565b8080610ebd90614ac2565b915050610c9e565b5050565b6000610f72610ed6611f46565b84610f6d8560036000610ee7611f46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b611f4e565b6001905092915050565b600e5481565b6000610f8c611f46565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561101b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110129061476f565b60405180910390fd5b600061102683612532565b505050505050905061108081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110d88160095461259a90919063ffffffff16565b6009819055506110f383600a5461251c90919063ffffffff16565b600a81905550505050565b60105481565b61110c611f46565b73ffffffffffffffffffffffffffffffffffffffff1661112a611810565b73ffffffffffffffffffffffffffffffffffffffff1614611180576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611177906146ef565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600854831115611222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611219906146af565b60405180910390fd5b8161124357600061123284612532565b50505050505090508091505061125b565b600061124e84612532565b5050505050915050809150505b92915050565b7f000000000000000000000000601e0f63be88a52b79dbac667d6b4a167ce3911381565b601460019054906101000a900460ff1681565b6112a0611f46565b73ffffffffffffffffffffffffffffffffffffffff166112be611810565b73ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b906146ef565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113989061466f565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561147557611431600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0e565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561162a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611675565b611672600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0e565b90505b919050565b611682611f46565b73ffffffffffffffffffffffffffffffffffffffff166116a0611810565b73ffffffffffffffffffffffffffffffffffffffff16146116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611841611f46565b73ffffffffffffffffffffffffffffffffffffffff1661185f611810565b73ffffffffffffffffffffffffffffffffffffffff16146118b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ac906146ef565b60405180910390fd5b8060128190555050565b6060600c80546118ce90614a90565b80601f01602080910402602001604051908101604052809291908181526020018280546118fa90614a90565b80156119475780601f1061191c57610100808354040283529160200191611947565b820191906000526020600020905b81548152906001019060200180831161192a57829003601f168201915b5050505050905090565b6000611a1461195e611f46565b84611a0f856040518060600160405280602581526020016150146025913960036000611988611f46565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124869092919063ffffffff16565b611f4e565b6001905092915050565b6000611a32611a2b611f46565b8484612119565b6001905092915050565b611a44611f46565b73ffffffffffffffffffffffffffffffffffffffff16611a62611810565b73ffffffffffffffffffffffffffffffffffffffff1614611ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaf906146ef565b60405180910390fd5b8060108190555050565b611aca611f46565b73ffffffffffffffffffffffffffffffffffffffff16611ae8611810565b73ffffffffffffffffffffffffffffffffffffffff1614611b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b35906146ef565b60405180910390fd5b80601460016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611b879190614597565b60405180910390a150565b611b9a611f46565b73ffffffffffffffffffffffffffffffffffffffff16611bb8611810565b73ffffffffffffffffffffffffffffffffffffffff1614611c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c05906146ef565b60405180910390fd5b611c366064611c28836008546125b090919063ffffffff16565b61250690919063ffffffff16565b60158190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611cce611f46565b73ffffffffffffffffffffffffffffffffffffffff16611cec611810565b73ffffffffffffffffffffffffffffffffffffffff1614611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d39906146ef565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611da5611f46565b73ffffffffffffffffffffffffffffffffffffffff16611dc3611810565b73ffffffffffffffffffffffffffffffffffffffff1614611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e10906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e809061462f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb59061474f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561202e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120259061464f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161210c919061478f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121809061472f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f0906145ef565b60405180910390fd5b6000811161223c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122339061470f565b60405180910390fd5b612244611810565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122b25750612282611810565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156122fd576015548111156122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f3906146cf565b60405180910390fd5b5b60006123083061158f565b905060155481106123195760155490505b6000601654821015905080801561233d5750601460009054906101000a900460ff16155b801561239557507f000000000000000000000000601e0f63be88a52b79dbac667d6b4a167ce3911373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123ad5750601460019054906101000a900460ff165b156123c15760165491506123c0826125c6565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124685750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561247257600090505b61247e8686868461269c565b505050505050565b60008383111582906124ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c591906145cd565b60405180910390fd5b5082840390509392505050565b60008060006124e86129ad565b915091506124ff818361250690919063ffffffff16565b9250505090565b600081836125149190614901565b905092915050565b6000818361252a91906148ab565b905092915050565b600080600080600080600080600080600061254c8c612c60565b9350935093509350600080600061256d8f8787876125686124db565b612cdf565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600081836125a8919061498c565b905092915050565b600081836125be9190614932565b905092915050565b6001601460006101000a81548160ff02191690831515021790555060006125f760028361250690919063ffffffff16565b9050600061260e828461259a90919063ffffffff16565b9050600047905061261e83612d93565b6000612633824761259a90919063ffffffff16565b905061263f8382612fdf565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161267293929190614804565b60405180910390a1505050506000601460006101000a81548160ff02191690831515021790555050565b806126aa576126a96130cf565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561274d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127625761275d848484613123565b612999565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128055750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561281a57612815848484613391565b612998565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128be5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128d3576128ce8484846135ff565b612997565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129755750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561298a576129858484846137d8565b612996565b6129958484846135ff565b5b5b5b5b806129a7576129a6613adb565b5b50505050565b600080600060095490506000600854905060005b600680549050811015612c23578260016000600684815481106129e7576129e6614bc7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612ad55750816002600060068481548110612a6d57612a6c614bc7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612aec5760095460085494509450505050612c5c565b612b7c6001600060068481548110612b0757612b06614bc7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461259a90919063ffffffff16565b9250612c0e6002600060068481548110612b9957612b98614bc7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361259a90919063ffffffff16565b91508080612c1b90614ac2565b9150506129c1565b50612c3b60085460095461250690919063ffffffff16565b821015612c5357600954600854935093505050612c5c565b81819350935050505b9091565b6000806000806000612c7186613af8565b90506000612c7e87613b29565b90506000612c8b88613b5a565b90506000612cc682612cb885612caa888e61259a90919063ffffffff16565b61259a90919063ffffffff16565b61259a90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612cf8858a6125b090919063ffffffff16565b90506000612d0f868a6125b090919063ffffffff16565b90506000612d26878a6125b090919063ffffffff16565b90506000612d3d888a6125b090919063ffffffff16565b90506000612d7882612d6a85612d5c888a61259a90919063ffffffff16565b61259a90919063ffffffff16565b61259a90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600267ffffffffffffffff811115612db057612daf614bf6565b5b604051908082528060200260200182016040528015612dde5781602001602082028036833780820191505090505b5090503081600081518110612df657612df5614bc7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d473ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b815260040160206040518083038186803b158015612e9657600080fd5b505afa158015612eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ece919061404f565b81600181518110612ee257612ee1614bc7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f47307f00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d484611f4e565b7f00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d473ffffffffffffffffffffffffffffffffffffffff1663762b15628360008430426040518663ffffffff1660e01b8152600401612fa99594939291906147aa565b600060405180830381600087803b158015612fc357600080fd5b505af1158015612fd7573d6000803e3d6000fd5b505050505050565b61300a307f00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d484611f4e565b7f00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d473ffffffffffffffffffffffffffffffffffffffff1663f91b3f72823085600080613054611810565b426040518863ffffffff1660e01b815260040161307696959493929190614536565b6060604051808303818588803b15801561308f57600080fd5b505af11580156130a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130c891906141e9565b5050505050565b6000600e541480156130e357506000601254145b156130ed57613121565b600e54600f819055506010546011819055506012546013819055506000600e81905550600060108190555060006012819055505b565b600080600080600080600061313788612532565b965096509650965096509650965061319788600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061322c87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132c186600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061330d82613b8b565b61331681613d30565b6133208584613f7f565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161337d919061478f565b60405180910390a350505050505050505050565b60008060008060008060006133a588612532565b965096509650965096509650965061340587600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061349a84600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061352f86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061357b82613b8b565b61358481613d30565b61358e8584613f7f565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516135eb919061478f565b60405180910390a350505050505050505050565b600080600080600080600061361388612532565b965096509650965096509650965061367387600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061370886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061375482613b8b565b61375d81613d30565b6137678584613f7f565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516137c4919061478f565b60405180910390a350505050505050505050565b60008060008060008060006137ec88612532565b965096509650965096509650965061384c88600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138e187600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061397684600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a0b86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a5782613b8b565b613a6081613d30565b613a6a8584613f7f565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613ac7919061478f565b60405180910390a350505050505050505050565b600f54600e81905550601154601081905550601354601281905550565b6000613b226064613b14600e54856125b090919063ffffffff16565b61250690919063ffffffff16565b9050919050565b6000613b536064613b45601254856125b090919063ffffffff16565b61250690919063ffffffff16565b9050919050565b6000613b846064613b76601054856125b090919063ffffffff16565b61250690919063ffffffff16565b9050919050565b6000613b956124db565b90506000613bac82846125b090919063ffffffff16565b9050613c0081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d2b57613ce783600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000613d3a6124db565b90506000613d5182846125b090919063ffffffff16565b9050613dc78160016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b60016000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060056000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f7a57613f148360026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251c90919063ffffffff16565b60026000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613f948260095461259a90919063ffffffff16565b600981905550613faf81600a5461251c90919063ffffffff16565b600a819055505050565b600081359050613fc881614fa6565b92915050565b600081519050613fdd81614fa6565b92915050565b600081359050613ff281614fbd565b92915050565b60008135905061400781614fd4565b92915050565b60008151905061401c81614fd4565b92915050565b60006020828403121561403857614037614c25565b5b600061404684828501613fb9565b91505092915050565b60006020828403121561406557614064614c25565b5b600061407384828501613fce565b91505092915050565b6000806040838503121561409357614092614c25565b5b60006140a185828601613fb9565b92505060206140b285828601613fb9565b9150509250929050565b6000806000606084860312156140d5576140d4614c25565b5b60006140e386828701613fb9565b93505060206140f486828701613fb9565b925050604061410586828701613ff8565b9150509250925092565b6000806040838503121561412657614125614c25565b5b600061413485828601613fb9565b925050602061414585828601613ff8565b9150509250929050565b60006020828403121561416557614164614c25565b5b600061417384828501613fe3565b91505092915050565b60006020828403121561419257614191614c25565b5b60006141a084828501613ff8565b91505092915050565b600080604083850312156141c0576141bf614c25565b5b60006141ce85828601613ff8565b92505060206141df85828601613fe3565b9150509250929050565b60008060006060848603121561420257614201614c25565b5b60006142108682870161400d565b93505060206142218682870161400d565b92505060406142328682870161400d565b9150509250925092565b60006142488383614254565b60208301905092915050565b61425d816149c0565b82525050565b61426c816149c0565b82525050565b600061427d82614866565b6142878185614889565b935061429283614856565b8060005b838110156142c35781516142aa888261423c565b97506142b58361487c565b925050600181019050614296565b5085935050505092915050565b6142d9816149d2565b82525050565b6142e881614a15565b82525050565b6142f781614a27565b82525050565b600061430882614871565b614312818561489a565b9350614322818560208601614a5d565b61432b81614c2a565b840191505092915050565b600061434360238361489a565b915061434e82614c3b565b604082019050919050565b6000614366602a8361489a565b915061437182614c8a565b604082019050919050565b600061438960268361489a565b915061439482614cd9565b604082019050919050565b60006143ac60228361489a565b91506143b782614d28565b604082019050919050565b60006143cf601b8361489a565b91506143da82614d77565b602082019050919050565b60006143f2601b8361489a565b91506143fd82614da0565b602082019050919050565b6000614415601f8361489a565b915061442082614dc9565b602082019050919050565b600061443860288361489a565b915061444382614df2565b604082019050919050565b600061445b60208361489a565b915061446682614e41565b602082019050919050565b600061447e60298361489a565b915061448982614e6a565b604082019050919050565b60006144a160258361489a565b91506144ac82614eb9565b604082019050919050565b60006144c460248361489a565b91506144cf82614f08565b604082019050919050565b60006144e7602c8361489a565b91506144f282614f57565b604082019050919050565b614506816149fe565b82525050565b61451581614a08565b82525050565b60006020820190506145306000830184614263565b92915050565b600060c08201905061454b6000830189614263565b61455860208301886144fd565b61456560408301876142ee565b61457260608301866142ee565b61457f6080830185614263565b61458c60a08301846144fd565b979650505050505050565b60006020820190506145ac60008301846142d0565b92915050565b60006020820190506145c760008301846142df565b92915050565b600060208201905081810360008301526145e781846142fd565b905092915050565b6000602082019050818103600083015261460881614336565b9050919050565b6000602082019050818103600083015261462881614359565b9050919050565b600060208201905081810360008301526146488161437c565b9050919050565b600060208201905081810360008301526146688161439f565b9050919050565b60006020820190508181036000830152614688816143c2565b9050919050565b600060208201905081810360008301526146a8816143e5565b9050919050565b600060208201905081810360008301526146c881614408565b9050919050565b600060208201905081810360008301526146e88161442b565b9050919050565b600060208201905081810360008301526147088161444e565b9050919050565b6000602082019050818103600083015261472881614471565b9050919050565b6000602082019050818103600083015261474881614494565b9050919050565b60006020820190508181036000830152614768816144b7565b9050919050565b60006020820190508181036000830152614788816144da565b9050919050565b60006020820190506147a460008301846144fd565b92915050565b600060a0820190506147bf60008301886144fd565b6147cc60208301876142ee565b81810360408301526147de8186614272565b90506147ed6060830185614263565b6147fa60808301846144fd565b9695505050505050565b600060608201905061481960008301866144fd565b61482660208301856144fd565b61483360408301846144fd565b949350505050565b6000602082019050614850600083018461450c565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006148b6826149fe565b91506148c1836149fe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156148f6576148f5614b0b565b5b828201905092915050565b600061490c826149fe565b9150614917836149fe565b92508261492757614926614b3a565b5b828204905092915050565b600061493d826149fe565b9150614948836149fe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561498157614980614b0b565b5b828202905092915050565b6000614997826149fe565b91506149a2836149fe565b9250828210156149b5576149b4614b0b565b5b828203905092915050565b60006149cb826149de565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614a2082614a39565b9050919050565b6000614a32826149fe565b9050919050565b6000614a4482614a4b565b9050919050565b6000614a56826149de565b9050919050565b60005b83811015614a7b578082015181840152602081019050614a60565b83811115614a8a576000848401525b50505050565b60006002820490506001821680614aa857607f821691505b60208210811415614abc57614abb614b69565b5b50919050565b6000614acd826149fe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614b0057614aff614b0b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b614faf816149c0565b8114614fba57600080fd5b50565b614fc6816149d2565b8114614fd157600080fd5b50565b614fdd816149fe565b8114614fe857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a186832116b34dfc18884f7139ed091fa72f22e202405a18ab9e89ecb1346e5164736f6c63430008070033
Deployed Bytecode Sourcemap
30751:19782:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38514:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33429:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34327:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35438:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31934:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33700:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34494:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36359:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33611:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37071:479;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34813:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31655:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35531:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31742:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38269:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35915:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31992:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32071:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36618:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43417:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31835:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33801:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20856:148;;;;;;;;;;;;;:::i;:::-;;32124:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35312:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20209:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38744:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33518:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35037:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34005:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38618:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39045:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38877:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34178:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38392:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21157:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38514:98;20438:12;:10;:12::i;:::-;20427:23;;:7;:5;:7::i;:::-;:23;;;20419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38598:6:::1;38588:7;:16;;;;38514:98:::0;:::o;33429:83::-;33466:13;33499:5;33492:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33429:83;:::o;34327:161::-;34402:4;34419:39;34428:12;:10;:12::i;:::-;34442:7;34451:6;34419:8;:39::i;:::-;34476:4;34469:11;;34327:161;;;;:::o;35438:87::-;35480:7;35507:10;;35500:17;;35438:87;:::o;31934:51::-;;;:::o;33700:95::-;33753:7;33780;;33773:14;;33700:95;:::o;34494:313::-;34592:4;34609:36;34619:6;34627:9;34638:6;34609:9;:36::i;:::-;34656:121;34665:6;34673:12;:10;:12::i;:::-;34687:89;34725:6;34687:89;;;;;;;;;;;;;;;;;:11;:19;34699:6;34687:19;;;;;;;;;;;;;;;:33;34707:12;:10;:12::i;:::-;34687:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;34656:8;:121::i;:::-;34795:4;34788:11;;34494:313;;;;;:::o;36359:253::-;36425:7;36464;;36453;:18;;36445:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;36529:19;36552:10;:8;:10::i;:::-;36529:33;;36580:24;36592:11;36580:7;:11;;:24;;;;:::i;:::-;36573:31;;;36359:253;;;:::o;33611:83::-;33652:5;33677:9;;;;;;;;;;;33670:16;;33611:83;:::o;37071:479::-;20438:12;:10;:12::i;:::-;20427:23;;:7;:5;:7::i;:::-;:23;;;20419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37153:11:::1;:20;37165:7;37153:20;;;;;;;;;;;;;;;;;;;;;;;;;37145:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;37221:9;37216:327;37240:9;:16;;;;37236:1;:20;37216:327;;;37298:7;37282:23;;:9;37292:1;37282:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;37278:254;;;37341:9;37370:1;37351:9;:16;;;;:20;;;;:::i;:::-;37341:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37326:9;37336:1;37326:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;37410:1;37391:7;:16;37399:7;37391:16;;;;;;;;;;;;;;;:20;;;;37453:5;37430:11;:20;37442:7;37430:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;37477:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;37511:5;;37278:254;37258:3;;;;;:::i;:::-;;;;37216:327;;;;37071:479:::0;:::o;34813:218::-;34901:4;34918:83;34927:12;:10;:12::i;:::-;34941:7;34950:50;34989:10;34950:11;:25;34962:12;:10;:12::i;:::-;34950:25;;;;;;;;;;;;;;;:34;34976:7;34950:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;34918:8;:83::i;:::-;35019:4;35012:11;;34813:218;;;;:::o;31655:26::-;;;;:::o;35531:378::-;35583:14;35600:12;:10;:12::i;:::-;35583:29;;35632:11;:19;35644:6;35632:19;;;;;;;;;;;;;;;;;;;;;;;;;35631:20;35623:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;35712:15;35737:19;35748:7;35737:10;:19::i;:::-;35711:45;;;;;;;;35785:28;35805:7;35785;:15;35793:6;35785:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;35767:7;:15;35775:6;35767:15;;;;;;;;;;;;;;;:46;;;;35834:20;35846:7;35834;;:11;;:20;;;;:::i;:::-;35824:7;:30;;;;35878:23;35893:7;35878:10;;:14;;:23;;;;:::i;:::-;35865:10;:36;;;;35572:337;;35531:378;:::o;31742:30::-;;;;:::o;38269:111::-;20438:12;:10;:12::i;:::-;20427:23;;:7;:5;:7::i;:::-;:23;;;20419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38368:4:::1;38338:18;:27;38357:7;38338:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;38269:111:::0;:::o;35915:438::-;36005:7;36044;;36033;:18;;36025:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;36103:17;36098:248;;36138:15;36163:19;36174:7;36163:10;:19::i;:::-;36137:45;;;;;;;;36204:7;36197:14;;;;;36098:248;36246:23;36278:19;36289:7;36278:10;:19::i;:::-;36244:53;;;;;;;;36319:15;36312:22;;;35915:438;;;;;:::o;31992:38::-;;;:::o;32071:40::-;;;;;;;;;;;;;:::o;36618:447::-;20438:12;:10;:12::i;:::-;20427:23;;:7;:5;:7::i;:::-;:23;;;20419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36815:11:::1;:20;36827:7;36815:20;;;;;;;;;;;;;;;;;;;;;;;;;36814:21;36806:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;36900:1;36881:7;:16;36889:7;36881:16;;;;;;;;;;;;;;;;:20;36878:108;;;36937:37;36957:7;:16;36965:7;36957:16;;;;;;;;;;;;;;;;36937:19;:37::i;:::-;36918:7;:16;36926:7;36918:16;;;;;;;;;;;;;;;:56;;;;36878:108;37019:4;36996:11;:20;37008:7;36996:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;37034:9;37049:7;37034:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36618:447:::0;:::o;43417:123::-;43481:4;43505:18;:27;43524:7;43505:27;;;;;;;;;;;;;;;;;;;;;;;;;43498:34;;43417:123;;;:::o;31835:32::-;;;;:::o;33801:198::-;33867:7;33891:11;:20;33903:7;33891:20;;;;;;;;;;;;;;;;;;;;;;;;;33887:49;;;33920:7;:16;33928:7;33920:16;;;;;;;;;;;;;;;;33913:23;;;;33887:49;33954:37;33974:7;:16;33982:7;33974:16;;;;;;;;;;;;;;;;33954:19;:37::i;:::-;33947:44;;33801:198;;;;:::o;20856:148::-;20438:12;:10;:12::i;:::-;20427:23;;:7;:5;:7::i;:::-;:23;;;20419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20963:1:::1;20926:40;;20947:6;::::0;::::1;;;;;;;;20926:40;;;;;;;;;;;;20994:1;20977:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;20856:148::o:0;32124:48::-;;;;:::o;35312:120::-;35380:4;35404:11;:20;35416:7;35404:20;;;;;;;;;;;;;;;;;;;;;;;;;35397:27;;35312:120;;;:::o;20209:87::-;20255:7;20282:6;;;;;;;;;;;20275:13;;20209:87;:::o;38744:122::-;20438:12;:10;:12::i;:::-;20427:23;;:7;:5;:7::i;:::-;:23;;;20419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38846:12:::1;38830:13;:28;;;;38744:122:::0;:::o;33518:87::-;33557:13;33590:7;33583:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33518:87;:::o;35037:269::-;35130:4;35147:129;35156:12;:10;:12::i;:::-;35170:7;35179:96;35218:15;35179:96;;;;;;;;;;;;;;;;;:11;:25;35191:12;:10;:12::i;:::-;35179:25;;;;;;;;;;;;;;;:34;35205:7;35179:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;35147:8;:129::i;:::-;35294:4;35287:11;;35037:269;;;;:::o;34005:167::-;34083:4;34100:42;34110:12;:10;:12::i;:::-;34124:9;34135:6;34100:9;:42::i;:::-;34160:4;34153:11;;34005:167;;;;:::o;38618:114::-;20438:12;:10;:12::i;:::-;20427:23;;:7;:5;:7::i;:::-;:23;;;20419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38714:10:::1;38700:11;:24;;;;38618:114:::0;:::o;39045:171::-;20438:12;:10;:12::i;:::-;20427:23;;:7;:5;:7::i;:::-;:23;;;20419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39146:8:::1;39122:21;;:32;;;;;;;;;;;;;;;;;;39170:38;39199:8;39170:38;;;;;;:::i;:::-;;;;;;;;39045:171:::0;:::o;38877:162::-;20438:12;:10;:12::i;:::-;20427:23;;:7;:5;:7::i;:::-;:23;;;20419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38971:60:::1;39015:5;38971:25;38983:12;38971:7;;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;38956:12;:75;;;;38877:162:::0;:::o;34178:143::-;34259:7;34286:11;:18;34298:5;34286:18;;;;;;;;;;;;;;;:27;34305:7;34286:27;;;;;;;;;;;;;;;;34279:34;;34178:143;;;;:::o;38392:110::-;20438:12;:10;:12::i;:::-;20427:23;;:7;:5;:7::i;:::-;:23;;;20419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38489:5:::1;38459:18;:27;38478:7;38459:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;38392:110:::0;:::o;21157:244::-;20438:12;:10;:12::i;:::-;20427:23;;:7;:5;:7::i;:::-;:23;;;20419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21266:1:::1;21246:22;;:8;:22;;;;21238:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21356:8;21327:38;;21348:6;::::0;::::1;;;;;;;;21327:38;;;;;;;;;;;;21385:8;21376:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;21157:244:::0;:::o;10924:98::-;10977:7;11004:10;10997:17;;10924:98;:::o;43546:335::-;43656:1;43639:19;;:5;:19;;;;43631:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43737:1;43718:21;;:7;:21;;;;43710:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43819:6;43789:11;:18;43801:5;43789:18;;;;;;;;;;;;;;;:27;43808:7;43789:27;;;;;;;;;;;;;;;:36;;;;43857:7;43841:32;;43850:5;43841:32;;;43866:6;43841:32;;;;;;:::i;:::-;;;;;;;;43546:335;;;:::o;43887:1811::-;44025:1;44009:18;;:4;:18;;;;44001:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44102:1;44088:16;;:2;:16;;;;44080:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;44172:1;44163:6;:10;44155:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;44241:7;:5;:7::i;:::-;44233:15;;:4;:15;;;;:32;;;;;44258:7;:5;:7::i;:::-;44252:13;;:2;:13;;;;44233:32;44230:125;;;44298:12;;44288:6;:22;;44280:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;44230:125;44648:28;44679:24;44697:4;44679:9;:24::i;:::-;44648:55;;44751:12;;44727:20;:36;44724:112;;44812:12;;44789:35;;44724:112;44856:24;44907:29;;44883:20;:53;;44856:80;;44965:19;:53;;;;;45002:16;;;;;;;;;;;45001:17;44965:53;:91;;;;;45043:13;45035:21;;:4;:21;;;;44965:91;:129;;;;;45073:21;;;;;;;;;;;44965:129;44947:318;;;45144:29;;45121:52;;45217:36;45232:20;45217:14;:36::i;:::-;44947:318;45346:12;45361:4;45346:19;;45473:18;:24;45492:4;45473:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;45501:18;:22;45520:2;45501:22;;;;;;;;;;;;;;;;;;;;;;;;;45473:50;45470:96;;;45549:5;45539:15;;45470:96;45652:38;45667:4;45672:2;45675:6;45682:7;45652:14;:38::i;:::-;43990:1708;;;43887:1811;;;:::o;8380:206::-;8466:7;8524:1;8519;:6;;8527:12;8511:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8566:1;8562;:5;8555:12;;8380:206;;;;;:::o;40894:163::-;40935:7;40956:15;40973;40992:19;:17;:19::i;:::-;40955:56;;;;41029:20;41041:7;41029;:11;;:20;;;;:::i;:::-;41022:27;;;;40894:163;:::o;7242:98::-;7300:7;7331:1;7327;:5;;;;:::i;:::-;7320:12;;7242:98;;;;:::o;6111:::-;6169:7;6200:1;6196;:5;;;;:::i;:::-;6189:12;;6111:98;;;;:::o;39473:466::-;39532:7;39541;39550;39559;39568;39577;39586;39607:23;39632:12;39646:18;39666:16;39686:20;39698:7;39686:11;:20::i;:::-;39606:100;;;;;;;;39718:15;39735:23;39760:12;39776:60;39788:7;39797:4;39803:10;39815:8;39825:10;:8;:10::i;:::-;39776:11;:60::i;:::-;39717:119;;;;;;39855:7;39864:15;39881:4;39887:15;39904:4;39910:10;39922:8;39847:84;;;;;;;;;;;;;;;;;;;;;39473:466;;;;;;;;;:::o;6490:98::-;6548:7;6579:1;6575;:5;;;;:::i;:::-;6568:12;;6490:98;;;;:::o;6845:::-;6903:7;6934:1;6930;:5;;;;:::i;:::-;6923:12;;6845:98;;;;:::o;45704:977::-;32618:4;32599:16;;:23;;;;;;;;;;;;;;;;;;45840:12:::1;45855:27;45880:1;45855:20;:24;;:27;;;;:::i;:::-;45840:42;;45893:17;45913:30;45938:4;45913:20;:24;;:30;;;;:::i;:::-;45893:50;;46219:22;46244:21;46219:46;;46308:22;46325:4;46308:16;:22::i;:::-;46459:18;46480:41;46506:14;46480:21;:25;;:41;;;;:::i;:::-;46459:62;;46569:35;46582:9;46593:10;46569:12;:35::i;:::-;46630:43;46645:4;46651:10;46663:9;46630:43;;;;;;;;:::i;:::-;;;;;;;;45778:903;;;;32664:5:::0;32645:16;;:24;;;;;;;;;;;;;;;;;;45704:977;:::o;47871:834::-;47982:7;47978:40;;48004:14;:12;:14::i;:::-;47978:40;48043:11;:19;48055:6;48043:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;48067:11;:22;48079:9;48067:22;;;;;;;;;;;;;;;;;;;;;;;;;48066:23;48043:46;48039:597;;;48106:48;48128:6;48136:9;48147:6;48106:21;:48::i;:::-;48039:597;;;48177:11;:19;48189:6;48177:19;;;;;;;;;;;;;;;;;;;;;;;;;48176:20;:46;;;;;48200:11;:22;48212:9;48200:22;;;;;;;;;;;;;;;;;;;;;;;;;48176:46;48172:464;;;48239:46;48259:6;48267:9;48278:6;48239:19;:46::i;:::-;48172:464;;;48308:11;:19;48320:6;48308:19;;;;;;;;;;;;;;;;;;;;;;;;;48307:20;:47;;;;;48332:11;:22;48344:9;48332:22;;;;;;;;;;;;;;;;;;;;;;;;;48331:23;48307:47;48303:333;;;48371:44;48389:6;48397:9;48408:6;48371:17;:44::i;:::-;48303:333;;;48437:11;:19;48449:6;48437:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;48460:11;:22;48472:9;48460:22;;;;;;;;;;;;;;;;;;;;;;;;;48437:45;48433:203;;;48499:48;48521:6;48529:9;48540:6;48499:21;:48::i;:::-;48433:203;;;48580:44;48598:6;48606:9;48617:6;48580:17;:44::i;:::-;48433:203;48303:333;48172:464;48039:597;48660:7;48656:41;;48682:15;:13;:15::i;:::-;48656:41;47871:834;;;;:::o;41063:561::-;41113:7;41122;41142:15;41160:7;;41142:25;;41178:15;41196:7;;41178:25;;41225:9;41220:289;41244:9;:16;;;;41240:1;:20;41220:289;;;41310:7;41286;:21;41294:9;41304:1;41294:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;41286:21;;;;;;;;;;;;;;;;:31;:66;;;;41345:7;41321;:21;41329:9;41339:1;41329:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;41321:21;;;;;;;;;;;;;;;;:31;41286:66;41282:97;;;41362:7;;41371;;41354:25;;;;;;;;;41282:97;41404:34;41416:7;:21;41424:9;41434:1;41424:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;41416:21;;;;;;;;;;;;;;;;41404:7;:11;;:34;;;;:::i;:::-;41394:44;;41463:34;41475:7;:21;41483:9;41493:1;41483:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;41475:21;;;;;;;;;;;;;;;;41463:7;:11;;:34;;;;:::i;:::-;41453:44;;41262:3;;;;;:::i;:::-;;;;41220:289;;;;41533:20;41545:7;;41533;;:11;;:20;;;;:::i;:::-;41523:7;:30;41519:61;;;41563:7;;41572;;41555:25;;;;;;;;41519:61;41599:7;41608;41591:25;;;;;;41063:561;;;:::o;39945:421::-;40005:7;40014;40023;40032;40052:12;40067:24;40083:7;40067:15;:24::i;:::-;40052:39;;40102:18;40123:30;40145:7;40123:21;:30::i;:::-;40102:51;;40164:16;40183:28;40203:7;40183:19;:28::i;:::-;40164:47;;40222:23;40248:47;40286:8;40248:33;40270:10;40248:17;40260:4;40248:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;40222:73;;40314:15;40331:4;40337:10;40349:8;40306:52;;;;;;;;;;;;39945:421;;;;;:::o;40372:516::-;40505:7;40514;40523;40543:15;40561:24;40573:11;40561:7;:11;;:24;;;;:::i;:::-;40543:42;;40596:12;40611:21;40620:11;40611:4;:8;;:21;;;;:::i;:::-;40596:36;;40643:18;40664:27;40679:11;40664:10;:14;;:27;;;;:::i;:::-;40643:48;;40702:16;40721:25;40734:11;40721:8;:12;;:25;;;;:::i;:::-;40702:44;;40757:23;40783:47;40821:8;40783:33;40805:10;40783:17;40795:4;40783:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;40757:73;;40849:7;40858:15;40875:4;40841:39;;;;;;;;;;;40372:516;;;;;;;;;:::o;46687:587::-;46813:21;46851:1;46837:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46813:40;;46882:4;46864;46869:1;46864:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;46908:15;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46898:4;46903:1;46898:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;46942:62;46959:4;46974:15;46992:11;46942:8;:62::i;:::-;47041:15;:67;;;47123:11;47149:1;47193:4;47220;47240:15;47041:225;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46742:532;46687:587;:::o;47280:512::-;47428:62;47445:4;47460:15;47478:11;47428:8;:62::i;:::-;47531:15;:32;;;47571:9;47604:4;47624:11;47650:1;47693;47736:7;:5;:7::i;:::-;47758:15;47531:253;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;47280:512;;:::o;42904:320::-;42961:1;42950:7;;:12;:34;;;;;42983:1;42966:13;;:18;42950:34;42947:46;;;42986:7;;42947:46;43031:7;;43013:15;:25;;;;43071:11;;43049:19;:33;;;;43117:13;;43093:21;:37;;;;43161:1;43151:7;:11;;;;43187:1;43173:11;:15;;;;43215:1;43199:13;:17;;;;42904:320;:::o;49913:617::-;50016:15;50033:23;50058:12;50072:23;50097:12;50111:18;50131:16;50151:19;50162:7;50151:10;:19::i;:::-;50015:155;;;;;;;;;;;;;;50199:28;50219:7;50199;:15;50207:6;50199:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;50181:7;:15;50189:6;50181:15;;;;;;;;;;;;;;;:46;;;;50256:28;50276:7;50256;:15;50264:6;50256:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;50238:7;:15;50246:6;50238:15;;;;;;;;;;;;;;;:46;;;;50316:39;50339:15;50316:7;:18;50324:9;50316:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;50295:7;:18;50303:9;50295:18;;;;;;;;;;;;;;;:60;;;;50369:26;50384:10;50369:14;:26::i;:::-;50406:22;50419:8;50406:12;:22::i;:::-;50439:23;50451:4;50457;50439:11;:23::i;:::-;50495:9;50478:44;;50487:6;50478:44;;;50506:15;50478:44;;;;;;:::i;:::-;;;;;;;;50004:526;;;;;;;49913:617;;;:::o;49270:637::-;49371:15;49388:23;49413:12;49427:23;49452:12;49466:18;49486:16;49506:19;49517:7;49506:10;:19::i;:::-;49370:155;;;;;;;;;;;;;;49554:28;49574:7;49554;:15;49562:6;49554:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;49536:7;:15;49544:6;49536:15;;;;;;;;;;;;;;;:46;;;;49614:39;49637:15;49614:7;:18;49622:9;49614:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;49593:7;:18;49601:9;49593:18;;;;;;;;;;;;;;;:60;;;;49685:39;49708:15;49685:7;:18;49693:9;49685:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;49664:7;:18;49672:9;49664:18;;;;;;;;;;;;;;;:60;;;;49746:26;49761:10;49746:14;:26::i;:::-;49783:22;49796:8;49783:12;:22::i;:::-;49816:23;49828:4;49834;49816:11;:23::i;:::-;49872:9;49855:44;;49864:6;49855:44;;;49883:15;49855:44;;;;;;:::i;:::-;;;;;;;;49359:548;;;;;;;49270:637;;;:::o;48711:553::-;48810:15;48827:23;48852:12;48866:23;48891:12;48905:18;48925:16;48945:19;48956:7;48945:10;:19::i;:::-;48809:155;;;;;;;;;;;;;;48993:28;49013:7;48993;:15;49001:6;48993:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;48975:7;:15;48983:6;48975:15;;;;;;;;;;;;;;;:46;;;;49053:39;49076:15;49053:7;:18;49061:9;49053:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;49032:7;:18;49040:9;49032:18;;;;;;;;;;;;;;;:60;;;;49103:26;49118:10;49103:14;:26::i;:::-;49140:22;49153:8;49140:12;:22::i;:::-;49173:23;49185:4;49191;49173:11;:23::i;:::-;49229:9;49212:44;;49221:6;49212:44;;;49240:15;49212:44;;;;;;:::i;:::-;;;;;;;;48798:466;;;;;;;48711:553;;;:::o;37560:693::-;37663:15;37680:23;37705:12;37719:23;37744:12;37758:18;37778:16;37798:19;37809:7;37798:10;:19::i;:::-;37662:155;;;;;;;;;;;;;;37846:28;37866:7;37846;:15;37854:6;37846:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;37828:7;:15;37836:6;37828:15;;;;;;;;;;;;;;;:46;;;;37903:28;37923:7;37903;:15;37911:6;37903:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;37885:7;:15;37893:6;37885:15;;;;;;;;;;;;;;;:46;;;;37963:39;37986:15;37963:7;:18;37971:9;37963:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;37942:7;:18;37950:9;37942:18;;;;;;;;;;;;;;;:60;;;;38034:39;38057:15;38034:7;:18;38042:9;38034:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;38013:7;:18;38021:9;38013:18;;;;;;;;;;;;;;;:60;;;;38092:26;38107:10;38092:14;:26::i;:::-;38129:22;38142:8;38129:12;:22::i;:::-;38162:23;38174:4;38180;38162:11;:23::i;:::-;38218:9;38201:44;;38210:6;38201:44;;;38229:15;38201:44;;;;;;:::i;:::-;;;;;;;;37651:602;;;;;;;37560:693;;;:::o;43236:169::-;43290:15;;43280:7;:25;;;;43330:19;;43316:11;:33;;;;43376:21;;43360:13;:37;;;;43236:169::o;42398:154::-;42462:7;42489:55;42528:5;42489:20;42501:7;;42489;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;42482:62;;42398:154;;;:::o;42726:166::-;42796:7;42823:61;42868:5;42823:26;42835:13;;42823:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;42816:68;;42726:166;;;:::o;42558:162::-;42626:7;42653:59;42696:5;42653:24;42665:11;;42653:7;:11;;:24;;;;:::i;:::-;:28;;:59;;;;:::i;:::-;42646:66;;42558:162;;;:::o;41636:355::-;41699:19;41722:10;:8;:10::i;:::-;41699:33;;41743:18;41764:27;41779:11;41764:10;:14;;:27;;;;:::i;:::-;41743:48;;41827:38;41854:10;41827:7;:22;41843:4;41827:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;41802:7;:22;41818:4;41802:22;;;;;;;;;;;;;;;:63;;;;41879:11;:26;41899:4;41879:26;;;;;;;;;;;;;;;;;;;;;;;;;41876:107;;;41945:38;41972:10;41945:7;:22;41961:4;41945:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;41920:7;:22;41936:4;41920:22;;;;;;;;;;;;;;;:63;;;;41876:107;41688:303;;41636:355;:::o;42003:383::-;42062:19;42085:10;:8;:10::i;:::-;42062:33;;42106:16;42125:25;42138:11;42125:8;:12;;:25;;;;:::i;:::-;42106:44;;42194;42229:8;42194:7;:30;42202:21;;;;;;;;;;;42194:30;;;;;;;;;;;;;;;;:34;;:44;;;;:::i;:::-;42161:7;:30;42169:21;;;;;;;;;;;42161:30;;;;;;;;;;;;;;;:77;;;;42252:11;:34;42264:21;;;;;;;;;;;42252:34;;;;;;;;;;;;;;;;;;;;;;;;;42249:129;;;42334:44;42369:8;42334:7;:30;42342:21;;;;;;;;;;;42334:30;;;;;;;;;;;;;;;;:34;;:44;;;;:::i;:::-;42301:7;:30;42309:21;;;;;;;;;;;42301:30;;;;;;;;;;;;;;;:77;;;;42249:129;42051:335;;42003:383;:::o;39320:147::-;39398:17;39410:4;39398:7;;:11;;:17;;;;:::i;:::-;39388:7;:27;;;;39439:20;39454:4;39439:10;;:14;;:20;;;;:::i;:::-;39426:10;:33;;;;39320:147;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;585:143;;;;:::o;734:329::-;793:6;842:2;830:9;821:7;817:23;813:32;810:119;;;848:79;;:::i;:::-;810:119;968:1;993:53;1038:7;1029:6;1018:9;1014:22;993:53;:::i;:::-;983:63;;939:117;734:329;;;;:::o;1069:351::-;1139:6;1188:2;1176:9;1167:7;1163:23;1159:32;1156:119;;;1194:79;;:::i;:::-;1156:119;1314:1;1339:64;1395:7;1386:6;1375:9;1371:22;1339:64;:::i;:::-;1329:74;;1285:128;1069:351;;;;:::o;1426:474::-;1494:6;1502;1551:2;1539:9;1530:7;1526:23;1522:32;1519:119;;;1557:79;;:::i;:::-;1519:119;1677:1;1702:53;1747:7;1738:6;1727:9;1723:22;1702:53;:::i;:::-;1692:63;;1648:117;1804:2;1830:53;1875:7;1866:6;1855:9;1851:22;1830:53;:::i;:::-;1820:63;;1775:118;1426:474;;;;;:::o;1906:619::-;1983:6;1991;1999;2048:2;2036:9;2027:7;2023:23;2019:32;2016:119;;;2054:79;;:::i;:::-;2016:119;2174:1;2199:53;2244:7;2235:6;2224:9;2220:22;2199:53;:::i;:::-;2189:63;;2145:117;2301:2;2327:53;2372:7;2363:6;2352:9;2348:22;2327:53;:::i;:::-;2317:63;;2272:118;2429:2;2455:53;2500:7;2491:6;2480:9;2476:22;2455:53;:::i;:::-;2445:63;;2400:118;1906:619;;;;;:::o;2531:474::-;2599:6;2607;2656:2;2644:9;2635:7;2631:23;2627:32;2624:119;;;2662:79;;:::i;:::-;2624:119;2782:1;2807:53;2852:7;2843:6;2832:9;2828:22;2807:53;:::i;:::-;2797:63;;2753:117;2909:2;2935:53;2980:7;2971:6;2960:9;2956:22;2935:53;:::i;:::-;2925:63;;2880:118;2531:474;;;;;:::o;3011:323::-;3067:6;3116:2;3104:9;3095:7;3091:23;3087:32;3084:119;;;3122:79;;:::i;:::-;3084:119;3242:1;3267:50;3309:7;3300:6;3289:9;3285:22;3267:50;:::i;:::-;3257:60;;3213:114;3011:323;;;;:::o;3340:329::-;3399:6;3448:2;3436:9;3427:7;3423:23;3419:32;3416:119;;;3454:79;;:::i;:::-;3416:119;3574:1;3599:53;3644:7;3635:6;3624:9;3620:22;3599:53;:::i;:::-;3589:63;;3545:117;3340:329;;;;:::o;3675:468::-;3740:6;3748;3797:2;3785:9;3776:7;3772:23;3768:32;3765:119;;;3803:79;;:::i;:::-;3765:119;3923:1;3948:53;3993:7;3984:6;3973:9;3969:22;3948:53;:::i;:::-;3938:63;;3894:117;4050:2;4076:50;4118:7;4109:6;4098:9;4094:22;4076:50;:::i;:::-;4066:60;;4021:115;3675:468;;;;;:::o;4149:663::-;4237:6;4245;4253;4302:2;4290:9;4281:7;4277:23;4273:32;4270:119;;;4308:79;;:::i;:::-;4270:119;4428:1;4453:64;4509:7;4500:6;4489:9;4485:22;4453:64;:::i;:::-;4443:74;;4399:128;4566:2;4592:64;4648:7;4639:6;4628:9;4624:22;4592:64;:::i;:::-;4582:74;;4537:129;4705:2;4731:64;4787:7;4778:6;4767:9;4763:22;4731:64;:::i;:::-;4721:74;;4676:129;4149:663;;;;;:::o;4818:179::-;4887:10;4908:46;4950:3;4942:6;4908:46;:::i;:::-;4986:4;4981:3;4977:14;4963:28;;4818:179;;;;:::o;5003:108::-;5080:24;5098:5;5080:24;:::i;:::-;5075:3;5068:37;5003:108;;:::o;5117:118::-;5204:24;5222:5;5204:24;:::i;:::-;5199:3;5192:37;5117:118;;:::o;5271:732::-;5390:3;5419:54;5467:5;5419:54;:::i;:::-;5489:86;5568:6;5563:3;5489:86;:::i;:::-;5482:93;;5599:56;5649:5;5599:56;:::i;:::-;5678:7;5709:1;5694:284;5719:6;5716:1;5713:13;5694:284;;;5795:6;5789:13;5822:63;5881:3;5866:13;5822:63;:::i;:::-;5815:70;;5908:60;5961:6;5908:60;:::i;:::-;5898:70;;5754:224;5741:1;5738;5734:9;5729:14;;5694:284;;;5698:14;5994:3;5987:10;;5395:608;;;5271:732;;;;:::o;6009:109::-;6090:21;6105:5;6090:21;:::i;:::-;6085:3;6078:34;6009:109;;:::o;6124:185::-;6238:64;6296:5;6238:64;:::i;:::-;6233:3;6226:77;6124:185;;:::o;6315:147::-;6410:45;6449:5;6410:45;:::i;:::-;6405:3;6398:58;6315:147;;:::o;6468:364::-;6556:3;6584:39;6617:5;6584:39;:::i;:::-;6639:71;6703:6;6698:3;6639:71;:::i;:::-;6632:78;;6719:52;6764:6;6759:3;6752:4;6745:5;6741:16;6719:52;:::i;:::-;6796:29;6818:6;6796:29;:::i;:::-;6791:3;6787:39;6780:46;;6560:272;6468:364;;;;:::o;6838:366::-;6980:3;7001:67;7065:2;7060:3;7001:67;:::i;:::-;6994:74;;7077:93;7166:3;7077:93;:::i;:::-;7195:2;7190:3;7186:12;7179:19;;6838:366;;;:::o;7210:::-;7352:3;7373:67;7437:2;7432:3;7373:67;:::i;:::-;7366:74;;7449:93;7538:3;7449:93;:::i;:::-;7567:2;7562:3;7558:12;7551:19;;7210:366;;;:::o;7582:::-;7724:3;7745:67;7809:2;7804:3;7745:67;:::i;:::-;7738:74;;7821:93;7910:3;7821:93;:::i;:::-;7939:2;7934:3;7930:12;7923:19;;7582:366;;;:::o;7954:::-;8096:3;8117:67;8181:2;8176:3;8117:67;:::i;:::-;8110:74;;8193:93;8282:3;8193:93;:::i;:::-;8311:2;8306:3;8302:12;8295:19;;7954:366;;;:::o;8326:::-;8468:3;8489:67;8553:2;8548:3;8489:67;:::i;:::-;8482:74;;8565:93;8654:3;8565:93;:::i;:::-;8683:2;8678:3;8674:12;8667:19;;8326:366;;;:::o;8698:::-;8840:3;8861:67;8925:2;8920:3;8861:67;:::i;:::-;8854:74;;8937:93;9026:3;8937:93;:::i;:::-;9055:2;9050:3;9046:12;9039:19;;8698:366;;;:::o;9070:::-;9212:3;9233:67;9297:2;9292:3;9233:67;:::i;:::-;9226:74;;9309:93;9398:3;9309:93;:::i;:::-;9427:2;9422:3;9418:12;9411:19;;9070:366;;;:::o;9442:::-;9584:3;9605:67;9669:2;9664:3;9605:67;:::i;:::-;9598:74;;9681:93;9770:3;9681:93;:::i;:::-;9799:2;9794:3;9790:12;9783:19;;9442:366;;;:::o;9814:::-;9956:3;9977:67;10041:2;10036:3;9977:67;:::i;:::-;9970:74;;10053:93;10142:3;10053:93;:::i;:::-;10171:2;10166:3;10162:12;10155:19;;9814:366;;;:::o;10186:::-;10328:3;10349:67;10413:2;10408:3;10349:67;:::i;:::-;10342:74;;10425:93;10514:3;10425:93;:::i;:::-;10543:2;10538:3;10534:12;10527:19;;10186:366;;;:::o;10558:::-;10700:3;10721:67;10785:2;10780:3;10721:67;:::i;:::-;10714:74;;10797:93;10886:3;10797:93;:::i;:::-;10915:2;10910:3;10906:12;10899:19;;10558:366;;;:::o;10930:::-;11072:3;11093:67;11157:2;11152:3;11093:67;:::i;:::-;11086:74;;11169:93;11258:3;11169:93;:::i;:::-;11287:2;11282:3;11278:12;11271:19;;10930:366;;;:::o;11302:::-;11444:3;11465:67;11529:2;11524:3;11465:67;:::i;:::-;11458:74;;11541:93;11630:3;11541:93;:::i;:::-;11659:2;11654:3;11650:12;11643:19;;11302:366;;;:::o;11674:118::-;11761:24;11779:5;11761:24;:::i;:::-;11756:3;11749:37;11674:118;;:::o;11798:112::-;11881:22;11897:5;11881:22;:::i;:::-;11876:3;11869:35;11798:112;;:::o;11916:222::-;12009:4;12047:2;12036:9;12032:18;12024:26;;12060:71;12128:1;12117:9;12113:17;12104:6;12060:71;:::i;:::-;11916:222;;;;:::o;12144:807::-;12393:4;12431:3;12420:9;12416:19;12408:27;;12445:71;12513:1;12502:9;12498:17;12489:6;12445:71;:::i;:::-;12526:72;12594:2;12583:9;12579:18;12570:6;12526:72;:::i;:::-;12608:80;12684:2;12673:9;12669:18;12660:6;12608:80;:::i;:::-;12698;12774:2;12763:9;12759:18;12750:6;12698:80;:::i;:::-;12788:73;12856:3;12845:9;12841:19;12832:6;12788:73;:::i;:::-;12871;12939:3;12928:9;12924:19;12915:6;12871:73;:::i;:::-;12144:807;;;;;;;;;:::o;12957:210::-;13044:4;13082:2;13071:9;13067:18;13059:26;;13095:65;13157:1;13146:9;13142:17;13133:6;13095:65;:::i;:::-;12957:210;;;;:::o;13173:276::-;13293:4;13331:2;13320:9;13316:18;13308:26;;13344:98;13439:1;13428:9;13424:17;13415:6;13344:98;:::i;:::-;13173:276;;;;:::o;13455:313::-;13568:4;13606:2;13595:9;13591:18;13583:26;;13655:9;13649:4;13645:20;13641:1;13630:9;13626:17;13619:47;13683:78;13756:4;13747:6;13683:78;:::i;:::-;13675:86;;13455:313;;;;:::o;13774:419::-;13940:4;13978:2;13967:9;13963:18;13955:26;;14027:9;14021:4;14017:20;14013:1;14002:9;13998:17;13991:47;14055:131;14181:4;14055:131;:::i;:::-;14047:139;;13774:419;;;:::o;14199:::-;14365:4;14403:2;14392:9;14388:18;14380:26;;14452:9;14446:4;14442:20;14438:1;14427:9;14423:17;14416:47;14480:131;14606:4;14480:131;:::i;:::-;14472:139;;14199:419;;;:::o;14624:::-;14790:4;14828:2;14817:9;14813:18;14805:26;;14877:9;14871:4;14867:20;14863:1;14852:9;14848:17;14841:47;14905:131;15031:4;14905:131;:::i;:::-;14897:139;;14624:419;;;:::o;15049:::-;15215:4;15253:2;15242:9;15238:18;15230:26;;15302:9;15296:4;15292:20;15288:1;15277:9;15273:17;15266:47;15330:131;15456:4;15330:131;:::i;:::-;15322:139;;15049:419;;;:::o;15474:::-;15640:4;15678:2;15667:9;15663:18;15655:26;;15727:9;15721:4;15717:20;15713:1;15702:9;15698:17;15691:47;15755:131;15881:4;15755:131;:::i;:::-;15747:139;;15474:419;;;:::o;15899:::-;16065:4;16103:2;16092:9;16088:18;16080:26;;16152:9;16146:4;16142:20;16138:1;16127:9;16123:17;16116:47;16180:131;16306:4;16180:131;:::i;:::-;16172:139;;15899:419;;;:::o;16324:::-;16490:4;16528:2;16517:9;16513:18;16505:26;;16577:9;16571:4;16567:20;16563:1;16552:9;16548:17;16541:47;16605:131;16731:4;16605:131;:::i;:::-;16597:139;;16324:419;;;:::o;16749:::-;16915:4;16953:2;16942:9;16938:18;16930:26;;17002:9;16996:4;16992:20;16988:1;16977:9;16973:17;16966:47;17030:131;17156:4;17030:131;:::i;:::-;17022:139;;16749:419;;;:::o;17174:::-;17340:4;17378:2;17367:9;17363:18;17355:26;;17427:9;17421:4;17417:20;17413:1;17402:9;17398:17;17391:47;17455:131;17581:4;17455:131;:::i;:::-;17447:139;;17174:419;;;:::o;17599:::-;17765:4;17803:2;17792:9;17788:18;17780:26;;17852:9;17846:4;17842:20;17838:1;17827:9;17823:17;17816:47;17880:131;18006:4;17880:131;:::i;:::-;17872:139;;17599:419;;;:::o;18024:::-;18190:4;18228:2;18217:9;18213:18;18205:26;;18277:9;18271:4;18267:20;18263:1;18252:9;18248:17;18241:47;18305:131;18431:4;18305:131;:::i;:::-;18297:139;;18024:419;;;:::o;18449:::-;18615:4;18653:2;18642:9;18638:18;18630:26;;18702:9;18696:4;18692:20;18688:1;18677:9;18673:17;18666:47;18730:131;18856:4;18730:131;:::i;:::-;18722:139;;18449:419;;;:::o;18874:::-;19040:4;19078:2;19067:9;19063:18;19055:26;;19127:9;19121:4;19117:20;19113:1;19102:9;19098:17;19091:47;19155:131;19281:4;19155:131;:::i;:::-;19147:139;;18874:419;;;:::o;19299:222::-;19392:4;19430:2;19419:9;19415:18;19407:26;;19443:71;19511:1;19500:9;19496:17;19487:6;19443:71;:::i;:::-;19299:222;;;;:::o;19527:831::-;19790:4;19828:3;19817:9;19813:19;19805:27;;19842:71;19910:1;19899:9;19895:17;19886:6;19842:71;:::i;:::-;19923:80;19999:2;19988:9;19984:18;19975:6;19923:80;:::i;:::-;20050:9;20044:4;20040:20;20035:2;20024:9;20020:18;20013:48;20078:108;20181:4;20172:6;20078:108;:::i;:::-;20070:116;;20196:72;20264:2;20253:9;20249:18;20240:6;20196:72;:::i;:::-;20278:73;20346:3;20335:9;20331:19;20322:6;20278:73;:::i;:::-;19527:831;;;;;;;;:::o;20364:442::-;20513:4;20551:2;20540:9;20536:18;20528:26;;20564:71;20632:1;20621:9;20617:17;20608:6;20564:71;:::i;:::-;20645:72;20713:2;20702:9;20698:18;20689:6;20645:72;:::i;:::-;20727;20795:2;20784:9;20780:18;20771:6;20727:72;:::i;:::-;20364:442;;;;;;:::o;20812:214::-;20901:4;20939:2;20928:9;20924:18;20916:26;;20952:67;21016:1;21005:9;21001:17;20992:6;20952:67;:::i;:::-;20812:214;;;;:::o;21113:132::-;21180:4;21203:3;21195:11;;21233:4;21228:3;21224:14;21216:22;;21113:132;;;:::o;21251:114::-;21318:6;21352:5;21346:12;21336:22;;21251:114;;;:::o;21371:99::-;21423:6;21457:5;21451:12;21441:22;;21371:99;;;:::o;21476:113::-;21546:4;21578;21573:3;21569:14;21561:22;;21476:113;;;:::o;21595:184::-;21694:11;21728:6;21723:3;21716:19;21768:4;21763:3;21759:14;21744:29;;21595:184;;;;:::o;21785:169::-;21869:11;21903:6;21898:3;21891:19;21943:4;21938:3;21934:14;21919:29;;21785:169;;;;:::o;21960:305::-;22000:3;22019:20;22037:1;22019:20;:::i;:::-;22014:25;;22053:20;22071:1;22053:20;:::i;:::-;22048:25;;22207:1;22139:66;22135:74;22132:1;22129:81;22126:107;;;22213:18;;:::i;:::-;22126:107;22257:1;22254;22250:9;22243:16;;21960:305;;;;:::o;22271:185::-;22311:1;22328:20;22346:1;22328:20;:::i;:::-;22323:25;;22362:20;22380:1;22362:20;:::i;:::-;22357:25;;22401:1;22391:35;;22406:18;;:::i;:::-;22391:35;22448:1;22445;22441:9;22436:14;;22271:185;;;;:::o;22462:348::-;22502:7;22525:20;22543:1;22525:20;:::i;:::-;22520:25;;22559:20;22577:1;22559:20;:::i;:::-;22554:25;;22747:1;22679:66;22675:74;22672:1;22669:81;22664:1;22657:9;22650:17;22646:105;22643:131;;;22754:18;;:::i;:::-;22643:131;22802:1;22799;22795:9;22784:20;;22462:348;;;;:::o;22816:191::-;22856:4;22876:20;22894:1;22876:20;:::i;:::-;22871:25;;22910:20;22928:1;22910:20;:::i;:::-;22905:25;;22949:1;22946;22943:8;22940:34;;;22954:18;;:::i;:::-;22940:34;22999:1;22996;22992:9;22984:17;;22816:191;;;;:::o;23013:96::-;23050:7;23079:24;23097:5;23079:24;:::i;:::-;23068:35;;23013:96;;;:::o;23115:90::-;23149:7;23192:5;23185:13;23178:21;23167:32;;23115:90;;;:::o;23211:126::-;23248:7;23288:42;23281:5;23277:54;23266:65;;23211:126;;;:::o;23343:77::-;23380:7;23409:5;23398:16;;23343:77;;;:::o;23426:86::-;23461:7;23501:4;23494:5;23490:16;23479:27;;23426:86;;;:::o;23518:153::-;23595:9;23628:37;23659:5;23628:37;:::i;:::-;23615:50;;23518:153;;;:::o;23677:121::-;23735:9;23768:24;23786:5;23768:24;:::i;:::-;23755:37;;23677:121;;;:::o;23804:126::-;23854:9;23887:37;23918:5;23887:37;:::i;:::-;23874:50;;23804:126;;;:::o;23936:113::-;23986:9;24019:24;24037:5;24019:24;:::i;:::-;24006:37;;23936:113;;;:::o;24055:307::-;24123:1;24133:113;24147:6;24144:1;24141:13;24133:113;;;24232:1;24227:3;24223:11;24217:18;24213:1;24208:3;24204:11;24197:39;24169:2;24166:1;24162:10;24157:15;;24133:113;;;24264:6;24261:1;24258:13;24255:101;;;24344:1;24335:6;24330:3;24326:16;24319:27;24255:101;24104:258;24055:307;;;:::o;24368:320::-;24412:6;24449:1;24443:4;24439:12;24429:22;;24496:1;24490:4;24486:12;24517:18;24507:81;;24573:4;24565:6;24561:17;24551:27;;24507:81;24635:2;24627:6;24624:14;24604:18;24601:38;24598:84;;;24654:18;;:::i;:::-;24598:84;24419:269;24368:320;;;:::o;24694:233::-;24733:3;24756:24;24774:5;24756:24;:::i;:::-;24747:33;;24802:66;24795:5;24792:77;24789:103;;;24872:18;;:::i;:::-;24789:103;24919:1;24912:5;24908:13;24901:20;;24694:233;;;:::o;24933:180::-;24981:77;24978:1;24971:88;25078:4;25075:1;25068:15;25102:4;25099:1;25092:15;25119:180;25167:77;25164:1;25157:88;25264:4;25261:1;25254:15;25288:4;25285:1;25278:15;25305:180;25353:77;25350:1;25343:88;25450:4;25447:1;25440:15;25474:4;25471:1;25464:15;25491:180;25539:77;25536:1;25529:88;25636:4;25633:1;25626:15;25660:4;25657:1;25650:15;25677:180;25725:77;25722:1;25715:88;25822:4;25819:1;25812:15;25846:4;25843:1;25836:15;25863:180;25911:77;25908:1;25901:88;26008:4;26005:1;25998:15;26032:4;26029:1;26022:15;26172:117;26281:1;26278;26271:12;26295:102;26336:6;26387:2;26383:7;26378:2;26371:5;26367:14;26363:28;26353:38;;26295:102;;;:::o;26403:222::-;26543:34;26539:1;26531:6;26527:14;26520:58;26612:5;26607:2;26599:6;26595:15;26588:30;26403:222;:::o;26631:229::-;26771:34;26767:1;26759:6;26755:14;26748:58;26840:12;26835:2;26827:6;26823:15;26816:37;26631:229;:::o;26866:225::-;27006:34;27002:1;26994:6;26990:14;26983:58;27075:8;27070:2;27062:6;27058:15;27051:33;26866:225;:::o;27097:221::-;27237:34;27233:1;27225:6;27221:14;27214:58;27306:4;27301:2;27293:6;27289:15;27282:29;27097:221;:::o;27324:177::-;27464:29;27460:1;27452:6;27448:14;27441:53;27324:177;:::o;27507:::-;27647:29;27643:1;27635:6;27631:14;27624:53;27507:177;:::o;27690:181::-;27830:33;27826:1;27818:6;27814:14;27807:57;27690:181;:::o;27877:227::-;28017:34;28013:1;28005:6;28001:14;27994:58;28086:10;28081:2;28073:6;28069:15;28062:35;27877:227;:::o;28110:182::-;28250:34;28246:1;28238:6;28234:14;28227:58;28110:182;:::o;28298:228::-;28438:34;28434:1;28426:6;28422:14;28415:58;28507:11;28502:2;28494:6;28490:15;28483:36;28298:228;:::o;28532:224::-;28672:34;28668:1;28660:6;28656:14;28649:58;28741:7;28736:2;28728:6;28724:15;28717:32;28532:224;:::o;28762:223::-;28902:34;28898:1;28890:6;28886:14;28879:58;28971:6;28966:2;28958:6;28954:15;28947:31;28762:223;:::o;28991:231::-;29131:34;29127:1;29119:6;29115:14;29108:58;29200:14;29195:2;29187:6;29183:15;29176:39;28991:231;:::o;29228:122::-;29301:24;29319:5;29301:24;:::i;:::-;29294:5;29291:35;29281:63;;29340:1;29337;29330:12;29281:63;29228:122;:::o;29356:116::-;29426:21;29441:5;29426:21;:::i;:::-;29419:5;29416:32;29406:60;;29462:1;29459;29452:12;29406:60;29356:116;:::o;29478:122::-;29551:24;29569:5;29551:24;:::i;:::-;29544:5;29541:35;29531:63;;29590:1;29587;29580:12;29531:63;29478:122;:::o
Swarm Source
ipfs://a186832116b34dfc18884f7139ed091fa72f22e202405a18ab9e89ecb1346e51
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.