ERC-20
Overview
Max Total Supply
1,000,000,000,000 bORB
Holders
20
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BORB
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-06 */ /** *Submitted for verification at Etherscan.io on 2022-09-06 */ // https://t.me/orberc // SPDX-License-Identifier: MIT pragma solidity 0.8.13; 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; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } 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 cal ler's tokens. * * Returns a boolean value indicating whether the op eration succeeded. * * IMPORTANT: Beware that changing an allowan ce 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 spe nder's allowance to 0 and set the * desired valu afterwards: * https://github.co m/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` toke ns from `sender` to `recipient` using the * allowance mechanism. `am ount` 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 `v alue` tokens are moved from one account (`from`) to * anot her (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the all owance of a `spender` for an `owner` is set by * a call to {approve}. `va lue` 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); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } 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"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } 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); } } 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; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract BORB is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; uint256 public swapTokensAtAmount; uint256 public maxTransactionAmount; uint256 public liquidityActiveBlock = 0; // 0 means liquidity is not active yet uint256 public tradingActiveBlock = 0; // 0 means trading is not active bool public tradingActive = false; bool public limitsInEffect = true; bool public swapEnabled = false; mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch address public burnWallet = 0x000000000000000000000000000000000000dEaD; address public burnTokenAddress = 0xDF8b66406eb438c708475231d9a77bA668c16AE7; address public marketingWallet = 0x1B2d69e10ac52755353b84Fd9c3BBDEc04e00EA0; uint256 public constant feeDivisor = 1000; uint256 public tokenburnBuyFee; uint256 public marketingBuyFee; uint256 public totalBuyFees; uint256 public tokenburnSellFee; uint256 public marketingSellFee; uint256 public totalSellFees; uint256 public tokensForFees; uint256 public tokensForMarketing; uint256 public tokensForBurn; uint256 public totalEthSpentBurning; bool public transferDelayEnabled = true; uint256 public maxWallet; mapping (address => bool) private _blacklist; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; mapping (address => bool) public automatedMarketMakerPairs; event ExcludeFromFees(address indexed account, bool isExcluded); event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); constructor() ERC20("bORB", "bORB") { uint256 totalSupply = 1 * 1e12 * 1e18; swapTokensAtAmount = totalSupply * 1 / 10000; // 0.01% swap tokens amount maxTransactionAmount = totalSupply * 10 / 1000; // 1% maxTransactionAmountTxn maxWallet = totalSupply * 30 / 1000; // 3% maxWallet tokenburnBuyFee = 40; // 4%, being used to buy and burn ORB marketingBuyFee = 100; // 10% at launch, after that 2% totalBuyFees = 140; // 14% at launch, after that 6% tokenburnSellFee = 40; // 4%, all being used to buy and burn ORB marketingSellFee = 100; // 10% at launch, after that 2% totalSellFees = tokenburnSellFee + marketingSellFee; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _setAutomatedMarketMakerPair(_uniswapV2Pair, true); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(_uniswapV2Router), true); excludeFromFees(address(marketingWallet), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(address(marketingWallet), true); _createInitialSupply(address(owner()), totalSupply); } receive() external payable { } function enableTrading() external onlyOwner { require(!tradingActive, "Cannot re-enable trading"); tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateSellFees(uint256 _tokenburnSellFee, uint256 _marketingSellFee) external onlyOwner { tokenburnSellFee = _tokenburnSellFee; marketingSellFee = _marketingSellFee; totalSellFees = tokenburnSellFee; require(totalSellFees <= 150, "Must keep fees at 15% or less"); } function updateBuyFees(uint256 _tokenburnBuyFee, uint256 _marketingBuyFee) external onlyOwner { tokenburnBuyFee = _tokenburnBuyFee; marketingBuyFee = _marketingBuyFee; totalSellFees = tokenburnSellFee; require(totalSellFees <= 150, "Must keep fees at 15% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) external onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFees[accounts[i]] = excluded; } emit ExcludeMultipleAccountsFromFees(accounts, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The Uniswap pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) external view returns(bool) { return _isExcludedFromFees[account]; } 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"); require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens"); if(amount == 0) { super._transfer(from, to, 0); return; } if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active yet."); } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount+1*1e18, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount+1*1e18, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // no taxes on transfers (non buys/sells) if(takeFee){ // on sell take fees, purchase token and burn it if (automatedMarketMakerPairs[to] && totalSellFees > 0){ fees = amount.mul(totalSellFees).div(feeDivisor); tokensForFees += fees; tokensForMarketing += fees * marketingSellFee / totalSellFees; tokensForBurn += fees * tokenburnSellFee / totalSellFees; } // on buy else if(automatedMarketMakerPairs[from]) { fees = amount.mul(totalBuyFees).div(feeDivisor); tokensForFees += fees; tokensForMarketing += fees * marketingBuyFee / totalBuyFees; tokensForBurn += fees * tokenburnBuyFee / totalBuyFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } function burnTargetToken(uint256 ethAmountInWei, address BurnToken) internal { // generate the uniswap pair path of weth -> eth address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = BurnToken; // make the swap uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmountInWei}( 0, // accept any amount of Ethereum path, burnWallet, block.timestamp ); } function manualBurnToken(uint256 ethAmountInWei, address BurnToken) external onlyOwner { // generate the uniswap pair path of weth -> eth address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = BurnToken; // make the swap uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmountInWei}( 0, // accept any amount of Ethereum path, burnWallet, block.timestamp ); } function manualSwap() external onlyOwner { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForBurn + tokensForMarketing; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} uint256 amountToSwapForETH = contractBalance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance; uint256 ethForBurn = ethBalance.mul(tokensForBurn).div(totalTokensToSwap); // buy the ORB token and burn it burnTargetToken(ethForBurn, burnTokenAddress); totalEthSpentBurning += ethForBurn; // in gwei (success,) = address(marketingWallet).call{value: address(this).balance}(""); tokensForBurn = 0; tokensForMarketing = 0; tokensForFees = 0; } function changeAccountStatus(address[] memory bots_, bool status) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { _blacklist[bots_[i]] = status; } } function withdrawStuckEth() external onlyOwner { (bool success,) = address(msg.sender).call{value: address(this).balance}(""); require(success, "failed to withdraw"); } function serBurnTokenAddress(address _burnTokenAddress) external onlyOwner { require(_burnTokenAddress != address(0), "address cannot be 0"); burnTokenAddress = _burnTokenAddress; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","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":"tokensIntoLiqudity","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"burnTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"changeAccountStatus","outputs":[],"stateMutability":"nonpayable","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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmountInWei","type":"uint256"},{"internalType":"address","name":"BurnToken","type":"address"}],"name":"manualBurnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_burnTokenAddress","type":"address"}],"name":"serBurnTokenAddress","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":[],"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":"tokenburnBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenburnSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForFees","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":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEthSpentBurning","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","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":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"uint256","name":"_tokenburnBuyFee","type":"uint256"},{"internalType":"uint256","name":"_marketingBuyFee","type":"uint256"}],"name":"updateBuyFees","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":"uint256","name":"_tokenburnSellFee","type":"uint256"},{"internalType":"uint256","name":"_marketingSellFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600060085560006009556000600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff0219169083151502179055506000600a60026101000a81548160ff02191690831515021790555061dead600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073df8b66406eb438c708475231d9a77ba668c16ae7600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731b2d69e10ac52755353b84fd9c3bbdec04e00ea0600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601960006101000a81548160ff0219169083151502179055503480156200017457600080fd5b506040518060400160405280600481526020017f624f5242000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f624f5242000000000000000000000000000000000000000000000000000000008152508160039080519060200190620001f992919062000b29565b5080600490805190602001906200021292919062000b29565b505050600062000227620006bc60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060006c0c9f2c9cd04674edea400000009050612710600182620002ea919062000c12565b620002f6919062000ca2565b6006819055506103e8600a826200030e919062000c12565b6200031a919062000ca2565b6007819055506103e8601e8262000332919062000c12565b6200033e919062000ca2565b601a819055506028600f819055506064601081905550608c601181905550602860128190555060646013819055506013546012546200037e919062000cda565b6014819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000411919062000da1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000479573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049f919062000da1565b6040518363ffffffff1660e01b8152600401620004be92919062000de4565b6020604051808303816000875af1158015620004de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000504919062000da1565b90508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505062000581816001620006c460201b60201c565b620005a3620005956200076560201b60201c565b60016200078f60201b60201c565b620005b63060016200078f60201b60201c565b620005cb61dead60016200078f60201b60201c565b620005de8260016200078f60201b60201c565b62000613600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200078f60201b60201c565b62000635620006276200076560201b60201c565b6001620008dc60201b60201c565b62000648306001620008dc60201b60201c565b6200065d61dead6001620008dc60201b60201c565b62000692600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008dc60201b60201c565b620006b3620006a66200076560201b60201c565b84620009d960201b60201c565b50505062000fd2565b600033905090565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200079f620006bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000831576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008289062000e72565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008d0919062000eb1565b60405180910390a25050565b620008ec620006bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200097e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009759062000e72565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a429062000f1e565b60405180910390fd5b806002600082825462000a5f919062000cda565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000ab6919062000cda565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b1d919062000f51565b60405180910390a35050565b82805462000b379062000f9d565b90600052602060002090601f01602090048101928262000b5b576000855562000ba7565b82601f1062000b7657805160ff191683800117855562000ba7565b8280016001018555821562000ba7579182015b8281111562000ba657825182559160200191906001019062000b89565b5b50905062000bb6919062000bba565b5090565b5b8082111562000bd557600081600090555060010162000bbb565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c1f8262000bd9565b915062000c2c8362000bd9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c685762000c6762000be3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000caf8262000bd9565b915062000cbc8362000bd9565b92508262000ccf5762000cce62000c73565b5b828204905092915050565b600062000ce78262000bd9565b915062000cf48362000bd9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d2c5762000d2b62000be3565b5b828201905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d698262000d3c565b9050919050565b62000d7b8162000d5c565b811462000d8757600080fd5b50565b60008151905062000d9b8162000d70565b92915050565b60006020828403121562000dba5762000db962000d37565b5b600062000dca8482850162000d8a565b91505092915050565b62000dde8162000d5c565b82525050565b600060408201905062000dfb600083018562000dd3565b62000e0a602083018462000dd3565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e5a60208362000e11565b915062000e678262000e22565b602082019050919050565b6000602082019050818103600083015262000e8d8162000e4b565b9050919050565b60008115159050919050565b62000eab8162000e94565b82525050565b600060208201905062000ec8600083018462000ea0565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f06601f8362000e11565b915062000f138262000ece565b602082019050919050565b6000602082019050818103600083015262000f398162000ef7565b9050919050565b62000f4b8162000bd9565b82525050565b600060208201905062000f68600083018462000f40565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000fb657607f821691505b60208210810362000fcc5762000fcb62000f6e565b5b50919050565b60805160a051615e456200103e600039600081816113d80152818161224d01526131f8015260008181610f8f01528181611bea01528181611d16015281816131a001528181613b5f01528181613c4001528181613c670152818161428b01526143b70152615e456000f3fe6080604052600436106103855760003560e01c80637df30749116101d1578063bbc0c74211610102578063dce484a0116100a0578063e88826921161006f578063e888269214610cef578063ee40166e14610d1a578063f2fde38b14610d45578063f8b45b0514610d6e5761038c565b8063dce484a014610c31578063dd62ed3e14610c5c578063e2f4560514610c99578063e7f444b314610cc45761038c565b8063c492f046116100dc578063c492f04614610b87578063c876d0b914610bb0578063c8c8ebe414610bdb578063d0a3981414610c065761038c565b8063bbc0c74214610b0a578063c024666814610b35578063c18bc19514610b5e5761038c565b8063975aa8bf1161016f578063a457c2d711610149578063a457c2d714610a28578063a9059cbb14610a65578063b62496f514610aa2578063b9e9370014610adf5761038c565b8063975aa8bf146109ab5780639a36f932146109d45780639a7a23d6146109ff5761038c565b80638a8c523c116101ab5780638a8c523c146109155780638da5cb5b1461092c578063924de9b71461095757806395d89b41146109805761038c565b80637df30749146108aa5780637fa787ba146108d557806380363a38146108ec5761038c565b8063313ce567116102b657806366ca9b8311610254578063715018a611610223578063715018a614610814578063751039fc1461082b5780637571336a1461085657806375f0a8741461087f5761038c565b806366ca9b831461075857806368078952146107815780636ddd1713146107ac57806370a08231146107d75761038c565b806349bd5a5e1161029057806349bd5a5e146106ae5780634a62bb65146106d95780634fbee1931461070457806351bc3c85146107415761038c565b8063313ce5671461061b57806339509351146106465780633f8a6204146106835761038c565b806317533bca116103235780631f3fed8f116102fd5780631f3fed8f1461055f578063203e727e1461058a57806323b872dd146105b3578063242d632a146105f05761038c565b806317533bca146104e057806318160ddd146105095780631d777856146105345761038c565b8063095ea7b31161035f578063095ea7b3146104105780630f4432e31461044d57806310d5de53146104785780631694505e146104b55761038c565b806302dbd8f81461039157806306228749146103ba57806306fdde03146103e55761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103b860048036038101906103b3919061451c565b610d99565b005b3480156103c657600080fd5b506103cf610e91565b6040516103dc919061459d565b60405180910390f35b3480156103f157600080fd5b506103fa610eb7565b6040516104079190614651565b60405180910390f35b34801561041c57600080fd5b506104376004803603810190610432919061469f565b610f49565b60405161044491906146fa565b60405180910390f35b34801561045957600080fd5b50610462610f67565b60405161046f9190614724565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a919061473f565b610f6d565b6040516104ac91906146fa565b60405180910390f35b3480156104c157600080fd5b506104ca610f8d565b6040516104d791906147cb565b60405180910390f35b3480156104ec57600080fd5b506105076004803603810190610502919061495a565b610fb1565b005b34801561051557600080fd5b5061051e6110dd565b60405161052b9190614724565b60405180910390f35b34801561054057600080fd5b506105496110e7565b6040516105569190614724565b60405180910390f35b34801561056b57600080fd5b506105746110ed565b6040516105819190614724565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac91906149b6565b6110f3565b005b3480156105bf57600080fd5b506105da60048036038101906105d591906149e3565b61121d565b6040516105e791906146fa565b60405180910390f35b3480156105fc57600080fd5b50610605611315565b6040516106129190614724565b60405180910390f35b34801561062757600080fd5b5061063061131b565b60405161063d9190614a52565b60405180910390f35b34801561065257600080fd5b5061066d6004803603810190610668919061469f565b611324565b60405161067a91906146fa565b60405180910390f35b34801561068f57600080fd5b506106986113d0565b6040516106a59190614724565b60405180910390f35b3480156106ba57600080fd5b506106c36113d6565b6040516106d0919061459d565b60405180910390f35b3480156106e557600080fd5b506106ee6113fa565b6040516106fb91906146fa565b60405180910390f35b34801561071057600080fd5b5061072b6004803603810190610726919061473f565b61140d565b60405161073891906146fa565b60405180910390f35b34801561074d57600080fd5b50610756611463565b005b34801561076457600080fd5b5061077f600480360381019061077a919061451c565b611513565b005b34801561078d57600080fd5b5061079661160b565b6040516107a39190614724565b60405180910390f35b3480156107b857600080fd5b506107c1611611565b6040516107ce91906146fa565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f9919061473f565b611624565b60405161080b9190614724565b60405180910390f35b34801561082057600080fd5b5061082961166c565b005b34801561083757600080fd5b506108406117c4565b60405161084d91906146fa565b60405180910390f35b34801561086257600080fd5b5061087d60048036038101906108789190614a6d565b61187f565b005b34801561088b57600080fd5b50610894611971565b6040516108a1919061459d565b60405180910390f35b3480156108b657600080fd5b506108bf611997565b6040516108cc919061459d565b60405180910390f35b3480156108e157600080fd5b506108ea6119bd565b005b3480156108f857600080fd5b50610913600480360381019061090e9190614aad565b611b03565b005b34801561092157600080fd5b5061092a611dce565b005b34801561093857600080fd5b50610941611ef4565b60405161094e919061459d565b60405180910390f35b34801561096357600080fd5b5061097e60048036038101906109799190614aed565b611f1e565b005b34801561098c57600080fd5b50610995611fd2565b6040516109a29190614651565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd919061473f565b612064565b005b3480156109e057600080fd5b506109e96121ae565b6040516109f69190614724565b60405180910390f35b348015610a0b57600080fd5b50610a266004803603810190610a219190614a6d565b6121b4565b005b348015610a3457600080fd5b50610a4f6004803603810190610a4a919061469f565b6122e7565b604051610a5c91906146fa565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a87919061469f565b6123d2565b604051610a9991906146fa565b60405180910390f35b348015610aae57600080fd5b50610ac96004803603810190610ac4919061473f565b6123f0565b604051610ad691906146fa565b60405180910390f35b348015610aeb57600080fd5b50610af4612410565b604051610b019190614724565b60405180910390f35b348015610b1657600080fd5b50610b1f612416565b604051610b2c91906146fa565b60405180910390f35b348015610b4157600080fd5b50610b5c6004803603810190610b579190614a6d565b612429565b005b348015610b6a57600080fd5b50610b856004803603810190610b8091906149b6565b612569565b005b348015610b9357600080fd5b50610bae6004803603810190610ba99190614b75565b612693565b005b348015610bbc57600080fd5b50610bc561280a565b604051610bd291906146fa565b60405180910390f35b348015610be757600080fd5b50610bf061281d565b604051610bfd9190614724565b60405180910390f35b348015610c1257600080fd5b50610c1b612823565b604051610c289190614724565b60405180910390f35b348015610c3d57600080fd5b50610c46612829565b604051610c539190614724565b60405180910390f35b348015610c6857600080fd5b50610c836004803603810190610c7e9190614bd5565b61282f565b604051610c909190614724565b60405180910390f35b348015610ca557600080fd5b50610cae6128b6565b604051610cbb9190614724565b60405180910390f35b348015610cd057600080fd5b50610cd96128bc565b604051610ce69190614724565b60405180910390f35b348015610cfb57600080fd5b50610d046128c2565b604051610d119190614724565b60405180910390f35b348015610d2657600080fd5b50610d2f6128c8565b604051610d3c9190614724565b60405180910390f35b348015610d5157600080fd5b50610d6c6004803603810190610d67919061473f565b6128ce565b005b348015610d7a57600080fd5b50610d83612a94565b604051610d909190614724565b60405180910390f35b610da1612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2790614c61565b60405180910390fd5b816012819055508060138190555060125460148190555060966014541115610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8490614ccd565b60405180910390fd5b5050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054610ec690614d1c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef290614d1c565b8015610f3f5780601f10610f1457610100808354040283529160200191610f3f565b820191906000526020600020905b815481529060010190602001808311610f2257829003601f168201915b5050505050905090565b6000610f5d610f56612a9a565b8484612aa2565b6001905092915050565b60085481565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b610fb9612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103f90614c61565b60405180910390fd5b60005b82518110156110d85781601b600085848151811061106c5761106b614d4d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110d090614dab565b91505061104b565b505050565b6000600254905090565b60175481565b60165481565b6110fb612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118190614c61565b60405180910390fd5b670de0b6b3a76400006103e860016111a06110dd565b6111aa9190614df3565b6111b49190614e7c565b6111be9190614e7c565b811015611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790614f1f565b60405180910390fd5b670de0b6b3a7640000816112149190614df3565b60078190555050565b600061122a848484612c6b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611275612a9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90614fb1565b60405180910390fd5b61130985611301612a9a565b858403612aa2565b60019150509392505050565b600f5481565b60006012905090565b60006113c6611331612a9a565b84846001600061133f612a9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113c19190614fd1565b612aa2565b6001905092915050565b60155481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60019054906101000a900460ff1681565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61146b612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190614c61565b60405180910390fd5b600061150530611624565b905061151081613ac0565b50565b61151b612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190614c61565b60405180910390fd5b81600f819055508060108190555060125460148190555060966014541115611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90614ccd565b60405180910390fd5b5050565b60105481565b600a60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611674612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90614c61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006117ce612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185490614c61565b60405180910390fd5b6000600a60016101000a81548160ff0219169083151502179055506001905090565b611887612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d90614c61565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119c5612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b90614c61565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611a7a90615058565b60006040518083038185875af1925050503d8060008114611ab7576040519150601f19603f3d011682016040523d82523d6000602084013e611abc565b606091505b5050905080611b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af7906150b9565b60405180910390fd5b50565b611b0b612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190614c61565b60405180910390fd5b6000600267ffffffffffffffff811115611bb757611bb66147eb565b5b604051908082528060200260200182016040528015611be55781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7791906150ee565b81600081518110611c8b57611c8a614d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110611cda57611cd9614d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b6f9de9584600084600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611d979493929190615214565b6000604051808303818588803b158015611db057600080fd5b505af1158015611dc4573d6000803e3d6000fd5b5050505050505050565b611dd6612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90614c61565b60405180910390fd5b600a60009054906101000a900460ff1615611eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eac906152ac565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043600981905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f26612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac90614c61565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b606060048054611fe190614d1c565b80601f016020809104026020016040519081016040528092919081815260200182805461200d90614d1c565b801561205a5780601f1061202f5761010080835404028352916020019161205a565b820191906000526020600020905b81548152906001019060200180831161203d57829003601f168201915b5050505050905090565b61206c612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f290614c61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190615318565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6103e881565b6121bc612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461224b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224290614c61565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d0906153d0565b60405180910390fd5b6122e38282613cfd565b5050565b600080600160006122f6612a9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156123b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123aa90615462565b60405180910390fd5b6123c76123be612a9a565b85858403612aa2565b600191505092915050565b60006123e66123df612a9a565b8484612c6b565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b60115481565b600a60009054906101000a900460ff1681565b612431612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b790614c61565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161255d91906146fa565b60405180910390a25050565b612571612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790614c61565b60405180910390fd5b670de0b6b3a76400006103e860056126166110dd565b6126209190614df3565b61262a9190614e7c565b6126349190614e7c565b811015612676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266d906154f4565b60405180910390fd5b670de0b6b3a76400008161268a9190614df3565b601a8190555050565b61269b612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461272a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272190614c61565b60405180910390fd5b60005b838390508110156127c95781601c60008686858181106127505761274f614d4d565b5b9050602002016020810190612765919061473f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806127c190614dab565b91505061272d565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516127fd9392919061559f565b60405180910390a1505050565b601960009054906101000a900460ff1681565b60075481565b60145481565b60185481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60065481565b60135481565b60125481565b60095481565b6128d6612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c90614c61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cb90615643565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b08906156d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7790615767565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c5e9190614724565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd1906157f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d409061588b565b60405180910390fd5b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ded5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e239061591d565b60405180910390fd5b60008103612e4557612e4083836000613d9e565b613abb565b600a60009054906101000a900460ff16612f3a57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612efa5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3090615989565b60405180910390fd5b5b600a60019054906101000a900460ff161561362357612f57611ef4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612fc55750612f95611ef4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ffe5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613038575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130515750600560149054906101000a900460ff16155b1561362257600a60009054906101000a900460ff1661314b57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061310b5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61314a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613141906159f5565b60405180910390fd5b5b601960009054906101000a900460ff161561331357613168611ef4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156131ef57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561324757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156133125743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106132cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c490615aad565b60405180910390fd5b43600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133b65750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561347057670de0b6b3a76400006007546133d19190614fd1565b811115613413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340a90615b3f565b60405180910390fd5b601a5461341f83611624565b8261342a9190614fd1565b111561346b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346290615bab565b60405180910390fd5b613621565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135135750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561357557670de0b6b3a764000060075461352e9190614fd1565b811115613570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356790615c3d565b60405180910390fd5b613620565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661361f57601a546135d283611624565b826135dd9190614fd1565b111561361e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361590615bab565b60405180910390fd5b5b5b5b5b5b600061362e30611624565b9050600060065482101590508080156136535750600a60029054906101000a900460ff165b801561366c5750600560149054906101000a900460ff16155b80156136c25750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137185750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561376e5750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137b2576001600560146101000a81548160ff021916908315150217905550613796614007565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138685750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561387257600090505b60008115613aab57601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138d557506000601454115b15613989576139036103e86138f56014548861417790919063ffffffff16565b6141f190919063ffffffff16565b905080601560008282546139179190614fd1565b925050819055506014546013548261392f9190614df3565b6139399190614e7c565b6016600082825461394a9190614fd1565b92505081905550601454601254826139629190614df3565b61396c9190614e7c565b6017600082825461397d9190614fd1565b92505081905550613a87565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a8657613a046103e86139f66011548861417790919063ffffffff16565b6141f190919063ffffffff16565b90508060156000828254613a189190614fd1565b9250508190555060115460105482613a309190614df3565b613a3a9190614e7c565b60166000828254613a4b9190614fd1565b92505081905550601154600f5482613a639190614df3565b613a6d9190614e7c565b60176000828254613a7e9190614fd1565b925050819055505b5b6000811115613a9c57613a9b873083613d9e565b5b8085613aa89190615c5d565b94505b613ab6878787613d9e565b505050505b505050565b6000600267ffffffffffffffff811115613add57613adc6147eb565b5b604051908082528060200260200182016040528015613b0b5781602001602082028036833780820191505090505b5090503081600081518110613b2357613b22614d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bec91906150ee565b81600181518110613c0057613bff614d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c65307f000000000000000000000000000000000000000000000000000000000000000084612aa2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613cc7959493929190615c91565b600060405180830381600087803b158015613ce157600080fd5b505af1158015613cf5573d6000803e3d6000fd5b505050505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e04906157f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e739061588b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ef990615d5d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f959190614fd1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ff99190614724565b60405180910390a350505050565b600061401230611624565b905060006016546017546140269190614fd1565b90506000808314806140385750600082145b1561404557505050614175565b600083905061405381613ac0565b60004790506000614081856140736017548561417790919063ffffffff16565b6141f190919063ffffffff16565b90506140af81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661423b565b80601860008282546140c19190614fd1565b92505081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161410e90615058565b60006040518083038185875af1925050503d806000811461414b576040519150601f19603f3d011682016040523d82523d6000602084013e614150565b606091505b5050809450506000601781905550600060168190555060006015819055505050505050505b565b600080830361418957600090506141eb565b600082846141979190614df3565b90508284826141a69190614e7c565b146141e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141dd90615def565b60405180910390fd5b809150505b92915050565b600061423383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061446f565b905092915050565b6000600267ffffffffffffffff811115614258576142576147eb565b5b6040519080825280602002602001820160405280156142865781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061431891906150ee565b8160008151811061432c5761432b614d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061437b5761437a614d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b6f9de9584600084600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016144389493929190615214565b6000604051808303818588803b15801561445157600080fd5b505af1158015614465573d6000803e3d6000fd5b5050505050505050565b600080831182906144b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144ad9190614651565b60405180910390fd5b50600083856144c59190614e7c565b9050809150509392505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6144f9816144e6565b811461450457600080fd5b50565b600081359050614516816144f0565b92915050565b60008060408385031215614533576145326144dc565b5b600061454185828601614507565b925050602061455285828601614507565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145878261455c565b9050919050565b6145978161457c565b82525050565b60006020820190506145b2600083018461458e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156145f25780820151818401526020810190506145d7565b83811115614601576000848401525b50505050565b6000601f19601f8301169050919050565b6000614623826145b8565b61462d81856145c3565b935061463d8185602086016145d4565b61464681614607565b840191505092915050565b6000602082019050818103600083015261466b8184614618565b905092915050565b61467c8161457c565b811461468757600080fd5b50565b60008135905061469981614673565b92915050565b600080604083850312156146b6576146b56144dc565b5b60006146c48582860161468a565b92505060206146d585828601614507565b9150509250929050565b60008115159050919050565b6146f4816146df565b82525050565b600060208201905061470f60008301846146eb565b92915050565b61471e816144e6565b82525050565b60006020820190506147396000830184614715565b92915050565b600060208284031215614755576147546144dc565b5b60006147638482850161468a565b91505092915050565b6000819050919050565b600061479161478c6147878461455c565b61476c565b61455c565b9050919050565b60006147a382614776565b9050919050565b60006147b582614798565b9050919050565b6147c5816147aa565b82525050565b60006020820190506147e060008301846147bc565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61482382614607565b810181811067ffffffffffffffff82111715614842576148416147eb565b5b80604052505050565b60006148556144d2565b9050614861828261481a565b919050565b600067ffffffffffffffff821115614881576148806147eb565b5b602082029050602081019050919050565b600080fd5b60006148aa6148a584614866565b61484b565b905080838252602082019050602084028301858111156148cd576148cc614892565b5b835b818110156148f657806148e2888261468a565b8452602084019350506020810190506148cf565b5050509392505050565b600082601f830112614915576149146147e6565b5b8135614925848260208601614897565b91505092915050565b614937816146df565b811461494257600080fd5b50565b6000813590506149548161492e565b92915050565b60008060408385031215614971576149706144dc565b5b600083013567ffffffffffffffff81111561498f5761498e6144e1565b5b61499b85828601614900565b92505060206149ac85828601614945565b9150509250929050565b6000602082840312156149cc576149cb6144dc565b5b60006149da84828501614507565b91505092915050565b6000806000606084860312156149fc576149fb6144dc565b5b6000614a0a8682870161468a565b9350506020614a1b8682870161468a565b9250506040614a2c86828701614507565b9150509250925092565b600060ff82169050919050565b614a4c81614a36565b82525050565b6000602082019050614a676000830184614a43565b92915050565b60008060408385031215614a8457614a836144dc565b5b6000614a928582860161468a565b9250506020614aa385828601614945565b9150509250929050565b60008060408385031215614ac457614ac36144dc565b5b6000614ad285828601614507565b9250506020614ae38582860161468a565b9150509250929050565b600060208284031215614b0357614b026144dc565b5b6000614b1184828501614945565b91505092915050565b600080fd5b60008083601f840112614b3557614b346147e6565b5b8235905067ffffffffffffffff811115614b5257614b51614b1a565b5b602083019150836020820283011115614b6e57614b6d614892565b5b9250929050565b600080600060408486031215614b8e57614b8d6144dc565b5b600084013567ffffffffffffffff811115614bac57614bab6144e1565b5b614bb886828701614b1f565b93509350506020614bcb86828701614945565b9150509250925092565b60008060408385031215614bec57614beb6144dc565b5b6000614bfa8582860161468a565b9250506020614c0b8582860161468a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c4b6020836145c3565b9150614c5682614c15565b602082019050919050565b60006020820190508181036000830152614c7a81614c3e565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614cb7601d836145c3565b9150614cc282614c81565b602082019050919050565b60006020820190508181036000830152614ce681614caa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614d3457607f821691505b602082108103614d4757614d46614ced565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614db6826144e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614de857614de7614d7c565b5b600182019050919050565b6000614dfe826144e6565b9150614e09836144e6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e4257614e41614d7c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e87826144e6565b9150614e92836144e6565b925082614ea257614ea1614e4d565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614f09602f836145c3565b9150614f1482614ead565b604082019050919050565b60006020820190508181036000830152614f3881614efc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614f9b6028836145c3565b9150614fa682614f3f565b604082019050919050565b60006020820190508181036000830152614fca81614f8e565b9050919050565b6000614fdc826144e6565b9150614fe7836144e6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561501c5761501b614d7c565b5b828201905092915050565b600081905092915050565b50565b6000615042600083615027565b915061504d82615032565b600082019050919050565b600061506382615035565b9150819050919050565b7f6661696c656420746f2077697468647261770000000000000000000000000000600082015250565b60006150a36012836145c3565b91506150ae8261506d565b602082019050919050565b600060208201905081810360008301526150d281615096565b9050919050565b6000815190506150e881614673565b92915050565b600060208284031215615104576151036144dc565b5b6000615112848285016150d9565b91505092915050565b6000819050919050565b600061514061513b6151368461511b565b61476c565b6144e6565b9050919050565b61515081615125565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61518b8161457c565b82525050565b600061519d8383615182565b60208301905092915050565b6000602082019050919050565b60006151c182615156565b6151cb8185615161565b93506151d683615172565b8060005b838110156152075781516151ee8882615191565b97506151f9836151a9565b9250506001810190506151da565b5085935050505092915050565b60006080820190506152296000830187615147565b818103602083015261523b81866151b6565b905061524a604083018561458e565b6152576060830184614715565b95945050505050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b60006152966018836145c3565b91506152a182615260565b602082019050919050565b600060208201905081810360008301526152c581615289565b9050919050565b7f616464726573732063616e6e6f74206265203000000000000000000000000000600082015250565b60006153026013836145c3565b915061530d826152cc565b602082019050919050565b60006020820190508181036000830152615331816152f5565b9050919050565b7f54686520556e697377617020706169722063616e6e6f742062652072656d6f7660008201527f65642066726f6d206175746f6d617465644d61726b65744d616b65725061697260208201527f7300000000000000000000000000000000000000000000000000000000000000604082015250565b60006153ba6041836145c3565b91506153c582615338565b606082019050919050565b600060208201905081810360008301526153e9816153ad565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061544c6025836145c3565b9150615457826153f0565b604082019050919050565b6000602082019050818103600083015261547b8161543f565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006154de6024836145c3565b91506154e982615482565b604082019050919050565b6000602082019050818103600083015261550d816154d1565b9050919050565b6000819050919050565b600061552d602084018461468a565b905092915050565b6000602082019050919050565b600061554e8385615161565b935061555982615514565b8060005b858110156155925761556f828461551e565b6155798882615191565b975061558483615535565b92505060018101905061555d565b5085925050509392505050565b600060408201905081810360008301526155ba818587615542565b90506155c960208301846146eb565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061562d6026836145c3565b9150615638826155d1565b604082019050919050565b6000602082019050818103600083015261565c81615620565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156bf6024836145c3565b91506156ca82615663565b604082019050919050565b600060208201905081810360008301526156ee816156b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006157516022836145c3565b915061575c826156f5565b604082019050919050565b6000602082019050818103600083015261578081615744565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157e36025836145c3565b91506157ee82615787565b604082019050919050565b60006020820190508181036000830152615812816157d6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006158756023836145c3565b915061588082615819565b604082019050919050565b600060208201905081810360008301526158a481615868565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b60006159076031836145c3565b9150615912826158ab565b604082019050919050565b60006020820190508181036000830152615936816158fa565b9050919050565b7f54726164696e67206973206e6f7420616374697665207965742e000000000000600082015250565b6000615973601a836145c3565b915061597e8261593d565b602082019050919050565b600060208201905081810360008301526159a281615966565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006159df6016836145c3565b91506159ea826159a9565b602082019050919050565b60006020820190508181036000830152615a0e816159d2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615a976049836145c3565b9150615aa282615a15565b606082019050919050565b60006020820190508181036000830152615ac681615a8a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615b296035836145c3565b9150615b3482615acd565b604082019050919050565b60006020820190508181036000830152615b5881615b1c565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615b956013836145c3565b9150615ba082615b5f565b602082019050919050565b60006020820190508181036000830152615bc481615b88565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615c276036836145c3565b9150615c3282615bcb565b604082019050919050565b60006020820190508181036000830152615c5681615c1a565b9050919050565b6000615c68826144e6565b9150615c73836144e6565b925082821015615c8657615c85614d7c565b5b828203905092915050565b600060a082019050615ca66000830188614715565b615cb36020830187615147565b8181036040830152615cc581866151b6565b9050615cd4606083018561458e565b615ce16080830184614715565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615d476026836145c3565b9150615d5282615ceb565b604082019050919050565b60006020820190508181036000830152615d7681615d3a565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615dd96021836145c3565b9150615de482615d7d565b604082019050919050565b60006020820190508181036000830152615e0881615dcc565b905091905056fea26469706673582212209677de72a610c2c1a5061c3b03eaadbac0e8fa848cae4e795e6963b6700629cc64736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106103855760003560e01c80637df30749116101d1578063bbc0c74211610102578063dce484a0116100a0578063e88826921161006f578063e888269214610cef578063ee40166e14610d1a578063f2fde38b14610d45578063f8b45b0514610d6e5761038c565b8063dce484a014610c31578063dd62ed3e14610c5c578063e2f4560514610c99578063e7f444b314610cc45761038c565b8063c492f046116100dc578063c492f04614610b87578063c876d0b914610bb0578063c8c8ebe414610bdb578063d0a3981414610c065761038c565b8063bbc0c74214610b0a578063c024666814610b35578063c18bc19514610b5e5761038c565b8063975aa8bf1161016f578063a457c2d711610149578063a457c2d714610a28578063a9059cbb14610a65578063b62496f514610aa2578063b9e9370014610adf5761038c565b8063975aa8bf146109ab5780639a36f932146109d45780639a7a23d6146109ff5761038c565b80638a8c523c116101ab5780638a8c523c146109155780638da5cb5b1461092c578063924de9b71461095757806395d89b41146109805761038c565b80637df30749146108aa5780637fa787ba146108d557806380363a38146108ec5761038c565b8063313ce567116102b657806366ca9b8311610254578063715018a611610223578063715018a614610814578063751039fc1461082b5780637571336a1461085657806375f0a8741461087f5761038c565b806366ca9b831461075857806368078952146107815780636ddd1713146107ac57806370a08231146107d75761038c565b806349bd5a5e1161029057806349bd5a5e146106ae5780634a62bb65146106d95780634fbee1931461070457806351bc3c85146107415761038c565b8063313ce5671461061b57806339509351146106465780633f8a6204146106835761038c565b806317533bca116103235780631f3fed8f116102fd5780631f3fed8f1461055f578063203e727e1461058a57806323b872dd146105b3578063242d632a146105f05761038c565b806317533bca146104e057806318160ddd146105095780631d777856146105345761038c565b8063095ea7b31161035f578063095ea7b3146104105780630f4432e31461044d57806310d5de53146104785780631694505e146104b55761038c565b806302dbd8f81461039157806306228749146103ba57806306fdde03146103e55761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103b860048036038101906103b3919061451c565b610d99565b005b3480156103c657600080fd5b506103cf610e91565b6040516103dc919061459d565b60405180910390f35b3480156103f157600080fd5b506103fa610eb7565b6040516104079190614651565b60405180910390f35b34801561041c57600080fd5b506104376004803603810190610432919061469f565b610f49565b60405161044491906146fa565b60405180910390f35b34801561045957600080fd5b50610462610f67565b60405161046f9190614724565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a919061473f565b610f6d565b6040516104ac91906146fa565b60405180910390f35b3480156104c157600080fd5b506104ca610f8d565b6040516104d791906147cb565b60405180910390f35b3480156104ec57600080fd5b506105076004803603810190610502919061495a565b610fb1565b005b34801561051557600080fd5b5061051e6110dd565b60405161052b9190614724565b60405180910390f35b34801561054057600080fd5b506105496110e7565b6040516105569190614724565b60405180910390f35b34801561056b57600080fd5b506105746110ed565b6040516105819190614724565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac91906149b6565b6110f3565b005b3480156105bf57600080fd5b506105da60048036038101906105d591906149e3565b61121d565b6040516105e791906146fa565b60405180910390f35b3480156105fc57600080fd5b50610605611315565b6040516106129190614724565b60405180910390f35b34801561062757600080fd5b5061063061131b565b60405161063d9190614a52565b60405180910390f35b34801561065257600080fd5b5061066d6004803603810190610668919061469f565b611324565b60405161067a91906146fa565b60405180910390f35b34801561068f57600080fd5b506106986113d0565b6040516106a59190614724565b60405180910390f35b3480156106ba57600080fd5b506106c36113d6565b6040516106d0919061459d565b60405180910390f35b3480156106e557600080fd5b506106ee6113fa565b6040516106fb91906146fa565b60405180910390f35b34801561071057600080fd5b5061072b6004803603810190610726919061473f565b61140d565b60405161073891906146fa565b60405180910390f35b34801561074d57600080fd5b50610756611463565b005b34801561076457600080fd5b5061077f600480360381019061077a919061451c565b611513565b005b34801561078d57600080fd5b5061079661160b565b6040516107a39190614724565b60405180910390f35b3480156107b857600080fd5b506107c1611611565b6040516107ce91906146fa565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f9919061473f565b611624565b60405161080b9190614724565b60405180910390f35b34801561082057600080fd5b5061082961166c565b005b34801561083757600080fd5b506108406117c4565b60405161084d91906146fa565b60405180910390f35b34801561086257600080fd5b5061087d60048036038101906108789190614a6d565b61187f565b005b34801561088b57600080fd5b50610894611971565b6040516108a1919061459d565b60405180910390f35b3480156108b657600080fd5b506108bf611997565b6040516108cc919061459d565b60405180910390f35b3480156108e157600080fd5b506108ea6119bd565b005b3480156108f857600080fd5b50610913600480360381019061090e9190614aad565b611b03565b005b34801561092157600080fd5b5061092a611dce565b005b34801561093857600080fd5b50610941611ef4565b60405161094e919061459d565b60405180910390f35b34801561096357600080fd5b5061097e60048036038101906109799190614aed565b611f1e565b005b34801561098c57600080fd5b50610995611fd2565b6040516109a29190614651565b60405180910390f35b3480156109b757600080fd5b506109d260048036038101906109cd919061473f565b612064565b005b3480156109e057600080fd5b506109e96121ae565b6040516109f69190614724565b60405180910390f35b348015610a0b57600080fd5b50610a266004803603810190610a219190614a6d565b6121b4565b005b348015610a3457600080fd5b50610a4f6004803603810190610a4a919061469f565b6122e7565b604051610a5c91906146fa565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a87919061469f565b6123d2565b604051610a9991906146fa565b60405180910390f35b348015610aae57600080fd5b50610ac96004803603810190610ac4919061473f565b6123f0565b604051610ad691906146fa565b60405180910390f35b348015610aeb57600080fd5b50610af4612410565b604051610b019190614724565b60405180910390f35b348015610b1657600080fd5b50610b1f612416565b604051610b2c91906146fa565b60405180910390f35b348015610b4157600080fd5b50610b5c6004803603810190610b579190614a6d565b612429565b005b348015610b6a57600080fd5b50610b856004803603810190610b8091906149b6565b612569565b005b348015610b9357600080fd5b50610bae6004803603810190610ba99190614b75565b612693565b005b348015610bbc57600080fd5b50610bc561280a565b604051610bd291906146fa565b60405180910390f35b348015610be757600080fd5b50610bf061281d565b604051610bfd9190614724565b60405180910390f35b348015610c1257600080fd5b50610c1b612823565b604051610c289190614724565b60405180910390f35b348015610c3d57600080fd5b50610c46612829565b604051610c539190614724565b60405180910390f35b348015610c6857600080fd5b50610c836004803603810190610c7e9190614bd5565b61282f565b604051610c909190614724565b60405180910390f35b348015610ca557600080fd5b50610cae6128b6565b604051610cbb9190614724565b60405180910390f35b348015610cd057600080fd5b50610cd96128bc565b604051610ce69190614724565b60405180910390f35b348015610cfb57600080fd5b50610d046128c2565b604051610d119190614724565b60405180910390f35b348015610d2657600080fd5b50610d2f6128c8565b604051610d3c9190614724565b60405180910390f35b348015610d5157600080fd5b50610d6c6004803603810190610d67919061473f565b6128ce565b005b348015610d7a57600080fd5b50610d83612a94565b604051610d909190614724565b60405180910390f35b610da1612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2790614c61565b60405180910390fd5b816012819055508060138190555060125460148190555060966014541115610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8490614ccd565b60405180910390fd5b5050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054610ec690614d1c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef290614d1c565b8015610f3f5780601f10610f1457610100808354040283529160200191610f3f565b820191906000526020600020905b815481529060010190602001808311610f2257829003601f168201915b5050505050905090565b6000610f5d610f56612a9a565b8484612aa2565b6001905092915050565b60085481565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b610fb9612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103f90614c61565b60405180910390fd5b60005b82518110156110d85781601b600085848151811061106c5761106b614d4d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110d090614dab565b91505061104b565b505050565b6000600254905090565b60175481565b60165481565b6110fb612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118190614c61565b60405180910390fd5b670de0b6b3a76400006103e860016111a06110dd565b6111aa9190614df3565b6111b49190614e7c565b6111be9190614e7c565b811015611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790614f1f565b60405180910390fd5b670de0b6b3a7640000816112149190614df3565b60078190555050565b600061122a848484612c6b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611275612a9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90614fb1565b60405180910390fd5b61130985611301612a9a565b858403612aa2565b60019150509392505050565b600f5481565b60006012905090565b60006113c6611331612a9a565b84846001600061133f612a9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113c19190614fd1565b612aa2565b6001905092915050565b60155481565b7f000000000000000000000000d0d979299d44c011c84f401e07bdf3f44864d65781565b600a60019054906101000a900460ff1681565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61146b612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190614c61565b60405180910390fd5b600061150530611624565b905061151081613ac0565b50565b61151b612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190614c61565b60405180910390fd5b81600f819055508060108190555060125460148190555060966014541115611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90614ccd565b60405180910390fd5b5050565b60105481565b600a60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611674612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90614c61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006117ce612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185490614c61565b60405180910390fd5b6000600a60016101000a81548160ff0219169083151502179055506001905090565b611887612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d90614c61565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119c5612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b90614c61565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611a7a90615058565b60006040518083038185875af1925050503d8060008114611ab7576040519150601f19603f3d011682016040523d82523d6000602084013e611abc565b606091505b5050905080611b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af7906150b9565b60405180910390fd5b50565b611b0b612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190614c61565b60405180910390fd5b6000600267ffffffffffffffff811115611bb757611bb66147eb565b5b604051908082528060200260200182016040528015611be55781602001602082028036833780820191505090505b5090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7791906150ee565b81600081518110611c8b57611c8a614d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110611cda57611cd9614d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663b6f9de9584600084600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611d979493929190615214565b6000604051808303818588803b158015611db057600080fd5b505af1158015611dc4573d6000803e3d6000fd5b5050505050505050565b611dd6612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90614c61565b60405180910390fd5b600a60009054906101000a900460ff1615611eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eac906152ac565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555043600981905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f26612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac90614c61565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b606060048054611fe190614d1c565b80601f016020809104026020016040519081016040528092919081815260200182805461200d90614d1c565b801561205a5780601f1061202f5761010080835404028352916020019161205a565b820191906000526020600020905b81548152906001019060200180831161203d57829003601f168201915b5050505050905090565b61206c612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f290614c61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190615318565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6103e881565b6121bc612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461224b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224290614c61565b60405180910390fd5b7f000000000000000000000000d0d979299d44c011c84f401e07bdf3f44864d65773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d0906153d0565b60405180910390fd5b6122e38282613cfd565b5050565b600080600160006122f6612a9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156123b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123aa90615462565b60405180910390fd5b6123c76123be612a9a565b85858403612aa2565b600191505092915050565b60006123e66123df612a9a565b8484612c6b565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b60115481565b600a60009054906101000a900460ff1681565b612431612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b790614c61565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161255d91906146fa565b60405180910390a25050565b612571612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790614c61565b60405180910390fd5b670de0b6b3a76400006103e860056126166110dd565b6126209190614df3565b61262a9190614e7c565b6126349190614e7c565b811015612676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266d906154f4565b60405180910390fd5b670de0b6b3a76400008161268a9190614df3565b601a8190555050565b61269b612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461272a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272190614c61565b60405180910390fd5b60005b838390508110156127c95781601c60008686858181106127505761274f614d4d565b5b9050602002016020810190612765919061473f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806127c190614dab565b91505061272d565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516127fd9392919061559f565b60405180910390a1505050565b601960009054906101000a900460ff1681565b60075481565b60145481565b60185481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60065481565b60135481565b60125481565b60095481565b6128d6612a9a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c90614c61565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cb90615643565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b08906156d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7790615767565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c5e9190614724565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd1906157f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d409061588b565b60405180910390fd5b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ded5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e239061591d565b60405180910390fd5b60008103612e4557612e4083836000613d9e565b613abb565b600a60009054906101000a900460ff16612f3a57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612efa5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3090615989565b60405180910390fd5b5b600a60019054906101000a900460ff161561362357612f57611ef4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612fc55750612f95611ef4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ffe5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613038575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130515750600560149054906101000a900460ff16155b1561362257600a60009054906101000a900460ff1661314b57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061310b5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61314a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613141906159f5565b60405180910390fd5b5b601960009054906101000a900460ff161561331357613168611ef4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156131ef57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561324757507f000000000000000000000000d0d979299d44c011c84f401e07bdf3f44864d65773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156133125743600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106132cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c490615aad565b60405180910390fd5b43600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133b65750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561347057670de0b6b3a76400006007546133d19190614fd1565b811115613413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340a90615b3f565b60405180910390fd5b601a5461341f83611624565b8261342a9190614fd1565b111561346b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346290615bab565b60405180910390fd5b613621565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135135750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561357557670de0b6b3a764000060075461352e9190614fd1565b811115613570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356790615c3d565b60405180910390fd5b613620565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661361f57601a546135d283611624565b826135dd9190614fd1565b111561361e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161361590615bab565b60405180910390fd5b5b5b5b5b5b600061362e30611624565b9050600060065482101590508080156136535750600a60029054906101000a900460ff165b801561366c5750600560149054906101000a900460ff16155b80156136c25750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137185750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561376e5750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137b2576001600560146101000a81548160ff021916908315150217905550613796614007565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138685750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561387257600090505b60008115613aab57601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138d557506000601454115b15613989576139036103e86138f56014548861417790919063ffffffff16565b6141f190919063ffffffff16565b905080601560008282546139179190614fd1565b925050819055506014546013548261392f9190614df3565b6139399190614e7c565b6016600082825461394a9190614fd1565b92505081905550601454601254826139629190614df3565b61396c9190614e7c565b6017600082825461397d9190614fd1565b92505081905550613a87565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a8657613a046103e86139f66011548861417790919063ffffffff16565b6141f190919063ffffffff16565b90508060156000828254613a189190614fd1565b9250508190555060115460105482613a309190614df3565b613a3a9190614e7c565b60166000828254613a4b9190614fd1565b92505081905550601154600f5482613a639190614df3565b613a6d9190614e7c565b60176000828254613a7e9190614fd1565b925050819055505b5b6000811115613a9c57613a9b873083613d9e565b5b8085613aa89190615c5d565b94505b613ab6878787613d9e565b505050505b505050565b6000600267ffffffffffffffff811115613add57613adc6147eb565b5b604051908082528060200260200182016040528015613b0b5781602001602082028036833780820191505090505b5090503081600081518110613b2357613b22614d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bec91906150ee565b81600181518110613c0057613bff614d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c65307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612aa2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613cc7959493929190615c91565b600060405180830381600087803b158015613ce157600080fd5b505af1158015613cf5573d6000803e3d6000fd5b505050505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e04906157f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e739061588b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ef990615d5d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f959190614fd1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ff99190614724565b60405180910390a350505050565b600061401230611624565b905060006016546017546140269190614fd1565b90506000808314806140385750600082145b1561404557505050614175565b600083905061405381613ac0565b60004790506000614081856140736017548561417790919063ffffffff16565b6141f190919063ffffffff16565b90506140af81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661423b565b80601860008282546140c19190614fd1565b92505081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161410e90615058565b60006040518083038185875af1925050503d806000811461414b576040519150601f19603f3d011682016040523d82523d6000602084013e614150565b606091505b5050809450506000601781905550600060168190555060006015819055505050505050505b565b600080830361418957600090506141eb565b600082846141979190614df3565b90508284826141a69190614e7c565b146141e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141dd90615def565b60405180910390fd5b809150505b92915050565b600061423383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061446f565b905092915050565b6000600267ffffffffffffffff811115614258576142576147eb565b5b6040519080825280602002602001820160405280156142865781602001602082028036833780820191505090505b5090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061431891906150ee565b8160008151811061432c5761432b614d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061437b5761437a614d4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663b6f9de9584600084600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016144389493929190615214565b6000604051808303818588803b15801561445157600080fd5b505af1158015614465573d6000803e3d6000fd5b5050505050505050565b600080831182906144b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144ad9190614651565b60405180910390fd5b50600083856144c59190614e7c565b9050809150509392505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6144f9816144e6565b811461450457600080fd5b50565b600081359050614516816144f0565b92915050565b60008060408385031215614533576145326144dc565b5b600061454185828601614507565b925050602061455285828601614507565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145878261455c565b9050919050565b6145978161457c565b82525050565b60006020820190506145b2600083018461458e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156145f25780820151818401526020810190506145d7565b83811115614601576000848401525b50505050565b6000601f19601f8301169050919050565b6000614623826145b8565b61462d81856145c3565b935061463d8185602086016145d4565b61464681614607565b840191505092915050565b6000602082019050818103600083015261466b8184614618565b905092915050565b61467c8161457c565b811461468757600080fd5b50565b60008135905061469981614673565b92915050565b600080604083850312156146b6576146b56144dc565b5b60006146c48582860161468a565b92505060206146d585828601614507565b9150509250929050565b60008115159050919050565b6146f4816146df565b82525050565b600060208201905061470f60008301846146eb565b92915050565b61471e816144e6565b82525050565b60006020820190506147396000830184614715565b92915050565b600060208284031215614755576147546144dc565b5b60006147638482850161468a565b91505092915050565b6000819050919050565b600061479161478c6147878461455c565b61476c565b61455c565b9050919050565b60006147a382614776565b9050919050565b60006147b582614798565b9050919050565b6147c5816147aa565b82525050565b60006020820190506147e060008301846147bc565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61482382614607565b810181811067ffffffffffffffff82111715614842576148416147eb565b5b80604052505050565b60006148556144d2565b9050614861828261481a565b919050565b600067ffffffffffffffff821115614881576148806147eb565b5b602082029050602081019050919050565b600080fd5b60006148aa6148a584614866565b61484b565b905080838252602082019050602084028301858111156148cd576148cc614892565b5b835b818110156148f657806148e2888261468a565b8452602084019350506020810190506148cf565b5050509392505050565b600082601f830112614915576149146147e6565b5b8135614925848260208601614897565b91505092915050565b614937816146df565b811461494257600080fd5b50565b6000813590506149548161492e565b92915050565b60008060408385031215614971576149706144dc565b5b600083013567ffffffffffffffff81111561498f5761498e6144e1565b5b61499b85828601614900565b92505060206149ac85828601614945565b9150509250929050565b6000602082840312156149cc576149cb6144dc565b5b60006149da84828501614507565b91505092915050565b6000806000606084860312156149fc576149fb6144dc565b5b6000614a0a8682870161468a565b9350506020614a1b8682870161468a565b9250506040614a2c86828701614507565b9150509250925092565b600060ff82169050919050565b614a4c81614a36565b82525050565b6000602082019050614a676000830184614a43565b92915050565b60008060408385031215614a8457614a836144dc565b5b6000614a928582860161468a565b9250506020614aa385828601614945565b9150509250929050565b60008060408385031215614ac457614ac36144dc565b5b6000614ad285828601614507565b9250506020614ae38582860161468a565b9150509250929050565b600060208284031215614b0357614b026144dc565b5b6000614b1184828501614945565b91505092915050565b600080fd5b60008083601f840112614b3557614b346147e6565b5b8235905067ffffffffffffffff811115614b5257614b51614b1a565b5b602083019150836020820283011115614b6e57614b6d614892565b5b9250929050565b600080600060408486031215614b8e57614b8d6144dc565b5b600084013567ffffffffffffffff811115614bac57614bab6144e1565b5b614bb886828701614b1f565b93509350506020614bcb86828701614945565b9150509250925092565b60008060408385031215614bec57614beb6144dc565b5b6000614bfa8582860161468a565b9250506020614c0b8582860161468a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c4b6020836145c3565b9150614c5682614c15565b602082019050919050565b60006020820190508181036000830152614c7a81614c3e565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614cb7601d836145c3565b9150614cc282614c81565b602082019050919050565b60006020820190508181036000830152614ce681614caa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614d3457607f821691505b602082108103614d4757614d46614ced565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614db6826144e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614de857614de7614d7c565b5b600182019050919050565b6000614dfe826144e6565b9150614e09836144e6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e4257614e41614d7c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e87826144e6565b9150614e92836144e6565b925082614ea257614ea1614e4d565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614f09602f836145c3565b9150614f1482614ead565b604082019050919050565b60006020820190508181036000830152614f3881614efc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614f9b6028836145c3565b9150614fa682614f3f565b604082019050919050565b60006020820190508181036000830152614fca81614f8e565b9050919050565b6000614fdc826144e6565b9150614fe7836144e6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561501c5761501b614d7c565b5b828201905092915050565b600081905092915050565b50565b6000615042600083615027565b915061504d82615032565b600082019050919050565b600061506382615035565b9150819050919050565b7f6661696c656420746f2077697468647261770000000000000000000000000000600082015250565b60006150a36012836145c3565b91506150ae8261506d565b602082019050919050565b600060208201905081810360008301526150d281615096565b9050919050565b6000815190506150e881614673565b92915050565b600060208284031215615104576151036144dc565b5b6000615112848285016150d9565b91505092915050565b6000819050919050565b600061514061513b6151368461511b565b61476c565b6144e6565b9050919050565b61515081615125565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61518b8161457c565b82525050565b600061519d8383615182565b60208301905092915050565b6000602082019050919050565b60006151c182615156565b6151cb8185615161565b93506151d683615172565b8060005b838110156152075781516151ee8882615191565b97506151f9836151a9565b9250506001810190506151da565b5085935050505092915050565b60006080820190506152296000830187615147565b818103602083015261523b81866151b6565b905061524a604083018561458e565b6152576060830184614715565b95945050505050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b60006152966018836145c3565b91506152a182615260565b602082019050919050565b600060208201905081810360008301526152c581615289565b9050919050565b7f616464726573732063616e6e6f74206265203000000000000000000000000000600082015250565b60006153026013836145c3565b915061530d826152cc565b602082019050919050565b60006020820190508181036000830152615331816152f5565b9050919050565b7f54686520556e697377617020706169722063616e6e6f742062652072656d6f7660008201527f65642066726f6d206175746f6d617465644d61726b65744d616b65725061697260208201527f7300000000000000000000000000000000000000000000000000000000000000604082015250565b60006153ba6041836145c3565b91506153c582615338565b606082019050919050565b600060208201905081810360008301526153e9816153ad565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061544c6025836145c3565b9150615457826153f0565b604082019050919050565b6000602082019050818103600083015261547b8161543f565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006154de6024836145c3565b91506154e982615482565b604082019050919050565b6000602082019050818103600083015261550d816154d1565b9050919050565b6000819050919050565b600061552d602084018461468a565b905092915050565b6000602082019050919050565b600061554e8385615161565b935061555982615514565b8060005b858110156155925761556f828461551e565b6155798882615191565b975061558483615535565b92505060018101905061555d565b5085925050509392505050565b600060408201905081810360008301526155ba818587615542565b90506155c960208301846146eb565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061562d6026836145c3565b9150615638826155d1565b604082019050919050565b6000602082019050818103600083015261565c81615620565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156bf6024836145c3565b91506156ca82615663565b604082019050919050565b600060208201905081810360008301526156ee816156b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006157516022836145c3565b915061575c826156f5565b604082019050919050565b6000602082019050818103600083015261578081615744565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157e36025836145c3565b91506157ee82615787565b604082019050919050565b60006020820190508181036000830152615812816157d6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006158756023836145c3565b915061588082615819565b604082019050919050565b600060208201905081810360008301526158a481615868565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b60006159076031836145c3565b9150615912826158ab565b604082019050919050565b60006020820190508181036000830152615936816158fa565b9050919050565b7f54726164696e67206973206e6f7420616374697665207965742e000000000000600082015250565b6000615973601a836145c3565b915061597e8261593d565b602082019050919050565b600060208201905081810360008301526159a281615966565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006159df6016836145c3565b91506159ea826159a9565b602082019050919050565b60006020820190508181036000830152615a0e816159d2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615a976049836145c3565b9150615aa282615a15565b606082019050919050565b60006020820190508181036000830152615ac681615a8a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615b296035836145c3565b9150615b3482615acd565b604082019050919050565b60006020820190508181036000830152615b5881615b1c565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615b956013836145c3565b9150615ba082615b5f565b602082019050919050565b60006020820190508181036000830152615bc481615b88565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615c276036836145c3565b9150615c3282615bcb565b604082019050919050565b60006020820190508181036000830152615c5681615c1a565b9050919050565b6000615c68826144e6565b9150615c73836144e6565b925082821015615c8657615c85614d7c565b5b828203905092915050565b600060a082019050615ca66000830188614715565b615cb36020830187615147565b8181036040830152615cc581866151b6565b9050615cd4606083018561458e565b615ce16080830184614715565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615d476026836145c3565b9150615d5282615ceb565b604082019050919050565b60006020820190508181036000830152615d7681615d3a565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615dd96021836145c3565b9150615de482615d7d565b604082019050919050565b60006020820190508181036000830152615e0881615dcc565b905091905056fea26469706673582212209677de72a610c2c1a5061c3b03eaadbac0e8fa848cae4e795e6963b6700629cc64736f6c634300080d0033
Deployed Bytecode Sourcemap
21044:15174:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26091:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21766:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4263:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5177:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21345:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22635:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21118:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35602:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4584:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22364:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22324:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25271:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5354:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22060:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4483:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5854:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22289:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21176:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21553:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27692:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34368:155;;;;;;;;;;;;;:::i;:::-;;26414:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22097:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21593:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4700:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13665:148;;;;;;;;;;;;;:::i;:::-;;34575:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25738:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21926:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21843:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35810:191;;;;;;;;;;;;;:::i;:::-;;33821:539;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25041:218;;;;;;;;;;;;;:::i;:::-;;13023:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25978:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4371:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36009:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22010:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27236:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6077:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4835:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22708:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22134:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21513:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26730:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25514:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26922:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22443:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21297:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22247:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22399:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5018:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21257:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22209:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22171;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21430:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13968:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22489:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26091:315;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26218:17:::1;26199:16;:36;;;;26265:17;26246:16;:36;;;;26309:16;;26293:13;:32;;;;26361:3;26344:13;;:20;;26336:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;26091:315:::0;;:::o;21766:70::-;;;;;;;;;;;;;:::o;4263:100::-;4317:13;4350:5;4343:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4263:100;:::o;5177:169::-;5260:4;5277:39;5286:12;:10;:12::i;:::-;5300:7;5309:6;5277:8;:39::i;:::-;5334:4;5327:11;;5177:169;;;;:::o;21345:39::-;;;;:::o;22635:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;21118:51::-;;;:::o;35602:200::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35701:9:::1;35696:99;35720:5;:12;35716:1;:16;35696:99;;;35777:6;35754:10;:20;35765:5;35771:1;35765:8;;;;;;;;:::i;:::-;;;;;;;;35754:20;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;35734:3;;;;;:::i;:::-;;;;35696:99;;;;35602:200:::0;;:::o;4584:108::-;4645:7;4672:12;;4665:19;;4584:108;:::o;22364:28::-;;;;:::o;22324:33::-;;;;:::o;25271:234::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25390:4:::1;25384;25380:1;25364:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;25363:31;;;;:::i;:::-;25353:6;:41;;25345:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;25490:6;25480;:17;;;;:::i;:::-;25457:20;:40;;;;25271:234:::0;:::o;5354:492::-;5494:4;5511:36;5521:6;5529:9;5540:6;5511:9;:36::i;:::-;5560:24;5587:11;:19;5599:6;5587:19;;;;;;;;;;;;;;;:33;5607:12;:10;:12::i;:::-;5587:33;;;;;;;;;;;;;;;;5560:60;;5659:6;5639:16;:26;;5631:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5746:57;5755:6;5763:12;:10;:12::i;:::-;5796:6;5777:16;:25;5746:8;:57::i;:::-;5834:4;5827:11;;;5354:492;;;;;:::o;22060:30::-;;;;:::o;4483:93::-;4541:5;4566:2;4559:9;;4483:93;:::o;5854:215::-;5942:4;5959:80;5968:12;:10;:12::i;:::-;5982:7;6028:10;5991:11;:25;6003:12;:10;:12::i;:::-;5991:25;;;;;;;;;;;;;;;:34;6017:7;5991:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5959:8;:80::i;:::-;6057:4;6050:11;;5854:215;;;;:::o;22289:28::-;;;;:::o;21176:38::-;;;:::o;21553:33::-;;;;;;;;;;;;;:::o;27692:127::-;27759:4;27783:19;:28;27803:7;27783:28;;;;;;;;;;;;;;;;;;;;;;;;;27776:35;;27692:127;;;:::o;34368:155::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34420:23:::1;34446:24;34464:4;34446:9;:24::i;:::-;34420:50;;34481:33;34498:15;34481:16;:33::i;:::-;34409:114;34368:155::o:0;26414:308::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26537:16:::1;26519:15;:34;;;;26582:16;26564:15;:34;;;;26625:16;;26609:13;:32;;;;26677:3;26660:13;;:20;;26652:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;26414:308:::0;;:::o;22097:30::-;;;;:::o;21593:31::-;;;;;;;;;;;;;:::o;4700:127::-;4774:7;4801:9;:18;4811:7;4801:18;;;;;;;;;;;;;;;;4794:25;;4700:127;;;:::o;13665:148::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13772:1:::1;13735:40;;13756:6;;;;;;;;;;;13735:40;;;;;;;;;;;;13803:1;13786:6;;:19;;;;;;;;;;;;;;;;;;13665:148::o:0;34575:120::-;34627:4;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34660:5:::1;34643:14;;:22;;;;;;;;;;;;;;;;;;34683:4;34676:11;;34575:120:::0;:::o;25738:144::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25870:4:::1;25828:31;:39;25860:6;25828:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;25738:144:::0;;:::o;21926:75::-;;;;;;;;;;;;;:::o;21843:76::-;;;;;;;;;;;;;:::o;35810:191::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35869:12:::1;35894:10;35886:24;;35918:21;35886:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35868:76;;;35963:7;35955:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;35857:144;35810:191::o:0;33821:539::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33977:21:::1;34015:1;34001:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33977:40;;34038:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34028:4;34033:1;34028:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;34081:9;34071:4;34076:1;34071:7;;;;;;;;:::i;:::-;;;;;;;:19;;;;;;;;;::::0;::::1;34129:15;:66;;;34203:14;34233:1;34282:4;34301:10;;;;;;;;;;;34326:15;34129:223;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;33908:452;33821:539:::0;;:::o;25041:218::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25105:13:::1;;;;;;;;;;;25104:14;25096:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25174:4;25158:13;;:20;;;;;;;;;;;;;;;;;;25203:4;25189:11;;:18;;;;;;;;;;;;;;;;;;25239:12;25218:18;:33;;;;25041:218::o:0;13023:79::-;13061:7;13088:6;;;;;;;;;;;13081:13;;13023:79;:::o;25978:101::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26064:7:::1;26050:11;;:21;;;;;;;;;;;;;;;;;;25978:101:::0;:::o;4371:104::-;4427:13;4460:7;4453:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4371:104;:::o;36009:204::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36132:1:::1;36103:31;;:17;:31;;::::0;36095:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;36188:17;36169:16;;:36;;;;;;;;;;;;;;;;;;36009:204:::0;:::o;22010:41::-;22047:4;22010:41;:::o;27236:254::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27345:13:::1;27337:21;;:4;:21;;::::0;27329:99:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27441:41;27470:4;27476:5;27441:28;:41::i;:::-;27236:254:::0;;:::o;6077:413::-;6170:4;6187:24;6214:11;:25;6226:12;:10;:12::i;:::-;6214:25;;;;;;;;;;;;;;;:34;6240:7;6214:34;;;;;;;;;;;;;;;;6187:61;;6287:15;6267:16;:35;;6259:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6380:67;6389:12;:10;:12::i;:::-;6403:7;6431:15;6412:16;:34;6380:8;:67::i;:::-;6478:4;6471:11;;;6077:413;;;;:::o;4835:175::-;4921:4;4938:42;4948:12;:10;:12::i;:::-;4962:9;4973:6;4938:9;:42::i;:::-;4998:4;4991:11;;4835:175;;;;:::o;22708:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;22134:27::-;;;;:::o;21513:33::-;;;;;;;;;;;;;:::o;26730:184::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26846:8:::1;26815:19;:28;26835:7;26815:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26888:7;26872:34;;;26897:8;26872:34;;;;;;:::i;:::-;;;;;;;;26730:184:::0;;:::o;25514:215::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25636:4:::1;25630;25626:1;25610:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;25609:31;;;;:::i;:::-;25599:6;:41;;25591:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;25714:6;25704;:17;;;;:::i;:::-;25692:9;:29;;;;25514:215:::0;:::o;26922:306::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27041:9:::1;27037:115;27060:8;;:15;;27056:1;:19;27037:115;;;27132:8;27097:19;:32;27117:8;;27126:1;27117:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27097:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;27077:3;;;;;:::i;:::-;;;;27037:115;;;;27169:51;27201:8;;27211;27169:51;;;;;;;;:::i;:::-;;;;;;;;26922:306:::0;;;:::o;22443:39::-;;;;;;;;;;;;;:::o;21297:35::-;;;;:::o;22247:28::-;;;;:::o;22399:35::-;;;;:::o;5018:151::-;5107:7;5134:11;:18;5146:5;5134:18;;;;;;;;;;;;;;;:27;5153:7;5134:27;;;;;;;;;;;;;;;;5127:34;;5018:151;;;;:::o;21257:33::-;;;;:::o;22209:31::-;;;;:::o;22171:::-;;;;:::o;21430:37::-;;;;:::o;13968:244::-;13245:12;:10;:12::i;:::-;13235:22;;:6;;;;;;;;;;;:22;;;13227:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14077:1:::1;14057:22;;:8;:22;;::::0;14049:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14167:8;14138:38;;14159:6;;;;;;;;;;;14138:38;;;;;;;;;;;;14196:8;14187:6;;:17;;;;;;;;;;;;;;;;;;13968:244:::0;:::o;22489:24::-;;;;:::o;271:98::-;324:7;351:10;344:17;;271:98;:::o;7417:380::-;7570:1;7553:19;;:5;:19;;;7545:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7651:1;7632:21;;:7;:21;;;7624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7735:6;7705:11;:18;7717:5;7705:18;;;;;;;;;;;;;;;:27;7724:7;7705:27;;;;;;;;;;;;;;;:36;;;;7773:7;7757:32;;7766:5;7757:32;;;7782:6;7757:32;;;;;;:::i;:::-;;;;;;;;7417:380;;;:::o;27831:4294::-;27979:1;27963:18;;:4;:18;;;27955:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28056:1;28042:16;;:2;:16;;;28034:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28118:10;:14;28129:2;28118:14;;;;;;;;;;;;;;;;;;;;;;;;;28117:15;:36;;;;;28137:10;:16;28148:4;28137:16;;;;;;;;;;;;;;;;;;;;;;;;;28136:17;28117:36;28109:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;28242:1;28232:6;:11;28229:92;;28260:28;28276:4;28282:2;28286:1;28260:15;:28::i;:::-;28303:7;;28229:92;28345:13;;;;;;;;;;;28341:136;;28382:19;:25;28402:4;28382:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28411:19;:23;28431:2;28411:23;;;;;;;;;;;;;;;;;;;;;;;;;28382:52;28374:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;28341:136;28498:14;;;;;;;;;;;28495:1825;;;28558:7;:5;:7::i;:::-;28550:15;;:4;:15;;;;:49;;;;;28592:7;:5;:7::i;:::-;28586:13;;:2;:13;;;;28550:49;:86;;;;;28634:1;28620:16;;:2;:16;;;;28550:86;:128;;;;;28671:6;28657:21;;:2;:21;;;;28550:128;:158;;;;;28700:8;;;;;;;;;;;28699:9;28550:158;28528:1781;;;28746:13;;;;;;;;;;;28742:148;;28791:19;:25;28811:4;28791:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28820:19;:23;28840:2;28820:23;;;;;;;;;;;;;;;;;;;;;;;;;28791:52;28783:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;28742:148;29049:20;;;;;;;;;;;29045:423;;;29103:7;:5;:7::i;:::-;29097:13;;:2;:13;;;;:47;;;;;29128:15;29114:30;;:2;:30;;;;29097:47;:79;;;;;29162:13;29148:28;;:2;:28;;;;29097:79;29093:356;;;29254:12;29212:28;:39;29241:9;29212:39;;;;;;;;;;;;;;;;:54;29204:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;29413:12;29371:28;:39;29400:9;29371:39;;;;;;;;;;;;;;;:54;;;;29093:356;29045:423;29521:25;:31;29547:4;29521:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;29557:31;:35;29589:2;29557:35;;;;;;;;;;;;;;;;;;;;;;;;;29556:36;29521:71;29517:777;;;29660:6;29639:20;;:27;;;;:::i;:::-;29629:6;:37;;29621:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;29785:9;;29768:13;29778:2;29768:9;:13::i;:::-;29759:6;:22;;;;:::i;:::-;:35;;29751:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29517:777;;;29897:25;:29;29923:2;29897:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;29931:31;:37;29963:4;29931:37;;;;;;;;;;;;;;;;;;;;;;;;;29930:38;29897:71;29893:401;;;30036:6;30015:20;;:27;;;;:::i;:::-;30005:6;:37;;29997:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;29893:401;;;30148:31;:35;30180:2;30148:35;;;;;;;;;;;;;;;;;;;;;;;;;30144:150;;30241:9;;30224:13;30234:2;30224:9;:13::i;:::-;30215:6;:22;;;;:::i;:::-;:35;;30207:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30144:150;29893:401;29517:777;28528:1781;28495:1825;30328:28;30359:24;30377:4;30359:9;:24::i;:::-;30328:55;;30394:12;30433:18;;30409:20;:42;;30394:57;;30482:7;:35;;;;;30506:11;;;;;;;;;;;30482:35;:61;;;;;30535:8;;;;;;;;;;;30534:9;30482:61;:110;;;;;30561:25;:31;30587:4;30561:31;;;;;;;;;;;;;;;;;;;;;;;;;30560:32;30482:110;:153;;;;;30610:19;:25;30630:4;30610:25;;;;;;;;;;;;;;;;;;;;;;;;;30609:26;30482:153;:194;;;;;30653:19;:23;30673:2;30653:23;;;;;;;;;;;;;;;;;;;;;;;;;30652:24;30482:194;30464:322;;;30714:4;30703:8;;:15;;;;;;;;;;;;;;;;;;30733:10;:8;:10::i;:::-;30769:5;30758:8;;:16;;;;;;;;;;;;;;;;;;30464:322;30798:12;30814:8;;;;;;;;;;;30813:9;30798:24;;30923:19;:25;30943:4;30923:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;30952:19;:23;30972:2;30952:23;;;;;;;;;;;;;;;;;;;;;;;;;30923:52;30920:99;;;31002:5;30992:15;;30920:99;31039:12;31130:7;31127:943;;;31219:25;:29;31245:2;31219:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;31268:1;31252:13;;:17;31219:50;31215:698;;;31296:41;22047:4;31296:25;31307:13;;31296:6;:10;;:25;;;;:::i;:::-;:29;;:41;;;;:::i;:::-;31289:48;;31373:4;31356:13;;:21;;;;;;;:::i;:::-;;;;;;;;31444:13;;31425:16;;31418:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;31396:18;;:61;;;;;;;:::i;:::-;;;;;;;;31519:13;;31500:16;;31493:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;31476:13;;:56;;;;;;;:::i;:::-;;;;;;;;31215:698;;;31607:25;:31;31633:4;31607:31;;;;;;;;;;;;;;;;;;;;;;;;;31604:309;;;31666:40;22047:4;31666:24;31677:12;;31666:6;:10;;:24;;;;:::i;:::-;:28;;:40;;;;:::i;:::-;31659:47;;31742:4;31725:13;;:21;;;;;;;:::i;:::-;;;;;;;;31812:12;;31794:15;;31787:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;31765:18;;:59;;;;;;;:::i;:::-;;;;;;;;31885:12;;31867:15;;31860:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;31843:13;;:54;;;;;;;:::i;:::-;;;;;;;;31604:309;31215:698;31939:1;31932:4;:8;31929:93;;;31964:42;31980:4;31994;32001;31964:15;:42::i;:::-;31929:93;32054:4;32044:14;;;;;:::i;:::-;;;31127:943;32082:33;32098:4;32104:2;32108:6;32082:15;:33::i;:::-;27944:4181;;;;27831:4294;;;;:::o;32137:601::-;32265:21;32303:1;32289:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32265:40;;32334:4;32316;32321:1;32316:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;32360:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32350:4;32355:1;32350:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;32395:62;32412:4;32427:15;32445:11;32395:8;:62::i;:::-;32496:15;:66;;;32577:11;32603:1;32647:4;32674;32694:15;32496:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32192:546;32137:601;:::o;27498:186::-;27615:5;27581:25;:31;27607:4;27581:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27670:5;27636:40;;27664:4;27636:40;;;;;;;;;;;;27498:186;;:::o;6498:614::-;6656:1;6638:20;;:6;:20;;;6630:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6740:1;6719:23;;:9;:23;;;6711:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6795:21;6819:9;:17;6829:6;6819:17;;;;;;;;;;;;;;;;6795:41;;6872:6;6855:13;:23;;6847:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6993:6;6977:13;:22;6957:9;:17;6967:6;6957:17;;;;;;;;;;;;;;;:42;;;;7045:6;7021:9;:20;7031:9;7021:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7086:9;7069:35;;7078:6;7069:35;;;7097:6;7069:35;;;;;;:::i;:::-;;;;;;;;6619:493;6498:614;;;:::o;34703:891::-;34742:23;34768:24;34786:4;34768:9;:24::i;:::-;34742:50;;34803:25;34847:18;;34831:13;;:34;;;;:::i;:::-;34803:62;;34876:12;34931:1;34912:15;:20;:46;;;;34957:1;34936:17;:22;34912:46;34909:60;;;34961:7;;;;;34909:60;34989:26;35018:15;34989:44;;35044:36;35061:18;35044:16;:36::i;:::-;35094:18;35115:21;35094:42;;35149:18;35170:52;35204:17;35170:29;35185:13;;35170:10;:14;;:29;;;;:::i;:::-;:33;;:52;;;;:::i;:::-;35149:73;;35277:45;35293:10;35305:16;;;;;;;;;;;35277:15;:45::i;:::-;35367:10;35343:20;;:34;;;;;;;:::i;:::-;;;;;;;;35430:15;;;;;;;;;;;35422:29;;35459:21;35422:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35409:76;;;;;35514:1;35498:13;:17;;;;35547:1;35526:18;:22;;;;35575:1;35559:13;:17;;;;34731:863;;;;;;34703:891;:::o;9421:471::-;9479:7;9729:1;9724;:6;9720:47;;9754:1;9747:8;;;;9720:47;9779:9;9795:1;9791;:5;;;;:::i;:::-;9779:17;;9824:1;9819;9815;:5;;;;:::i;:::-;:10;9807:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9883:1;9876:8;;;9421:471;;;;;:::o;10368:132::-;10426:7;10453:39;10457:1;10460;10453:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;10446:46;;10368:132;;;;:::o;33280:529::-;33426:21;33464:1;33450:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33426:40;;33487:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33477:4;33482:1;33477:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;33530:9;33520:4;33525:1;33520:7;;;;;;;;:::i;:::-;;;;;;;:19;;;;;;;;;;;33578:15;:66;;;33652:14;33682:1;33731:4;33750:10;;;;;;;;;;;33775:15;33578:223;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33357:452;33280:529;;:::o;10996:278::-;11082:7;11114:1;11110;:5;11117:12;11102:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11141:9;11157:1;11153;:5;;;;:::i;:::-;11141:17;;11265:1;11258:8;;;10996:278;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:126::-;1207:7;1247:42;1240:5;1236:54;1225:65;;1170:126;;;:::o;1302:96::-;1339:7;1368:24;1386:5;1368:24;:::i;:::-;1357:35;;1302:96;;;:::o;1404:118::-;1491:24;1509:5;1491:24;:::i;:::-;1486:3;1479:37;1404:118;;:::o;1528:222::-;1621:4;1659:2;1648:9;1644:18;1636:26;;1672:71;1740:1;1729:9;1725:17;1716:6;1672:71;:::i;:::-;1528:222;;;;:::o;1756:99::-;1808:6;1842:5;1836:12;1826:22;;1756:99;;;:::o;1861:169::-;1945:11;1979:6;1974:3;1967:19;2019:4;2014:3;2010:14;1995:29;;1861:169;;;;:::o;2036:307::-;2104:1;2114:113;2128:6;2125:1;2122:13;2114:113;;;2213:1;2208:3;2204:11;2198:18;2194:1;2189:3;2185:11;2178:39;2150:2;2147:1;2143:10;2138:15;;2114:113;;;2245:6;2242:1;2239:13;2236:101;;;2325:1;2316:6;2311:3;2307:16;2300:27;2236:101;2085:258;2036:307;;;:::o;2349:102::-;2390:6;2441:2;2437:7;2432:2;2425:5;2421:14;2417:28;2407:38;;2349:102;;;:::o;2457:364::-;2545:3;2573:39;2606:5;2573:39;:::i;:::-;2628:71;2692:6;2687:3;2628:71;:::i;:::-;2621:78;;2708:52;2753:6;2748:3;2741:4;2734:5;2730:16;2708:52;:::i;:::-;2785:29;2807:6;2785:29;:::i;:::-;2780:3;2776:39;2769:46;;2549:272;2457:364;;;;:::o;2827:313::-;2940:4;2978:2;2967:9;2963:18;2955:26;;3027:9;3021:4;3017:20;3013:1;3002:9;2998:17;2991:47;3055:78;3128:4;3119:6;3055:78;:::i;:::-;3047:86;;2827:313;;;;:::o;3146:122::-;3219:24;3237:5;3219:24;:::i;:::-;3212:5;3209:35;3199:63;;3258:1;3255;3248:12;3199:63;3146:122;:::o;3274:139::-;3320:5;3358:6;3345:20;3336:29;;3374:33;3401:5;3374:33;:::i;:::-;3274:139;;;;:::o;3419:474::-;3487:6;3495;3544:2;3532:9;3523:7;3519:23;3515:32;3512:119;;;3550:79;;:::i;:::-;3512:119;3670:1;3695:53;3740:7;3731:6;3720:9;3716:22;3695:53;:::i;:::-;3685:63;;3641:117;3797:2;3823:53;3868:7;3859:6;3848:9;3844:22;3823:53;:::i;:::-;3813:63;;3768:118;3419:474;;;;;:::o;3899:90::-;3933:7;3976:5;3969:13;3962:21;3951:32;;3899:90;;;:::o;3995:109::-;4076:21;4091:5;4076:21;:::i;:::-;4071:3;4064:34;3995:109;;:::o;4110:210::-;4197:4;4235:2;4224:9;4220:18;4212:26;;4248:65;4310:1;4299:9;4295:17;4286:6;4248:65;:::i;:::-;4110:210;;;;:::o;4326:118::-;4413:24;4431:5;4413:24;:::i;:::-;4408:3;4401:37;4326:118;;:::o;4450:222::-;4543:4;4581:2;4570:9;4566:18;4558:26;;4594:71;4662:1;4651:9;4647:17;4638:6;4594:71;:::i;:::-;4450:222;;;;:::o;4678:329::-;4737:6;4786:2;4774:9;4765:7;4761:23;4757:32;4754:119;;;4792:79;;:::i;:::-;4754:119;4912:1;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4883:117;4678:329;;;;:::o;5013:60::-;5041:3;5062:5;5055:12;;5013:60;;;:::o;5079:142::-;5129:9;5162:53;5180:34;5189:24;5207:5;5189:24;:::i;:::-;5180:34;:::i;:::-;5162:53;:::i;:::-;5149:66;;5079:142;;;:::o;5227:126::-;5277:9;5310:37;5341:5;5310:37;:::i;:::-;5297:50;;5227:126;;;:::o;5359:153::-;5436:9;5469:37;5500:5;5469:37;:::i;:::-;5456:50;;5359:153;;;:::o;5518:185::-;5632:64;5690:5;5632:64;:::i;:::-;5627:3;5620:77;5518:185;;:::o;5709:276::-;5829:4;5867:2;5856:9;5852:18;5844:26;;5880:98;5975:1;5964:9;5960:17;5951:6;5880:98;:::i;:::-;5709:276;;;;:::o;5991:117::-;6100:1;6097;6090:12;6114:180;6162:77;6159:1;6152:88;6259:4;6256:1;6249:15;6283:4;6280:1;6273:15;6300:281;6383:27;6405:4;6383:27;:::i;:::-;6375:6;6371:40;6513:6;6501:10;6498:22;6477:18;6465:10;6462:34;6459:62;6456:88;;;6524:18;;:::i;:::-;6456:88;6564:10;6560:2;6553:22;6343:238;6300:281;;:::o;6587:129::-;6621:6;6648:20;;:::i;:::-;6638:30;;6677:33;6705:4;6697:6;6677:33;:::i;:::-;6587:129;;;:::o;6722:311::-;6799:4;6889:18;6881:6;6878:30;6875:56;;;6911:18;;:::i;:::-;6875:56;6961:4;6953:6;6949:17;6941:25;;7021:4;7015;7011:15;7003:23;;6722:311;;;:::o;7039:117::-;7148:1;7145;7138:12;7179:710;7275:5;7300:81;7316:64;7373:6;7316:64;:::i;:::-;7300:81;:::i;:::-;7291:90;;7401:5;7430:6;7423:5;7416:21;7464:4;7457:5;7453:16;7446:23;;7517:4;7509:6;7505:17;7497:6;7493:30;7546:3;7538:6;7535:15;7532:122;;;7565:79;;:::i;:::-;7532:122;7680:6;7663:220;7697:6;7692:3;7689:15;7663:220;;;7772:3;7801:37;7834:3;7822:10;7801:37;:::i;:::-;7796:3;7789:50;7868:4;7863:3;7859:14;7852:21;;7739:144;7723:4;7718:3;7714:14;7707:21;;7663:220;;;7667:21;7281:608;;7179:710;;;;;:::o;7912:370::-;7983:5;8032:3;8025:4;8017:6;8013:17;8009:27;7999:122;;8040:79;;:::i;:::-;7999:122;8157:6;8144:20;8182:94;8272:3;8264:6;8257:4;8249:6;8245:17;8182:94;:::i;:::-;8173:103;;7989:293;7912:370;;;;:::o;8288:116::-;8358:21;8373:5;8358:21;:::i;:::-;8351:5;8348:32;8338:60;;8394:1;8391;8384:12;8338:60;8288:116;:::o;8410:133::-;8453:5;8491:6;8478:20;8469:29;;8507:30;8531:5;8507:30;:::i;:::-;8410:133;;;;:::o;8549:678::-;8639:6;8647;8696:2;8684:9;8675:7;8671:23;8667:32;8664:119;;;8702:79;;:::i;:::-;8664:119;8850:1;8839:9;8835:17;8822:31;8880:18;8872:6;8869:30;8866:117;;;8902:79;;:::i;:::-;8866:117;9007:78;9077:7;9068:6;9057:9;9053:22;9007:78;:::i;:::-;8997:88;;8793:302;9134:2;9160:50;9202:7;9193:6;9182:9;9178:22;9160:50;:::i;:::-;9150:60;;9105:115;8549:678;;;;;:::o;9233:329::-;9292:6;9341:2;9329:9;9320:7;9316:23;9312:32;9309:119;;;9347:79;;:::i;:::-;9309:119;9467:1;9492:53;9537:7;9528:6;9517:9;9513:22;9492:53;:::i;:::-;9482:63;;9438:117;9233:329;;;;:::o;9568:619::-;9645:6;9653;9661;9710:2;9698:9;9689:7;9685:23;9681:32;9678:119;;;9716:79;;:::i;:::-;9678:119;9836:1;9861:53;9906:7;9897:6;9886:9;9882:22;9861:53;:::i;:::-;9851:63;;9807:117;9963:2;9989:53;10034:7;10025:6;10014:9;10010:22;9989:53;:::i;:::-;9979:63;;9934:118;10091:2;10117:53;10162:7;10153:6;10142:9;10138:22;10117:53;:::i;:::-;10107:63;;10062:118;9568:619;;;;;:::o;10193:86::-;10228:7;10268:4;10261:5;10257:16;10246:27;;10193:86;;;:::o;10285:112::-;10368:22;10384:5;10368:22;:::i;:::-;10363:3;10356:35;10285:112;;:::o;10403:214::-;10492:4;10530:2;10519:9;10515:18;10507:26;;10543:67;10607:1;10596:9;10592:17;10583:6;10543:67;:::i;:::-;10403:214;;;;:::o;10623:468::-;10688:6;10696;10745:2;10733:9;10724:7;10720:23;10716:32;10713:119;;;10751:79;;:::i;:::-;10713:119;10871:1;10896:53;10941:7;10932:6;10921:9;10917:22;10896:53;:::i;:::-;10886:63;;10842:117;10998:2;11024:50;11066:7;11057:6;11046:9;11042:22;11024:50;:::i;:::-;11014:60;;10969:115;10623:468;;;;;:::o;11097:474::-;11165:6;11173;11222:2;11210:9;11201:7;11197:23;11193:32;11190:119;;;11228:79;;:::i;:::-;11190:119;11348:1;11373:53;11418:7;11409:6;11398:9;11394:22;11373:53;:::i;:::-;11363:63;;11319:117;11475:2;11501:53;11546:7;11537:6;11526:9;11522:22;11501:53;:::i;:::-;11491:63;;11446:118;11097:474;;;;;:::o;11577:323::-;11633:6;11682:2;11670:9;11661:7;11657:23;11653:32;11650:119;;;11688:79;;:::i;:::-;11650:119;11808:1;11833:50;11875:7;11866:6;11855:9;11851:22;11833:50;:::i;:::-;11823:60;;11779:114;11577:323;;;;:::o;11906:117::-;12015:1;12012;12005:12;12046:568;12119:8;12129:6;12179:3;12172:4;12164:6;12160:17;12156:27;12146:122;;12187:79;;:::i;:::-;12146:122;12300:6;12287:20;12277:30;;12330:18;12322:6;12319:30;12316:117;;;12352:79;;:::i;:::-;12316:117;12466:4;12458:6;12454:17;12442:29;;12520:3;12512:4;12504:6;12500:17;12490:8;12486:32;12483:41;12480:128;;;12527:79;;:::i;:::-;12480:128;12046:568;;;;;:::o;12620:698::-;12712:6;12720;12728;12777:2;12765:9;12756:7;12752:23;12748:32;12745:119;;;12783:79;;:::i;:::-;12745:119;12931:1;12920:9;12916:17;12903:31;12961:18;12953:6;12950:30;12947:117;;;12983:79;;:::i;:::-;12947:117;13096:80;13168:7;13159:6;13148:9;13144:22;13096:80;:::i;:::-;13078:98;;;;12874:312;13225:2;13251:50;13293:7;13284:6;13273:9;13269:22;13251:50;:::i;:::-;13241:60;;13196:115;12620:698;;;;;:::o;13324:474::-;13392:6;13400;13449:2;13437:9;13428:7;13424:23;13420:32;13417:119;;;13455:79;;:::i;:::-;13417:119;13575:1;13600:53;13645:7;13636:6;13625:9;13621:22;13600:53;:::i;:::-;13590:63;;13546:117;13702:2;13728:53;13773:7;13764:6;13753:9;13749:22;13728:53;:::i;:::-;13718:63;;13673:118;13324:474;;;;;:::o;13804:182::-;13944:34;13940:1;13932:6;13928:14;13921:58;13804:182;:::o;13992:366::-;14134:3;14155:67;14219:2;14214:3;14155:67;:::i;:::-;14148:74;;14231:93;14320:3;14231:93;:::i;:::-;14349:2;14344:3;14340:12;14333:19;;13992:366;;;:::o;14364:419::-;14530:4;14568:2;14557:9;14553:18;14545:26;;14617:9;14611:4;14607:20;14603:1;14592:9;14588:17;14581:47;14645:131;14771:4;14645:131;:::i;:::-;14637:139;;14364:419;;;:::o;14789:179::-;14929:31;14925:1;14917:6;14913:14;14906:55;14789:179;:::o;14974:366::-;15116:3;15137:67;15201:2;15196:3;15137:67;:::i;:::-;15130:74;;15213:93;15302:3;15213:93;:::i;:::-;15331:2;15326:3;15322:12;15315:19;;14974:366;;;:::o;15346:419::-;15512:4;15550:2;15539:9;15535:18;15527:26;;15599:9;15593:4;15589:20;15585:1;15574:9;15570:17;15563:47;15627:131;15753:4;15627:131;:::i;:::-;15619:139;;15346:419;;;:::o;15771:180::-;15819:77;15816:1;15809:88;15916:4;15913:1;15906:15;15940:4;15937:1;15930:15;15957:320;16001:6;16038:1;16032:4;16028:12;16018:22;;16085:1;16079:4;16075:12;16106:18;16096:81;;16162:4;16154:6;16150:17;16140:27;;16096:81;16224:2;16216:6;16213:14;16193:18;16190:38;16187:84;;16243:18;;:::i;:::-;16187:84;16008:269;15957:320;;;:::o;16283:180::-;16331:77;16328:1;16321:88;16428:4;16425:1;16418:15;16452:4;16449:1;16442:15;16469:180;16517:77;16514:1;16507:88;16614:4;16611:1;16604:15;16638:4;16635:1;16628:15;16655:233;16694:3;16717:24;16735:5;16717:24;:::i;:::-;16708:33;;16763:66;16756:5;16753:77;16750:103;;16833:18;;:::i;:::-;16750:103;16880:1;16873:5;16869:13;16862:20;;16655:233;;;:::o;16894:348::-;16934:7;16957:20;16975:1;16957:20;:::i;:::-;16952:25;;16991:20;17009:1;16991:20;:::i;:::-;16986:25;;17179:1;17111:66;17107:74;17104:1;17101:81;17096:1;17089:9;17082:17;17078:105;17075:131;;;17186:18;;:::i;:::-;17075:131;17234:1;17231;17227:9;17216:20;;16894:348;;;;:::o;17248:180::-;17296:77;17293:1;17286:88;17393:4;17390:1;17383:15;17417:4;17414:1;17407:15;17434:185;17474:1;17491:20;17509:1;17491:20;:::i;:::-;17486:25;;17525:20;17543:1;17525:20;:::i;:::-;17520:25;;17564:1;17554:35;;17569:18;;:::i;:::-;17554:35;17611:1;17608;17604:9;17599:14;;17434:185;;;;:::o;17625:234::-;17765:34;17761:1;17753:6;17749:14;17742:58;17834:17;17829:2;17821:6;17817:15;17810:42;17625:234;:::o;17865:366::-;18007:3;18028:67;18092:2;18087:3;18028:67;:::i;:::-;18021:74;;18104:93;18193:3;18104:93;:::i;:::-;18222:2;18217:3;18213:12;18206:19;;17865:366;;;:::o;18237:419::-;18403:4;18441:2;18430:9;18426:18;18418:26;;18490:9;18484:4;18480:20;18476:1;18465:9;18461:17;18454:47;18518:131;18644:4;18518:131;:::i;:::-;18510:139;;18237:419;;;:::o;18662:227::-;18802:34;18798:1;18790:6;18786:14;18779:58;18871:10;18866:2;18858:6;18854:15;18847:35;18662:227;:::o;18895:366::-;19037:3;19058:67;19122:2;19117:3;19058:67;:::i;:::-;19051:74;;19134:93;19223:3;19134:93;:::i;:::-;19252:2;19247:3;19243:12;19236:19;;18895:366;;;:::o;19267:419::-;19433:4;19471:2;19460:9;19456:18;19448:26;;19520:9;19514:4;19510:20;19506:1;19495:9;19491:17;19484:47;19548:131;19674:4;19548:131;:::i;:::-;19540:139;;19267:419;;;:::o;19692:305::-;19732:3;19751:20;19769:1;19751:20;:::i;:::-;19746:25;;19785:20;19803:1;19785:20;:::i;:::-;19780:25;;19939:1;19871:66;19867:74;19864:1;19861:81;19858:107;;;19945:18;;:::i;:::-;19858:107;19989:1;19986;19982:9;19975:16;;19692:305;;;;:::o;20003:147::-;20104:11;20141:3;20126:18;;20003:147;;;;:::o;20156:114::-;;:::o;20276:398::-;20435:3;20456:83;20537:1;20532:3;20456:83;:::i;:::-;20449:90;;20548:93;20637:3;20548:93;:::i;:::-;20666:1;20661:3;20657:11;20650:18;;20276:398;;;:::o;20680:379::-;20864:3;20886:147;21029:3;20886:147;:::i;:::-;20879:154;;21050:3;21043:10;;20680:379;;;:::o;21065:168::-;21205:20;21201:1;21193:6;21189:14;21182:44;21065:168;:::o;21239:366::-;21381:3;21402:67;21466:2;21461:3;21402:67;:::i;:::-;21395:74;;21478:93;21567:3;21478:93;:::i;:::-;21596:2;21591:3;21587:12;21580:19;;21239:366;;;:::o;21611:419::-;21777:4;21815:2;21804:9;21800:18;21792:26;;21864:9;21858:4;21854:20;21850:1;21839:9;21835:17;21828:47;21892:131;22018:4;21892:131;:::i;:::-;21884:139;;21611:419;;;:::o;22036:143::-;22093:5;22124:6;22118:13;22109:22;;22140:33;22167:5;22140:33;:::i;:::-;22036:143;;;;:::o;22185:351::-;22255:6;22304:2;22292:9;22283:7;22279:23;22275:32;22272:119;;;22310:79;;:::i;:::-;22272:119;22430:1;22455:64;22511:7;22502:6;22491:9;22487:22;22455:64;:::i;:::-;22445:74;;22401:128;22185:351;;;;:::o;22542:85::-;22587:7;22616:5;22605:16;;22542:85;;;:::o;22633:158::-;22691:9;22724:61;22742:42;22751:32;22777:5;22751:32;:::i;:::-;22742:42;:::i;:::-;22724:61;:::i;:::-;22711:74;;22633:158;;;:::o;22797:147::-;22892:45;22931:5;22892:45;:::i;:::-;22887:3;22880:58;22797:147;;:::o;22950:114::-;23017:6;23051:5;23045:12;23035:22;;22950:114;;;:::o;23070:184::-;23169:11;23203:6;23198:3;23191:19;23243:4;23238:3;23234:14;23219:29;;23070:184;;;;:::o;23260:132::-;23327:4;23350:3;23342:11;;23380:4;23375:3;23371:14;23363:22;;23260:132;;;:::o;23398:108::-;23475:24;23493:5;23475:24;:::i;:::-;23470:3;23463:37;23398:108;;:::o;23512:179::-;23581:10;23602:46;23644:3;23636:6;23602:46;:::i;:::-;23680:4;23675:3;23671:14;23657:28;;23512:179;;;;:::o;23697:113::-;23767:4;23799;23794:3;23790:14;23782:22;;23697:113;;;:::o;23846:732::-;23965:3;23994:54;24042:5;23994:54;:::i;:::-;24064:86;24143:6;24138:3;24064:86;:::i;:::-;24057:93;;24174:56;24224:5;24174:56;:::i;:::-;24253:7;24284:1;24269:284;24294:6;24291:1;24288:13;24269:284;;;24370:6;24364:13;24397:63;24456:3;24441:13;24397:63;:::i;:::-;24390:70;;24483:60;24536:6;24483:60;:::i;:::-;24473:70;;24329:224;24316:1;24313;24309:9;24304:14;;24269:284;;;24273:14;24569:3;24562:10;;23970:608;;;23846:732;;;;:::o;24584:720::-;24819:4;24857:3;24846:9;24842:19;24834:27;;24871:79;24947:1;24936:9;24932:17;24923:6;24871:79;:::i;:::-;24997:9;24991:4;24987:20;24982:2;24971:9;24967:18;24960:48;25025:108;25128:4;25119:6;25025:108;:::i;:::-;25017:116;;25143:72;25211:2;25200:9;25196:18;25187:6;25143:72;:::i;:::-;25225;25293:2;25282:9;25278:18;25269:6;25225:72;:::i;:::-;24584:720;;;;;;;:::o;25310:174::-;25450:26;25446:1;25438:6;25434:14;25427:50;25310:174;:::o;25490:366::-;25632:3;25653:67;25717:2;25712:3;25653:67;:::i;:::-;25646:74;;25729:93;25818:3;25729:93;:::i;:::-;25847:2;25842:3;25838:12;25831:19;;25490:366;;;:::o;25862:419::-;26028:4;26066:2;26055:9;26051:18;26043:26;;26115:9;26109:4;26105:20;26101:1;26090:9;26086:17;26079:47;26143:131;26269:4;26143:131;:::i;:::-;26135:139;;25862:419;;;:::o;26287:169::-;26427:21;26423:1;26415:6;26411:14;26404:45;26287:169;:::o;26462:366::-;26604:3;26625:67;26689:2;26684:3;26625:67;:::i;:::-;26618:74;;26701:93;26790:3;26701:93;:::i;:::-;26819:2;26814:3;26810:12;26803:19;;26462:366;;;:::o;26834:419::-;27000:4;27038:2;27027:9;27023:18;27015:26;;27087:9;27081:4;27077:20;27073:1;27062:9;27058:17;27051:47;27115:131;27241:4;27115:131;:::i;:::-;27107:139;;26834:419;;;:::o;27259:289::-;27399:34;27395:1;27387:6;27383:14;27376:58;27468:34;27463:2;27455:6;27451:15;27444:59;27537:3;27532:2;27524:6;27520:15;27513:28;27259:289;:::o;27554:366::-;27696:3;27717:67;27781:2;27776:3;27717:67;:::i;:::-;27710:74;;27793:93;27882:3;27793:93;:::i;:::-;27911:2;27906:3;27902:12;27895:19;;27554:366;;;:::o;27926:419::-;28092:4;28130:2;28119:9;28115:18;28107:26;;28179:9;28173:4;28169:20;28165:1;28154:9;28150:17;28143:47;28207:131;28333:4;28207:131;:::i;:::-;28199:139;;27926:419;;;:::o;28351:224::-;28491:34;28487:1;28479:6;28475:14;28468:58;28560:7;28555:2;28547:6;28543:15;28536:32;28351:224;:::o;28581:366::-;28723:3;28744:67;28808:2;28803:3;28744:67;:::i;:::-;28737:74;;28820:93;28909:3;28820:93;:::i;:::-;28938:2;28933:3;28929:12;28922:19;;28581:366;;;:::o;28953:419::-;29119:4;29157:2;29146:9;29142:18;29134:26;;29206:9;29200:4;29196:20;29192:1;29181:9;29177:17;29170:47;29234:131;29360:4;29234:131;:::i;:::-;29226:139;;28953:419;;;:::o;29378:223::-;29518:34;29514:1;29506:6;29502:14;29495:58;29587:6;29582:2;29574:6;29570:15;29563:31;29378:223;:::o;29607:366::-;29749:3;29770:67;29834:2;29829:3;29770:67;:::i;:::-;29763:74;;29846:93;29935:3;29846:93;:::i;:::-;29964:2;29959:3;29955:12;29948:19;;29607:366;;;:::o;29979:419::-;30145:4;30183:2;30172:9;30168:18;30160:26;;30232:9;30226:4;30222:20;30218:1;30207:9;30203:17;30196:47;30260:131;30386:4;30260:131;:::i;:::-;30252:139;;29979:419;;;:::o;30404:102::-;30473:4;30496:3;30488:11;;30404:102;;;:::o;30512:122::-;30564:5;30589:39;30624:2;30619:3;30615:12;30610:3;30589:39;:::i;:::-;30580:48;;30512:122;;;;:::o;30640:115::-;30712:4;30744;30739:3;30735:14;30727:22;;30640:115;;;:::o;30791:699::-;30920:3;30943:86;31022:6;31017:3;30943:86;:::i;:::-;30936:93;;31053:58;31105:5;31053:58;:::i;:::-;31134:7;31165:1;31150:315;31175:6;31172:1;31169:13;31150:315;;;31245:42;31280:6;31271:7;31245:42;:::i;:::-;31307:63;31366:3;31351:13;31307:63;:::i;:::-;31300:70;;31393:62;31448:6;31393:62;:::i;:::-;31383:72;;31210:255;31197:1;31194;31190:9;31185:14;;31150:315;;;31154:14;31481:3;31474:10;;30925:565;;30791:699;;;;;:::o;31496:491::-;31671:4;31709:2;31698:9;31694:18;31686:26;;31758:9;31752:4;31748:20;31744:1;31733:9;31729:17;31722:47;31786:118;31899:4;31890:6;31882;31786:118;:::i;:::-;31778:126;;31914:66;31976:2;31965:9;31961:18;31952:6;31914:66;:::i;:::-;31496:491;;;;;;:::o;31993:225::-;32133:34;32129:1;32121:6;32117:14;32110:58;32202:8;32197:2;32189:6;32185:15;32178:33;31993:225;:::o;32224:366::-;32366:3;32387:67;32451:2;32446:3;32387:67;:::i;:::-;32380:74;;32463:93;32552:3;32463:93;:::i;:::-;32581:2;32576:3;32572:12;32565:19;;32224:366;;;:::o;32596:419::-;32762:4;32800:2;32789:9;32785:18;32777:26;;32849:9;32843:4;32839:20;32835:1;32824:9;32820:17;32813:47;32877:131;33003:4;32877:131;:::i;:::-;32869:139;;32596:419;;;:::o;33021:223::-;33161:34;33157:1;33149:6;33145:14;33138:58;33230:6;33225:2;33217:6;33213:15;33206:31;33021:223;:::o;33250:366::-;33392:3;33413:67;33477:2;33472:3;33413:67;:::i;:::-;33406:74;;33489:93;33578:3;33489:93;:::i;:::-;33607:2;33602:3;33598:12;33591:19;;33250:366;;;:::o;33622:419::-;33788:4;33826:2;33815:9;33811:18;33803:26;;33875:9;33869:4;33865:20;33861:1;33850:9;33846:17;33839:47;33903:131;34029:4;33903:131;:::i;:::-;33895:139;;33622:419;;;:::o;34047:221::-;34187:34;34183:1;34175:6;34171:14;34164:58;34256:4;34251:2;34243:6;34239:15;34232:29;34047:221;:::o;34274:366::-;34416:3;34437:67;34501:2;34496:3;34437:67;:::i;:::-;34430:74;;34513:93;34602:3;34513:93;:::i;:::-;34631:2;34626:3;34622:12;34615:19;;34274:366;;;:::o;34646:419::-;34812:4;34850:2;34839:9;34835:18;34827:26;;34899:9;34893:4;34889:20;34885:1;34874:9;34870:17;34863:47;34927:131;35053:4;34927:131;:::i;:::-;34919:139;;34646:419;;;:::o;35071:224::-;35211:34;35207:1;35199:6;35195:14;35188:58;35280:7;35275:2;35267:6;35263:15;35256:32;35071:224;:::o;35301:366::-;35443:3;35464:67;35528:2;35523:3;35464:67;:::i;:::-;35457:74;;35540:93;35629:3;35540:93;:::i;:::-;35658:2;35653:3;35649:12;35642:19;;35301:366;;;:::o;35673:419::-;35839:4;35877:2;35866:9;35862:18;35854:26;;35926:9;35920:4;35916:20;35912:1;35901:9;35897:17;35890:47;35954:131;36080:4;35954:131;:::i;:::-;35946:139;;35673:419;;;:::o;36098:222::-;36238:34;36234:1;36226:6;36222:14;36215:58;36307:5;36302:2;36294:6;36290:15;36283:30;36098:222;:::o;36326:366::-;36468:3;36489:67;36553:2;36548:3;36489:67;:::i;:::-;36482:74;;36565:93;36654:3;36565:93;:::i;:::-;36683:2;36678:3;36674:12;36667:19;;36326:366;;;:::o;36698:419::-;36864:4;36902:2;36891:9;36887:18;36879:26;;36951:9;36945:4;36941:20;36937:1;36926:9;36922:17;36915:47;36979:131;37105:4;36979:131;:::i;:::-;36971:139;;36698:419;;;:::o;37123:236::-;37263:34;37259:1;37251:6;37247:14;37240:58;37332:19;37327:2;37319:6;37315:15;37308:44;37123:236;:::o;37365:366::-;37507:3;37528:67;37592:2;37587:3;37528:67;:::i;:::-;37521:74;;37604:93;37693:3;37604:93;:::i;:::-;37722:2;37717:3;37713:12;37706:19;;37365:366;;;:::o;37737:419::-;37903:4;37941:2;37930:9;37926:18;37918:26;;37990:9;37984:4;37980:20;37976:1;37965:9;37961:17;37954:47;38018:131;38144:4;38018:131;:::i;:::-;38010:139;;37737:419;;;:::o;38162:176::-;38302:28;38298:1;38290:6;38286:14;38279:52;38162:176;:::o;38344:366::-;38486:3;38507:67;38571:2;38566:3;38507:67;:::i;:::-;38500:74;;38583:93;38672:3;38583:93;:::i;:::-;38701:2;38696:3;38692:12;38685:19;;38344:366;;;:::o;38716:419::-;38882:4;38920:2;38909:9;38905:18;38897:26;;38969:9;38963:4;38959:20;38955:1;38944:9;38940:17;38933:47;38997:131;39123:4;38997:131;:::i;:::-;38989:139;;38716:419;;;:::o;39141:172::-;39281:24;39277:1;39269:6;39265:14;39258:48;39141:172;:::o;39319:366::-;39461:3;39482:67;39546:2;39541:3;39482:67;:::i;:::-;39475:74;;39558:93;39647:3;39558:93;:::i;:::-;39676:2;39671:3;39667:12;39660:19;;39319:366;;;:::o;39691:419::-;39857:4;39895:2;39884:9;39880:18;39872:26;;39944:9;39938:4;39934:20;39930:1;39919:9;39915:17;39908:47;39972:131;40098:4;39972:131;:::i;:::-;39964:139;;39691:419;;;:::o;40116:297::-;40256:34;40252:1;40244:6;40240:14;40233:58;40325:34;40320:2;40312:6;40308:15;40301:59;40394:11;40389:2;40381:6;40377:15;40370:36;40116:297;:::o;40419:366::-;40561:3;40582:67;40646:2;40641:3;40582:67;:::i;:::-;40575:74;;40658:93;40747:3;40658:93;:::i;:::-;40776:2;40771:3;40767:12;40760:19;;40419:366;;;:::o;40791:419::-;40957:4;40995:2;40984:9;40980:18;40972:26;;41044:9;41038:4;41034:20;41030:1;41019:9;41015:17;41008:47;41072:131;41198:4;41072:131;:::i;:::-;41064:139;;40791:419;;;:::o;41216:240::-;41356:34;41352:1;41344:6;41340:14;41333:58;41425:23;41420:2;41412:6;41408:15;41401:48;41216:240;:::o;41462:366::-;41604:3;41625:67;41689:2;41684:3;41625:67;:::i;:::-;41618:74;;41701:93;41790:3;41701:93;:::i;:::-;41819:2;41814:3;41810:12;41803:19;;41462:366;;;:::o;41834:419::-;42000:4;42038:2;42027:9;42023:18;42015:26;;42087:9;42081:4;42077:20;42073:1;42062:9;42058:17;42051:47;42115:131;42241:4;42115:131;:::i;:::-;42107:139;;41834:419;;;:::o;42259:169::-;42399:21;42395:1;42387:6;42383:14;42376:45;42259:169;:::o;42434:366::-;42576:3;42597:67;42661:2;42656:3;42597:67;:::i;:::-;42590:74;;42673:93;42762:3;42673:93;:::i;:::-;42791:2;42786:3;42782:12;42775:19;;42434:366;;;:::o;42806:419::-;42972:4;43010:2;42999:9;42995:18;42987:26;;43059:9;43053:4;43049:20;43045:1;43034:9;43030:17;43023:47;43087:131;43213:4;43087:131;:::i;:::-;43079:139;;42806:419;;;:::o;43231:241::-;43371:34;43367:1;43359:6;43355:14;43348:58;43440:24;43435:2;43427:6;43423:15;43416:49;43231:241;:::o;43478:366::-;43620:3;43641:67;43705:2;43700:3;43641:67;:::i;:::-;43634:74;;43717:93;43806:3;43717:93;:::i;:::-;43835:2;43830:3;43826:12;43819:19;;43478:366;;;:::o;43850:419::-;44016:4;44054:2;44043:9;44039:18;44031:26;;44103:9;44097:4;44093:20;44089:1;44078:9;44074:17;44067:47;44131:131;44257:4;44131:131;:::i;:::-;44123:139;;43850:419;;;:::o;44275:191::-;44315:4;44335:20;44353:1;44335:20;:::i;:::-;44330:25;;44369:20;44387:1;44369:20;:::i;:::-;44364:25;;44408:1;44405;44402:8;44399:34;;;44413:18;;:::i;:::-;44399:34;44458:1;44455;44451:9;44443:17;;44275:191;;;;:::o;44472:831::-;44735:4;44773:3;44762:9;44758:19;44750:27;;44787:71;44855:1;44844:9;44840:17;44831:6;44787:71;:::i;:::-;44868:80;44944:2;44933:9;44929:18;44920:6;44868:80;:::i;:::-;44995:9;44989:4;44985:20;44980:2;44969:9;44965:18;44958:48;45023:108;45126:4;45117:6;45023:108;:::i;:::-;45015:116;;45141:72;45209:2;45198:9;45194:18;45185:6;45141:72;:::i;:::-;45223:73;45291:3;45280:9;45276:19;45267:6;45223:73;:::i;:::-;44472:831;;;;;;;;:::o;45309:225::-;45449:34;45445:1;45437:6;45433:14;45426:58;45518:8;45513:2;45505:6;45501:15;45494:33;45309:225;:::o;45540:366::-;45682:3;45703:67;45767:2;45762:3;45703:67;:::i;:::-;45696:74;;45779:93;45868:3;45779:93;:::i;:::-;45897:2;45892:3;45888:12;45881:19;;45540:366;;;:::o;45912:419::-;46078:4;46116:2;46105:9;46101:18;46093:26;;46165:9;46159:4;46155:20;46151:1;46140:9;46136:17;46129:47;46193:131;46319:4;46193:131;:::i;:::-;46185:139;;45912:419;;;:::o;46337:220::-;46477:34;46473:1;46465:6;46461:14;46454:58;46546:3;46541:2;46533:6;46529:15;46522:28;46337:220;:::o;46563:366::-;46705:3;46726:67;46790:2;46785:3;46726:67;:::i;:::-;46719:74;;46802:93;46891:3;46802:93;:::i;:::-;46920:2;46915:3;46911:12;46904:19;;46563:366;;;:::o;46935:419::-;47101:4;47139:2;47128:9;47124:18;47116:26;;47188:9;47182:4;47178:20;47174:1;47163:9;47159:17;47152:47;47216:131;47342:4;47216:131;:::i;:::-;47208:139;;46935:419;;;:::o
Swarm Source
ipfs://9677de72a610c2c1a5061c3b03eaadbac0e8fa848cae4e795e6963b6700629cc
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.